使用链轮:
//= require
application.js中的 ...似乎在我的HTML头部添加了<script src=...>
标记。但是,使用browserify-rails
:
window.mymodule = require('mymodule'); // mymodule is a dependency in package.json
我没有看到<script>
的{{1}}标记。但是,我能够使用mymodule
中定义的代码。什么是浏览器在这里做什么?
答案 0 :(得分:2)
简而言之,Browserify将每个模块包装在一个函数内部,为模块提供了自己的范围。这可以使您不会将未导出的内容保存到模块中。这些功能中的每一个都存储在地图中,以便稍后在require
上查找。
这是一篇非常好的文章,从较高的层面解释了它是如何运作的:http://benclinkinbeard.com/posts/how-browserify-works/
Sprockets只包含全局范围中清单中的所有内容。在开发中,包含每个脚本的文件。在生产中,脚本都是连接和缩小的,但它们都是全局的。