问题标签 [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 投票
1 回答
1878 浏览

javascript - 如何使用 JSDoc3 注释 JS 模块模式类?

这就是我实际执行此操作的方式,但是在生成文档后私有方法和属性不可见。

我做错了什么吗?

顺便说一句,其他一切都很好。我第一次使用文档生成器,印象非常深刻。

0 投票
3 回答
1060 浏览

javascript - Javascript 模块模式和 jquery Ajax 等待问题

我编写了一个自定义 js 模块,它基本上发送消息并且需要等待响应才能继续:

我遇到的问题是强制sendMessage函数等到 ajax 完成并设置msgRecieved为 true。

但是,该函数似乎sendMessage命中该wait函数一次,然后继续。以下控制台输出显示了事件的顺序:

我感到困惑的是,该wait功能似乎在最后再次触发..

谁能给我一些关于让它工作的指示?

0 投票
3 回答
793 浏览

javascript - 如何让一些揭示模块代码仅在 DOM 准备好后运行?

我们使用显示模块模式将内容组织到“命名空间”中。一些初始化代码(用于 jQuery Validation 插件)只能在文档加载后调用。

$.validator.setDefaults位在 DOM 就绪包装器中时,它永远不会被调用,但当它在 IIFE 中时,它会被调用。

为什么?标记某些模块代码以在 DOM 准备好后运行的“最佳”方法是什么?

编辑:使示例代码更能说明问题

0 投票
1 回答
339 浏览

javascript - 第一次实现模块模式变量未定义

这是我的代码

我正在实现这个例子http://css-tricks.com/how-do-you-structure-javascript-the-module-pattern-edition/

但是每次当我在这一行输入我的输入字段时,我都会在警报中得到未定义

请告诉我我做错了什么我试图搜索但找不到任何有用的东西。

编辑:我在这里创建了一个小jsfiddle

谢谢

0 投票
0 回答
732 浏览

javascript - 自定义滑块的缩略图滚动值

在自定义图像轮播上弄脏了我的手。写了一些 jquery 让它工作,但遇到了一个问题。

单击“上一个”和“下一个”链接时出现问题:

  • 单击“下一步”时,如果到达最后一个可见项目,则缩略图容器 DIV 将滚动到负左。
  • 总滚动值取决于两个因素
  • 首先,如果剩余的缩略图超过 5 个,则 DIV 应滚动到 (itemWidth x 5)
  • 其次,如果剩余项目少于 5,则滚动值为 (itemWidth x remainingItems)

如果单击“上一个”和“下一个”按钮,如何计算单击时的滚动值?

供参考:http: //jsfiddle.net/ylokesh/8bHZq/2/

JavaScript 代码:

0 投票
0 回答
603 浏览

javascript - Javascript 模块模式单例和单元测试

我正在使用此处描述的标准 javascript 模块模式。我面临的问题是这种方法会创建一个无法实例化的单例。单元测试共享相同的状态,这基本上使它们无用。为每个模块编写一个拆卸函数似乎很乏味,我确定有更好的方法吗?

0 投票
3 回答
78 浏览

javascript - 为什么在声明子名称空间时不能使用 var?

为什么以下工作

但这不?

任何有关名称空间的变量减速的内部工作原理的见解将不胜感激。

0 投票
2 回答
1046 浏览

javascript - 掌握“OOP”JavaScript:具有继承的模块模式

我试图通过增加继承来掌握模块模式。我来自大学背景,我的后备箱中主要使用 Java,但我已经使用 Web 技术大约十年了。不过,我对 JavaScript 的了解只有一年左右......

无论如何,我正在尝试一个简单的继承 ( .prototype) 示例。从People对象中,您可以添加Gentleman',然后使用它们的.toString()方法列出它们。AGentleman是 a 的孩子Human。在我实现“抽象”之前一切顺利Human,但现在代码将无法运行。

请评论我的代码认为不好的地方。我想继续使用模块/原型方法,但我做错了什么?我也会听听this不同情况下的含义。即,People我可以_people直接使用私有,但在子模块中我必须使用this._name--why?

小提琴:http: //jsfiddle.net/5CmMd/5/

编辑:我已经更新了代码并稍微摆弄了一下。如果我得到这个工作,我想我理解了大部分的设计。我认为,这个示例也可以作为未来 OOP 程序员访问 JavaScript 领域的简单教程。

0 投票
2 回答
133 浏览

javascript - 模块/原型和多个实例

我正在尝试掌握“OOP”JavaScript 技术,今天我开始编写一个小型测试应用程序。基本上,它是一个游戏循环,每次更新坐标都会增加,以便 HTML 元素移动。

问题是我希望能够运行多个应用程序实例,因此我试图将实例数据存储在 中this,但是在我的构造函数和exec()方法中保存的内容在私有方法中不可用update()。似乎是什么官员,问题?

编辑:使用有效的解决方案更新代码!

0 投票
2 回答
164 浏览

javascript - 更好的 JavaScript 组织和执行 不显眼的方式 - 自执行匿名函数

我慢慢地对 JavaScript 有了更好的理解,但我一直坚持如何最好地解决这个特定的组织/执行场景。

我来自 C# 背景并且习惯于使用命名空间,所以我一直在阅读如何使用 JavaScript 实现这一点。我已经将已经开始成为一个大型 JavaScript 文件的内容拆分为更符合逻辑的部分。

对于页面特定的 JavaScript,我已决定每页一个文件,其中包含两个或多个页面共有的任何内容,例如可重用的实用程序函数,位于另一个命名空间和文件中。

目前这对我来说是有意义的,并且似乎是一个流行的选择,至少在开发过程中是这样。我将使用捆绑工具将这些不同的文件组合起来以部署到生产环境,这样任何使开发更合乎逻辑和更容易找到代码的东西就更好了。

由于我在处理大量自定义 JavaScript 方面缺乏经验,我在通用 JavaScript 文件中定义了一个函数,如下所示:

common.js

这显然远非理想,因为它特定于应用程序中的单个页面,但在每个页面请求上都被执行,如果不是完全愚蠢的话,这完全没有意义,而且效率极低。所以这导致我首先开始阅读命名空间。

经过一番阅读,我现在将其移至特定页面的文件并像这样重写它:

从 common.js 移动到 historyPage.js

我在jQuery Enterprise 页面上找到了这种模式。我还不会假装完全理解它,但它似乎是一种非常流行且最灵活的方式来组织和执行具有各种不同范围的 JavaScript,同时将事物排除在全局范围之外。

然而,我现在正在努力解决的是如何从执行的角度正确利用这种模式。我还试图将任何 JavaScript 排除在我的 HTML Razor 视图之外,并以一种不显眼的方式工作。

那么我现在如何historyPage.GetHistory只在它应该实际执行时调用该函数,即:只有当用户导航到网站上的历史页面并且需要函数的结果时?