0

我正在寻找一个骨干网/require.js 应用程序的样本。

我有以下代码:

define([
  'jquery',
  'underscore',
  'backbone',
  // Pull in the Collection module from above,
  'models/project/ProjectModel',
  'collections/projects/ProjectsCollection',
  'text!templates/projects/projectsListTemplate.html'

], function($, _, Backbone, ProjectModel, ProjectsCollection, projectsListTemplate){
  var ProjectListView = Backbone.View.extend({
    el: $("#projects-list"),

    render: function(){

      var data = {
        projects: this.collection.models,
        _: _ 
      };

      var compiledTemplate = _.template( projectsListTemplate, data );
      $("#projects-list").html( compiledTemplate ); 
    }
  });
  return ProjectListView;
});

有人可以解释一下下面代码的含义吗?

_: _ 
4

1 回答 1

2

简短的回答:他们在对象中分配一个_值。就像被分配一样。_dataprojectsthis.collection.models

更长的答案:通过这样做,您正在创建一个本地引用,_因此当程序执行时,它不必在范围树上查找到 find _。但是,这确实不是必需的,因为它很可能不会对性能产生任何明显的影响。

问题是还有一百万个更大的瓶颈,所以你很可能永远不会注意到差异。例如,您的示例使用require.js test.js按需加载外部文件的插件。但是,这意味着在您的应用程序可以使用该文本模板之前,它必须成功完成 GET 请求。这意味着应用程序可能必须等待 10 毫秒到 200 毫秒,然后才能对模板执行任何操作。_:_因此,仅凭这一点,任何通过使用获得的性能提升都会被吹走。

于 2013-07-10T07:21:20.633 回答