我应该如何考虑我的JavaScript应用程序名称空间
How should I think about my JavaScript application namespaces?
我正在构建一个应用程序,它有一个全局命名空间,像这样:
var myApp = {};
然后我有一堆不同的可重用的"模块"组成的模型,视图和控制器。
//Bar chart module code
org.example.chart.bar.module
org.example.chart.bar.model
org.example.chart.bar.view
org.example.chart.bar.controller
我也有一个大的数据源单例和一个数据管理器加载数据到数据源:
org.example.data.dataSource
org.example.data.dataManager //populates the dataSource with CSV data
最后翻译字符串和设置应该在整个应用程序中可用:
org.example.static.translations
org.example.static.settings
您将如何(重新)组织这一点,以便我可以轻松访问应用程序级别的单例(如dataSource, dataManager, translations等),并可以轻松地实例化在当前应用程序实例下的可重用模块?
例如,你会从一开始就为你的"类"和你的应用程序使用相同的命名空间吗?或者你可以这样引用:myApp。翻译= org.example.static.translations?)不,我们没有命名空间。我们编写模块化代码,并使用模块加载器。
模块加载器的示例将是require.js或browserify或seajs。
一个示例模块是这样的:
(function () {
var jQuery = require("jQuery");
var chart = require("chart");
...
define("moduleName", moduleObject);
})();
没有什么可以阻止您为类添加另一个名称。例如,
org.ds = org.example.data.dataSource;
则可以调用
org.ds.getDatasource();
代替
org.example.data.dataSource.getDatasource();
但是两个都可以。
EDIT:您还可以创建其他更简单的函数来调用它,将其从oo结构中取出
var dataSource = function () { return org.example.data.dataSource.getDatasource(); };
考虑使用RequireJS这样的东西来组织模块。
来自Addy Osmani的一些优秀资源:
http://addyosmani.com/largescalejavascript/http://addyosmani.com/blog/large-scale-jquery/http://addyosmani.com/resources/essentialjsdesignpatterns/book/相关文章:
- Canvas Html5绘图应用程序,移动画布会导致重大问题
- Emberjs应用程序加载在除Index之外的所有路由上
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- angular 1.5应用程序中的导航栏
- 在Web应用程序中使用Highcharts javascript
- angularjs+rails应用程序中未显示模板
- 使用acess代币登录Facebook,并通过网络应用程序离线发布
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- 科尔多瓦页面类应用程序中的多个谷歌地图
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- Angularjs-utils高亮过滤器在搜索时破坏应用程序
- 如何在模块基础应用程序中隐藏全局命名空间对象
- 使用html和js的移动应用程序的存储空间
- 我应该如何考虑我的JavaScript应用程序名称空间
- 构建CoffeesSript浏览器应用程序——命名空间和作用域问题
- ExtJS应用程序使用了多少JVM内存java堆空间
- 空白的空间在地理编码样本应用程序
- 一个Meteor.com托管的应用程序有多少数据库存储空间