问题标签 [module-pattern]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1905 浏览

javascript - JavaScript 模块模式/组织/子模块

  1. 我想知道以下模式之间有什么区别(优点/缺点)。
  2. 如何根据模块模式创建子模块?

我的目标是将我的js组织成多个延迟加载但具有一个命名空间的文件。

例如:

SO.global (global.js) SO.global.registration (registration.js) <- 加载

VS。

0 投票
1 回答
13554 浏览

javascript - 了解 JS 模块模式的工作原理

我正在尝试了解与 jQuery 一起使用的 js 模块模式。我已经对此进行了几次编辑,并将尝试为我的技能水平提供一个良好的实践(在 jquery 上几个月新鲜)。

这篇文章没有直接的问题。我更希望获得有关如何在大型网站中正确使用模块模式(连同 jquery)的反馈和意见。

更新:我添加了一堆示例,以了解所有编写方式的概述,并尝试涵盖任何陷阱..

试图了解正在发生的事情(随时提供更正或更好的解释):

这里创建了命名空间 Company.AppName。我在里面设置了 ($),这样我就可以使用 $ 而不会与任何其他可能使用 $ 的库发生冲突。

据我所知,方法和变量在这里返回到命名空间...})(); 通过在 () 中添加 jQuery,它会告诉它 $ 表示 jQuery。

初始化

我不确定这里的最佳做法是什么,但我会添加到目前为止我所知道的。

在 js 文件中初始化:

从文件初始化:

0 投票
2 回答
2252 浏览

javascript - 使用 javascript 模块模式时,如何从私有方法中调用公共方法?

我想从私有方法调用公共方法,但属性“this”指的是窗口对象。

请注意我正在尝试应用模块模式。您可以在jsfiddle.net找到一个工作代码示例

0 投票
3 回答
3280 浏览

javascript - 当您在 JavaScript 中声明两个具有相同名称和范围的变量时会发生什么?

如果我声明两个具有相同名称和范围的变量会发生什么?

我之所以这样问,是因为我在我的网站上动态加载小 portlet,每个 portlet 都有自己的带有 JavaScript 模块的脚本标记。问题是,用户可以复制 portlet,这意味着很可能会发生上述情况。

0 投票
3 回答
353 浏览

javascript - 在模块模式中访问 jQuery 对象

真正进入 javascript 并查看一些模式。我遇到的一个是模块模式。它似乎是一种很好的方式来考虑功能,所以我继续尝试用 jQuery 来实现它。不过,我遇到了障碍。考虑以下代码

上面的代码提醒了 div 的 html 内容,然后添加了一个类。这些都使用 jQuery 方法。问题是 .html() 方法可以正常工作,但是我无法添加该类。没有错误结果,也没有添加类。这里发生了什么?为什么类没有被添加到 div 中?

0 投票
1 回答
619 浏览

javascript - Javascript 模块模式和 Jquery 直播?

我正在尝试使用JavaScript 模块模式,但遇到了一个我不确定如何解决的问题。

所以我有 2 个脚本文件,因为我想分隔我的代码并使其更易于阅读。

所以我不确定如何确保 createSubmitFrmHandler 已定义并继续我正在做的事情。

编辑

我最终做了这样的事情

我唯一不确定的是,如果我一遍又一遍地调用这个函数,它会继续生成这个对象,还是会看起来并看到 live 已经绑定并且不会再进行绑定?

0 投票
1 回答
1163 浏览

javascript - 如何使 javascript 模块模式与 ajax 一起使用?

我正在尝试将一些 javascript/jquery 代码转换为能够处理 ajax 选项卡。

当页面加载时,我的所有脚本都加载了,我使用 jquery live 和 livequery 插件来帮助绑定。

每次都在局部视图(asp.net mvc 3)中,单击时转到控制器操作并呈现局部视图并将其粘贴在选项卡中。

所以 live 和 livequery 解决了除了这个问题之外的大部分问题。我正在使用 jquery datatables.net 插件,一旦它呈现,我将它存储在一个变量中并使用它。

问题是因为我使用的是模块模式,所以代码在表格渲染之前很久就运行了。所以存储对象的变量是“未定义的”。我试图用 jquery livequery 语句将它包装起来,这使得表运行但变量仍然是“未定义的”。

我的猜测是,它不像 C# 那样会更新参考。所以我认为它在我的全局变量中(模块模式的变量)并且永远不会更新。

我经常使用 oDataTable。正如你所看到的,如果我会调用 myTable.Delete 我在那里使用它 oDataTable 但它将是“未定义”并崩溃。

我有另一个启动整个序列的模块类(因此使上面的代码运行)

0 投票
1 回答
309 浏览

javascript - 从 JavaScript 揭示模块模式中的另一个方法返回对方法的多个调用

我正在为当前项目尝试揭示模块模式。

我在几个方法的顶部有init方法,在这些方法中我设置了变量和调用方法,以便模块在它们被适当的事件处理程序调用时正确运行。

我有一个目前看起来像这样的init方法:

所以这会返回对 appendTip 方法的调用。

在另一个模块中,设置如下所示:

所以现在有两个单独的方法调用。这段代码工作正常,但想知道它是否可以更整洁?

我如何退回这两个?归还他们是打电话给他们的最佳方式吗?

谢谢。

0 投票
2 回答
1656 浏览

javascript - 如何将我的 Module-Singleton JavaScript 转换为支持实例?

我一直在编写一个应用程序,并且在将不同的功能部分分解为所谓的“模块”模式中取得了很多成功,在这种模式中,您拥有一个具有公共和私有成员的自执行单例。

我现在遇到了一个案例,我有几个模块,我希望能够创建多个实例。

我知道这种模式是基于单例的,但我想知道是否有一种轻松的方式来修改这种模式以支持创建它们的实例?

0 投票
2 回答
2395 浏览

javascript - 如何专业地构建我的模块模式 Javascript 项目?

我读过关于揭示模块模式的文章,我很喜欢它。但是对于“主对象”具有数十个子对象甚至数百个功能的大型项目呢?我不想成为将所有代码放在一个匿名函数闭包中的人。

那么大型模块模式项目是如何管理的呢?