如何以简单的方式将函数转换为 RequireJS 中的模块
How can I convert a function to a module in RequireJS in a simplistic way?
我一直在阅读文档,但我似乎无法以简单的方式做到这一点。我想我太混淆了node.js
使用相同的单词,例如 require
、exports
、module
等
想象一个这样的主脚本。(想象一下功能很复杂(
require(['jquery', 'domReady!'], function($) {
$("#staticButton").click(function() {
showMessage('What does this button do?');
});
function showMessage(message) {
alert(message);
}
});
现在想象一下,我想在多个脚本中使用showMessage()
。我该怎么做呢?
Node.js
我会将showMessage()
附加到showMessage.js
内部的exports.showMessage
,并在我想使用它的任何地方做这样的事情:
require(['jquery', 'domReady!'], function($) {
var showMessage = require('showMessage'); // Easy huh?
$("#staticButton").click(function() {
showMessage('What does this button do?');
});
});
但是有了RequireJS
,这给了我首先需要加载它的错误。我是否需要require
或define
才能使用上述语法?我真的需要将其添加到主脚本require
数组中吗?我不喜欢这样。如果您有 20 个功能怎么办?
require(['jquery', 'domReady!', func01, func02, (...) func20], function($, empty, func01, func02, (...) func20) {}
那是纯粹的句法盐。我更喜欢Node.js
糖的方式:
var func01 = require(func01),
func02 = require(func02),
(...)
func20 = require(func20);
我把两者混淆得太混为一谈了。有人可以解释一下我如何简单地将函数放在外部文件中并尽可能简单地使用它们吗?
我假设模块转换函数需要看起来像这样:
define(function(require, exports, module) {
return function(message) {
alert(message);
}
});
..但如果可以更容易地做到这一点,我很想听听。
你应该尝试从模块的角度来思考,在这种情况下,函数是更底层的东西。您定义模块,要求它们稍后将其公共"接口"作为具有某些属性的对象返回,这些属性可能恰好是函数。
我发现有用的是"静态实用程序模块"模式:
实用工具.js
define(function () {
return {
showMessage: function (text) {
alert(text);
},
foo: function () {
alert('bar');
}
}
})
或简化的等效项:(-> 文档(
实用工具.js
define({
showMessage: function (text) {
alert(text);
},
foo: function () {
alert('bar');
}
});
然后,在您的主.js中:
define(['utils'], function (Utils) {
Utils.showMessage('!');
})
如果你最终有太多的依赖项(顺便说一下,这通常表明你的模块做得太多(,你可以改用糖语法:
define(function (require) {
var Utils = require('utils');
Utils.showMessage('!');
})
相关文章:
- 如何在JavaScript中将字符串转换为函数引用
- 如何在Javascript中将JSon对象转换为数组
- 使用JS将数组转换为json对象
- 如何使用json将对象列表从java转换为javascript
- 偶尔结结巴巴地说“;堆叠的”;translate()上的转换(v4.0.0-alpha40)
- 为什么在单独的函数中应用时转换会闪烁/断断续续(D3)
- 在Javascript中转换对象数组
- 将数字转换为一定数量的硬币
- 将纯文本URL转换为可单击链接
- 当图像转换为本地存储的DataURL时,EXIF被删除
- 如何使用js将SNAPSHOT内部版本号转换为3位数的整数
- 如何将TypeScript对象转换为普通对象
- 检测个位数整数时正在转换毫秒
- 从javascript到jquery的转换
- 因果报应;t转换为requirejs后运行测试
- 正在将代码从RequireJS转换为Webpack
- 将现有的 JavaScript 文件转换为 requireJS
- 如何以简单的方式将函数转换为 RequireJS 中的模块
- 在执行之前将源代码转换应用于requirejs模块
- 如何将requirejs脚本转换为普通javascript