问题标签 [revealing-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.
jquery - 在全局范围之外设置 jQuery 侦听器
自从我对 jQuery(或一般的 javascript)做了很多工作以来,已经有一段时间了。我试图让我们的应用程序从拥有全局范围内的所有方法,到一切都在它自己的命名空间中的地步。
我采用的方法是使用显示模块模式和对象文字模式的混合。
我在每个单独的页面上使用对象文字模式,并且我使用它来简单地设置来自服务器的变量(ASP.NET MVC Razor)
从这里,我有一个完成所有繁重工作的外部文件。在这种特殊情况下,我有一个 Kendo ContextMenu,我需要它来从嵌套命名空间中初始化它的侦听器 (jQuery)。
如果我删除所有命名空间位,此代码将按预期工作,但是,当我使用显示模块模式时,侦听器不会触发“点击”事件。
有人可以指出我缺少的那块吗?
jquery - 无法从 .fail() 回调中返回对象?
我试图通过 _fail 回调返回一个对象(是的,这意味着运行失败回调),但 failSeries 在控制台中返回为未定义。有任何想法吗?
然后,我以以下方式使用我的模块来尝试查看成功或失败回调返回的对象:
});
javascript - 从 JS 模块返回对象时出现“未定义”
我已经定义了一个全局变量,然后将其设置为通过我的一个渲染图表的模块提供的方法。该模块应返回一个图表,从而为变量“alChart”分配一个图表对象。还值得一提的是,使用此代码可以完美呈现图表。
图表渲染模块:
。准备好():
javascript - JS 控制台显示错误结果
修改变量并显示它时,Firefox 出现了一个奇怪的行为(此处为现场演示):
为什么会这样?(为什么在修改为之前current.Position
给出?)17
17
更一般地说,如何在显示模块模式中获取/设置变量?
火狐截图:
javascript - 如何创建固定结构的对象?
我的显示模块中有以下代码,但我不确定如何声明/定义imageListItem
,这严格来说是一个 DTO,并不需要隐藏任何信息。我是否正确定义了这个对象?
有了imageListItem
,我想声明一个对象结构供以后使用。该声明在逻辑上不应依赖于该对象以后将如何使用。也就是说,我不想发现自己imageListItem
意外地动态分配新属性或从中删除属性。任何对属性的赋值都应该严格地只对已经在对象上声明的属性进行。
Object.freeze()
几乎可以通过防止添加或删除属性来实现这一点,但它也可以防止更改属性。
例如我想要这个:
我不想要这个:
你看?我想freeze
防止quaxxor
被添加到obj
,但我不希望它阻止我更改 的值foo
。
javascript - removeEventListener 在显示模块结构时出现问题
我对我遇到的这个问题感到非常沮丧。我整理了一个单击/拖动代码,当您单击某个 DOM 元素时,它会在鼠标移动时拖动指定的 DOM 元素,然后在鼠标向上释放元素。
我遇到的问题是我试图删除鼠标上的事件侦听器,因此 DOM 元素停止在鼠标事件上移动。但似乎没有什么可以删除该事件。
这是代码。
更新代码
javascript - javascript揭示服务器上忽略的模块模式
我一直在寻找为什么我的 javascript 代码完全在我的虚拟主机上的答案。我有现有的 javascript 函数,这些函数在我尝试使用 javascript 中的显示模块模式修改它们之前可以正常工作,因为从我收集的内容来看,这是减少污染全局命名空间的好习惯。在这个范围之外没有函数调用,所以我没有使用 return 来指向函数。从 Visual Studio 进行测试时,它在不同的浏览器中运行良好。
Godaddy 服务器中是否有我需要配置的东西?我试图打电话给他们寻求支持,但没有帮助。下面是我的代码示例。我实际上在这个范围内有更多的功能,但对这个问题保持简短。提前致谢。
javascript - 我应该如何在 JS 中使用显示模块模式、传递引用并避免加载顺序问题?
我一直在用 Javascript 中的(我所理解的)模块模式(或显示模块模式)进行实验。目前我的主要目标是代码组织和清理项目中的全局空间,但我确信还有许多其他好处。
我一直遵循的基本模式看起来大多是这样的:
通过隐藏 obj 的内部方法和属性,我可以看到这样做的主要好处是更简洁的代码和更好的结构。还有其他我没有看到的显而易见的好处吗?我真的很想知道什么时候什么时候不使用这种模式。
问题 1:所以我喜欢的一件事是能够将 w 和 $ 作为对 window 和 jQuery 的速记引用传递,但是当我尝试向其中添加另一个库时,它似乎不起作用(特别是速度.js)。
编辑:因为我已经包含了 jQuery,velocity 将其自身附加到全局 jQuery obj,导入是针对速度不是的全局变量,因此我不能以相同的方式导入它。
问题 2:其次,我在某处读到,无论加载顺序如何,都可以使这种模式工作,这是真的吗?如果是,应该如何修改?
注意:至关重要的是,我试图理解这种模式以及它的可能性,而不是诸如实现 require 或 borwserify 之类的替代。
javascript - 从 Revealing Module Pattern 继承的两种方式有什么问题?
我正在尝试将 RMP 用于我的大多数模块样式。但是,我想通过以下几个问题完全理解它。
Object.create() 似乎适用于 RMP 模块继承。我错过了什么吗?
/li>定义原型并返回 Obj 也可以工作我理解错了吗?似乎原型继承适用于 RMP。