我知道如果浏览器要渲染多个有标识符的JS文件,全局作用域会被这些标识符污染。我也知道避免这种情况的方法之一是使用模块,它们(在我看来)只是具有上述标识符成员的对象,从而模仿了C++命名空间。我还在学习Node.js,它有一个内置的模块系统可以简化这个任务,所以我的问题是:如何在发送给浏览器进行渲染的JS文件中使用模块?
谢谢。
谢谢。
browserify
和 WebPack
就是你要找的(我个人更喜欢 browserify)。看看 这个答案,它解释了很多你的疑虑。Node.JS
中,你可以使用 module.exports
关键字导出一个模块,但你不能仅仅通过在 <script>
标签中引用它们来在浏览器中导入这些模块。那是因为浏览器不理解模块系统,并且所有东西都在全局的 window
对象上下文中工作,所以 module.exports
简单地变成了 window.module.exports
,我确定你不想要这样。因此,你需要使用像 browserify 这样的工具将 Node.JS 脚本处理成浏览器能够理解的东西。var module = require('my-module');
来自 Node.js 广为人知
AMD:
define(['jquery'] , function ($) {
return function () {};
});
由于其设计支持模块的异步加载,因此它非常适合浏览器使用。
随后,ES6引入了对模块的本地支持:
import * as lib from 'lib';