在几乎每个Backbone / Require.js项目中,您都会看到与此类似的模型和视图:
define([
'jquery',
'underscore',
'backbone'
], function ($, _, Backbone) {
//Some code goes here, perhaps a Backbone model or view
});
但是,假设您正确设置了Require.js填充程序(使用Backbone填充程序包括deps: ["underscore", "jquery"]
之类的东西),您只需要定义Backbone - 将Backbone定义为依赖项隐式地将jQuery和Underscore定义为依赖项还有!因此这也是正确的:
define([
'backbone'
], function (Backbone) {
//Some code goes here, perhaps a Backbone model or view
});
就个人而言,我会在一个明确使用它们的函数的文件中定义jQuery或Underscore - 但是像一个简单的简洁的Backbone模型文件,它们看起来像是残酷的。
为什么我经常看到多余的jQuery和Underscore定义的模式?为什么这成为一个毫无疑问的最佳实践?
答案 0 :(得分:3)
当你没有明确地将它们作为模块中的变量需要时,将Underscore和jQuery声明为依赖项不会起任何作用(即,这不是最佳实践)。正如你在问题中所说的那样
就个人而言,我会在一个文件中定义jQuery或Underscore 明确地使用了他们的功能 - 但是在简单的事情中 简洁的Backbone模型文件,它们看起来像是残酷的。
此外,你甚至可以在某些情况下摆脱它们:
this.$
访问本地DOM,this.$el
获取元素Backbone.$
存储对jQuery的引用答案 1 :(得分:1)
这只是因为避免使用全局变量。当然,您可以跳过定义jQuery和下划线,但在这种情况下$
和_
将引用全局变量。如果您创建自己的应用程序并使用单个版本的jQuery - 它不会出现案例问题,但如果您的应用程序已经包含很少的不同库版本 - 最好遵循您不喜欢的练习:)