Javascript除了导出符号,我还应该使用哪些其他技巧
Google闭包库提供了导出符号选项,可以通过窗口对象访问构造函数 例如:导出任务将允许执行Javascript除了导出符号,我还应该使用哪些其他技巧,javascript,architecture,backbone.js,underscore.js,Javascript,Architecture,Backbone.js,Underscore.js,Google闭包库提供了导出符号选项,可以通过窗口对象访问构造函数 例如:导出任务将允许执行窗口。任务 但是这完全不是谷歌关闭库。我正在使用Backbone.js构建一个任务应用程序。我的视图、模型、路由器和文件被分割成许多文件,我按照上面的过程将实例、源分配给窗口对象,以便一个人可以访问另一个 如何不通过窗口访问单个应用程序的模型、视图和路由器?你用了哪些技巧和技巧使它们成为沙盒 无论您使用什么-全局范围(浏览器中称为“窗口”)或其他对象来保存名称空间,都会有冲突的机会。使用其他工具只会使您
窗口。任务
但是这完全不是谷歌关闭库。我正在使用Backbone.js构建一个任务应用程序。我的视图、模型、路由器和文件被分割成许多文件,我按照上面的过程将实例、源分配给窗口对象,以便一个人可以访问另一个
- 如何不通过窗口访问单个应用程序的模型、视图和路由器?你用了哪些技巧和技巧使它们成为沙盒
无论您使用什么-全局范围(浏览器中称为“窗口”)或其他对象来保存名称空间,都会有冲突的机会。使用其他工具只会使您不必在意“窗口”已有的默认属性
任何模块的最佳实践都是只向外部视图(通过窗口或其他方式)显示单个对象,并将其他所有对象作为其属性,因为这将冲突的可能性降至绝对最小。无论您使用什么-全局范围(浏览器中的“窗口”)或其他对象来保存名称空间,总会有碰撞的机会。使用其他工具只会使您不必在意“窗口”已有的默认属性
任何模块的最佳实践都是仅将单个对象暴露在外部视图中(通过窗口或其他方式),并将其他所有对象作为其属性,因为这将碰撞的可能性降至绝对最小。您几乎总是必须在窗口中至少暴露一个对象
但是,您可以使用名称空间来提供帮助
// app.js
var App = App || {};
App.Views = App.Views || {};
App.Models = App.Models || {};
App.Views.HomeView = Backbone.View.extend({});
App.Model.User = Backbone.Model.extend({});
唯一的情况是,如果您使用的是requireJS,那么您不一定会这样做
// app.js
define(['views/home'], function (home) {
var home = new home({
el: '#home'
});
});
// views/home.js
define(['backbone'], function (Backbone) {
var home = Backbone.View.extend({});
return home;
});
尽管如此,我想如果你真的想,你可以在一个自动执行的函数中做任何事情
(function ($, Backbone) {
// Do your stuff here instead?.
// Just keep in mind, nothing you do in here will be available outside.
var home = Backbone.View.extend({});
new home(); // Works...
}(jQuery, Backbone);
new home(); // FAIL!
唯一的问题是,在函数内部执行的任何操作在函数外部都不可用
如果您对任何实现有任何疑问,请告诉我。您几乎总是需要在窗口中至少显示一个内容
但是,您可以使用名称空间来提供帮助
// app.js
var App = App || {};
App.Views = App.Views || {};
App.Models = App.Models || {};
App.Views.HomeView = Backbone.View.extend({});
App.Model.User = Backbone.Model.extend({});
唯一的情况是,如果您使用的是requireJS,那么您不一定会这样做
// app.js
define(['views/home'], function (home) {
var home = new home({
el: '#home'
});
});
// views/home.js
define(['backbone'], function (Backbone) {
var home = Backbone.View.extend({});
return home;
});
尽管如此,我想如果你真的想,你可以在一个自动执行的函数中做任何事情
(function ($, Backbone) {
// Do your stuff here instead?.
// Just keep in mind, nothing you do in here will be available outside.
var home = Backbone.View.extend({});
new home(); // Works...
}(jQuery, Backbone);
new home(); // FAIL!
唯一的问题是,在函数内部执行的任何操作在函数外部都不可用
如果您对任何实现有任何疑问,请告诉我