多次使用RequireJS模块不会运行
Using a RequireJS module more than once does not run
运行require(['pages/home'])
会运行一次,但如果我再次使用require(['pages/home'])
,它将不会运行
模块"pages/home"是名为"pages"的目录中的一个名为"home.js"的文件。
main.js
require(['pages/home']);
pages/home.js
define('pages/home', function() {
console.log('running pages/home module');
});
RequireJS模块是singleton。它只加载一次模块。如果一个模块已经加载,那么如果再次加载它,则会得到与最初加载的模块相同的引用。传递给define
的工厂函数不会再次运行。
所以你所看到的正是人们所期望的。
模块中的静态代码不应该被评估多次,就像通过普通<script>
标记加载的脚本在页面加载期间不会运行多次一样。
想象一下,如果一个模块包含以下代码:
define('my-module', function () {
var foo = foo || 0;
var bar = ++foo;
});
您应该期望bar
和foo
都是=== 1
,但如果模块重复运行并且存在全局foo
,则情况可能并非如此。诚然,这是一个非常人为的例子,但重复评估模块可能会导致严重的问题。
使其返回一个函数/对象,该函数/对象可以在您需要后执行。
define('pages/home', function() {
return function(){
console.log('running pages/home module');
};
});
require(['pages/home'], function(resultFunc){
window.YourFunc = resultFunc;
});
现在,您可以随时执行您的函数
相关文章:
- module.js在运行iron节点时找不到模块
- 是否可以从javascript文件中将量角器作为模块运行
- 编写在浏览器和node.js中运行的模块化ECMAScript
- 如何在节点模块中从命令行运行函数
- 如何测试运行 node-fluent-ffmpeg(异步模块)的自定义模块
- 多次使用RequireJS模块不会运行
- 如何防止模块的运行块在测试期间被执行
- 根据当前页面加载和运行Javascript模块
- 使用谷歌地图模块依赖性运行Karma测试
- "npm运行构建“;模块解析错误”;您可能需要一个适当的加载程序来处理此文件类型&”;
- Electron和Typescript:如何在运行时正确处理模块
- 在 ES6 中同步加载其名称在运行时确定的模块
- 可以在模块中运行.导出访问模块中的全局变量
- Nodejs:在任意模块中运行函数
- 节点.js并在运行时/在运行时生成模块
- 如何在 YUI 模块中运行代码
- AngularJS - Grunt:是否存在一种解决方案来构建仅包含所需模块的正在运行的应用程序
- JSDOC 文档在模块内运行
- 如何在 NodeJS 上运行模块
- 为什么我的类在运行时未定义.Javascript 模块模式