Javascript 我应该使用什么其他技巧来代替导出符号
Javascript What other tricks should i employ instead of exporting symbols
Google Closure 库提供了导出符号选项,以通过窗口对象提供对构造函数的访问。
例如:导出任务将允许执行window.task
但这与谷歌关闭库相去甚远。我正在使用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!
唯一的问题是您在函数内部执行的任何操作在函数外部都不可用。
如果您对任何实现有任何疑问,请告诉我。
无论您使用全局范围(在浏览器中也称为"窗口")或其他对象来保存您的命名空间,总会有发生冲突的机会。使用其他内容只会让您不必担心默认属性窗口已经具有的内容。
任何模块的最佳实践是仅向外部视图(通过窗口或其他方式)公开单个对象,并将其他所有内容作为其属性,因为这会将冲突的可能性降低到绝对最小。
相关文章:
- 我应该如何从xml文件构建一个javascript页面
- 我应该使用Ng提交还是点击表格
- 在Redux中,我应该在哪里编写复杂的异步流
- 我应该如何检查主干.主干.模型更改时查看
- 我应该先学习Angularjs还是Laravel
- 是否有任何可能的原因使我应该指定类型=“”;按钮“;用于我的按钮元素
- 在ES6 Promise中,我应该在解决/拒绝之前使用return吗
- 我应该将MVC视图特定的javascript文件放在哪个文件夹中
- 我应该始终删除EventListener吗
- 我应该如何衡量JS的单元测试覆盖率?我可以'我对jscoverage不满意
- 当一些事情可以通过JS或CSS完成时,我应该选择哪种方式
- 我应该如何将响应数据保存在对象(json)中以获得更好的操作和性能
- 我应该如何声明我的自调用函数
- 我应该/如何清除mousemove JQuery事件侦听器
- 我应该如何在 UL 内触发 IMG 标签的点击
- 我应该返回一个类似console.log()的方法调用吗
- 我应该用K&编写javascript时的R样式
- 我应该如何应用if-else条件来向具有不同用户角色的人显示不同的菜单
- 我应该怎么做才能将这个数组从随机更改为在页面刷新时按顺序显示
- Javascript 我应该使用什么其他技巧来代替导出符号