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