首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >模块模式-如何将一个模块的代码拆分为不同的js文件?

模块模式-如何将一个模块的代码拆分为不同的js文件?
EN

Stack Overflow用户
提问于 2013-12-01 11:25:43
回答 4查看 21.3K关注 0票数 12

对于模块模式,我正在执行如下操作:

代码语言:javascript
运行
复制
(function(namespace) {
    // tons of code
    // blabla
})(window.myGlobalNamespace);

我该如何划分密码?我可以想出几种方法,比如使用名称空间的层次结构,或者通过window.myGlobalNamespace.additionalFunc = function () {//blabla}扩展外部对象。其他的方法是什么?优点和缺点是什么?哪一个被认为是更好的练习?

这两个答案都暗示着RequireJS。请您解释一下RequireJS如何解决这些问题:

first.js:

代码语言:javascript
运行
复制
(function(context) {
    var parentPrivate = 'parentPrivate';
})(window.myGlobalNamespace);

second.js:

代码语言:javascript
运行
复制
(function(context) {
    this.childFunction = console.log('trying to access parent private field: ' + parentPriavte);
}(window.myGlobalNamespace.subNamspace);

main.js:

代码语言:javascript
运行
复制
window.myGlobalNamespace.subNamspace.childFunction(); // doesn't work

人们也能做到

代码语言:javascript
运行
复制
window.myGlobalNamespace.subNamspace.childFunction = function() {alert("a new function");}

来改变我的代码的行为!

在这里,有两个问题:

  1. 我们不能有一个可供孩子访问的字段,但不能被外部公众访问(即受保护的)。有什么办法做到这一点吗?
  2. 如果不是,这意味着如果我们wanteparentPrivate是可访问的,我们需要公开它。然后用户将能够修改它!

更重要的是,所有的公共职能都可以改变和取代。我不希望这种事发生。

我不明白RequireJS是如何解决这些问题的。有人能说点什么吗?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20311604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档