编写一个在NodeJS和Requirejs中都能工作的模块 [英] Write a module that works both in nodejs and requirejs
本文介绍了编写一个在NodeJS和Requirejs中都能工作的模块的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我写了一个小解析器,目前在Node app中工作,但我想知道是否有方法可以制作一个模块,既可以在NodeJS应用中工作,也可以在使用Requirejs的客户端应用中工作?
path/to/lib/index.js
function someRandom(strings) {
// we are doing something here
return strings
}
exports.someRandom = someRandom;
现在我在客户端收到这个
Uncaught ReferenceError: exports is not defined
我知道我可以使用节点requirejs
,然后将结构更改为使用define
,但是有没有其他方法而不添加节点requirejs
?
这是我的js/main.js
文件
require(["path/to/lib/index"], function(something) {
// will do something here
});
推荐答案
我更喜欢的方式是用AMD语法编写我的所有模块(使用define
),然后使用amd-loader
将它们加载到Node中。请注意,此解决方案未使用RequireJS,尽管使用了AMD语法。
r.js
包装Node模块。例如,如果您将您的节点模块树放在in
中,您可以这样做:
$ r.js -convert in out
这将在out
中创建一个文件树,这些文件与in
中的文件相对应,但用define
调用包装。然后,您可以使用RequireJS将它们加载到浏览器中。这是有局限性的。有些是显而易见的,比如不能使用依赖于Node运行时的Node模块(如fs
、child_process
等)。有些更加微妙,比如您不能使用require(foo)
,其中foo
是一个变量(RequireJS在那里只处理字符串文字)。有关详细信息,请参阅documentation。
这篇关于编写一个在NodeJS和Requirejs中都能工作的模块的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文