6

我正在研究一个用户脚本——特别是这个用户脚本——它被设计为将功能封装在模块中。为了能够进行一些自动化测试,我想将模块拆分为它们自己的文件,并使用 node.js 的模块导出和要求函数组合成一个文件,以便在 Greasemonkey 或简单的浏览器扩展中使用。

我的第一个想法是将模块复制到他们自己的文件中

模块.js

var exportedModule = (function (){  
    var Module = {  
        // public functions and members  
    };  

    //private functions and members  

    return Module;  
}());  

module.exports = exports = exportedModule;  

然后有一个需要这些模块中的每一个的中央文件,也许用Browserify之类的东西编译它们。

脚本.js

var importedModule = require(./module);

importedModule.init();

这可能吗?

4

2 回答 2

3

在我看来,您最好使用Requirejs,它使用 AMD 风格的模块并且本质上对浏览器更友好。Node commonjs 风格的模块是同步的,不太适合浏览器模型。

当然,使用 requirejs 会稍微改变你的脚本。

于 2013-02-25T21:31:23.360 回答
3

这是可能的,Browserify 让它变得简单:

browserify src/my.user.js -o dist/my.user.js

源文件中的元数据可能会被移动,但它仍然被正确解析(至少由 Greasemonkey 解析)。

有关编译各种资产(包括 CSS 和图像)的更复杂示例,请参见此处

于 2015-05-21T21:45:43.220 回答