在Rails应用程序中模块化javascript代码

时间:2012-05-28 02:43:37

标签: ruby-on-rails commonjs

我正在尝试将我们的rails web应用程序移植到ember.js(我们目前在服务器端执行大部分工作渲染视图),我想知道如何实现javascript代码的完全模块化。到目前为止,我最喜欢的插件是sprockets-commonjs,它自动为所有名为.module.js的文件创建commonjs模块。这将解决我们的大多数问题,除了外部库,它仍然会在代码中声明全局变量。

我能想到的唯一解决方案是为每个库创建common.js模块。

例如:假设我希望能够将Ember.js导入为Common.js模块。然后我将创建一个名为vendor / modules / ember.module.js的文件,其中包含以下内容:

//= require ember

module.exports = Ember;

然后我会将ember_module(以及其余的模块包装器)导入应用程序并使用它们。

//= require_tree vendor/modules

var ember = require("vendor/modules/ember");

这个解决方案有点笨拙,但它会改善代码的模块化。有没有更好的方法来实现相同的结果?

1 个答案:

答案 0 :(得分:3)

ember.module.js中,尝试使用//= include ember而不是requirerequire指令只是将文件添加为依赖项; include指令实际上将就地包含文件内容。 (见https://github.com/sstephenson/sprockets#sprockets-directives)。

否则你的解决方案应该有效:)