下划线:'_:_'的含义

时间:2013-07-09 09:58:15

标签: 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/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;
});

有人能解释一下代码的含义吗?

_: _ 

1 个答案:

答案 0 :(得分:2)

简答:他们在_对象中为_分配data值。就像projects被分配this.collection.models一样。

更长的回答:通过执行此操作,您将创建对_的本地引用,因此在执行程序时,无需查看范围树,即可查找_。但是,这确实不需要,因为它很可能不会对性能产生任何明显的影响。

事情是还有一百万个其他更大的瓶颈,所以你很可能永远不会注意到差异。例如,您的示例使用require.js test.js插件,该插件可根据需要加载外部文件。但是,这意味着在您的应用程序可以使用该文本模板之前,它必须成功完成GET请求。这意味着应用程序可能必须等待10毫秒到200毫秒,然后才能对模板执行任何操作。因此,仅使用_:_使用{{1}}所带来的任何性能提升都会被淹没。