【发布时间】:2011-11-08 09:43:07
【问题描述】:
我正在构建一个具有单个全局命名空间的应用,如下所示:
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、翻译等),并且可以轻松地实例化在当前应用程序范围内的可重用模块实例?
(例如,您是否会从一开始就为您的“类”和您的应用程序使用相同的命名空间?或者您可能会像这样引用:myApp.translations = org.example.static.translations?)
【问题讨论】:
-
唷,I 会迫使你停止思考 Java,而开始思考 JavaScript。我觉得这太夸张了。
-
哈哈 :) 好的,那我从哪里开始呢?我应该把我所有的类都放在同一个命名空间下吗?我有点想拥有像 myApp.translations 这样的简单端点,但同时能够轻松实例化模块 myApp.registeredModules["bar"] = new org.example.chart.bar.module ... 如何找到正确的平衡?
-
您应该看一下用于在模块中构建 javascript 和管理依赖项的模块模式:adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth
标签: javascript namespaces code-organization