HelloJS你好我可以像这样设置一个基本路径:base : './app/'
所以当我在./app/foo/bar/
时,我有一个脚本,我使用require('foo');
RequireJS然后搜索./app/foo.js
而不是node_module
文件夹或./app/foo/bar/foo.js
当你有一种结构时,这会让你作为开发人员更清楚地看到依赖关系,而不是../../foo.js
{1}}。我可以拥有./app/foo.js
和./app/foo/foo.js
以及./app/foo/bar/foo.js
这样会更加清晰:
require('foo');
require('foo/foo');
require('foo/bar/foo');
而不是:
require('../../foo');
require('../foo');
require('./foo');
现在你可以说为什么不改变名字而不是foo无处不在,让我们说我们不能出于任何原因......
我在针对RequireJS的node的require方法中看到的另一个缺少功能是设置路径映射的能力,如果我在RequireJS中有一个名为./app/super-sized-directory-name/
的目录,我可以简单地执行'big-dir' : 'super-sized-directory-name'
然后我可以只需将require('./app/big-dir/foo')
与Node.js的require方法一起使用,据我所知这是不可能的......
答案 0 :(得分:2)
--alias, -a Register an alias with a colon separator: "to:from"
Example: --alias 'jquery:jquery-browserify'
您可以使用browserify注册别名,以便覆盖您的重命名。
至于你扎根的绝对路径,那是不可能完成的。如上所述modul8
有一个命名空间机制来解决这个问题。
我建议你在freenode的#stackvm中使用SubStack并直接问他。
答案 1 :(得分:0)
它可能会或可能不会帮助您,但我相信Dojo Frameworks AMD Loader与RequireJS API兼容,并且假设您使用新的微内核不会污染全局命名空间。
我认为现在全局命名空间中只有require()
和define()
。
无论如何,他们处理这个问题的方法是做一些事情:
require(["dojo/node!util"], function(util){
// Module available as util
});
文档位于http://dojotoolkit.org/reference-guide/1.8/dojo/node.html
答案 2 :(得分:0)
使用uRequire在nodejs require
和AMD define
模块之间提供“桥梁”,而无需重新发明轮子(它建立在两个标准之上)。它基本上将模块从AMD或commonJS格式转换为另一种格式或UMD,它们在nodejs和amp;浏览器。
它还使用flexible path conventions翻译依赖关系路径,因此您可以拥有'../../foo'
或'bar/foo'
,具体取决于您所处的位置更有意义。
您的AMD或UMD模块是在浏览器上异步加载的(使用AMD / requireJs或其他AMD加载程序),在节点上也会模拟异步require(['dep1', 'dep2'], function(dep1,dep2){...})
。