链轮之间的区别// = require和browserify-rails require()?

时间:2015-10-29 13:11:34

标签: javascript ruby-on-rails node.js browserify browserify-rails

使用链轮:

//= require 
application.js中的

...似乎在我的HTML头部添加了<script src=...>标记。但是,使用browserify-rails

window.mymodule = require('mymodule'); // mymodule is a dependency in package.json 

我没有看到<script>的{​​{1}}标记。但是,我能够使用mymodule中定义的代码。什么是浏览器在这里做什么?

1 个答案:

答案 0 :(得分:2)

简而言之,Browserify将每个模块包装在一个函数内部,为模块提供了自己的范围。这可以使您不会将未导出的内容保存到模块中。这些功能中的每一个都存储在地图中,以便稍后在require上查找。

这是一篇非常好的文章,从较高的层面解释了它是如何运作的:http://benclinkinbeard.com/posts/how-browserify-works/

Sprockets只包含全局范围中清单中的所有内容。在开发中,包含每个脚本的文件。在生产中,脚本都是连接和缩小的,但它们都是全局的。