Backbone.js 下划线:';的含义:_';

Backbone.js 下划线:';的含义:_';,backbone.js,requirejs,underscore.js,Backbone.js,Requirejs,Underscore.js,我正在寻找主干/require.js应用程序的示例 我有以下代码: define([ 'jquery', 'underscore', 'backbone', // Pull in the Collection module from above, 'models/project/ProjectModel', 'collections/projects/ProjectsCollection', 'text!templates/projects/projectsListT

我正在寻找主干/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;
});
有人能给我解释一下下面代码的含义吗

_: _ 

简短回答:他们在
数据
对象中为
\ucode>赋值。就像
projects
被分配
this.collection.models

更详细的回答:通过这样做,您创建了一个对
的本地引用,因此当程序执行时,它不必在作用域树上查找
。然而,这实际上并不需要,因为它很可能不会对性能产生任何明显的影响


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

这是对传递给模板参数的下划线对象的引用。基本上,男人这样做是为了表现,有时是为了解决命名冲突。这与这个问题非常相似:假设您传递的是uu或$,而不是窗口。对我来说,这是一个微观优化,你可能永远不会看到速度提升。