## 7\. JS 需要封裝
前些年我們了解了全局變量的風險,值得慶幸的是,現在有很多的方法來封裝JS:
* [Immediately Invoked Function Expressions](https://en.wikipedia.org/wiki/Immediately-invoked_function_expression)?(aka IIFE)
* [Revealing Modules](http://addyosmani.com/resources/essentialjsdesignpatterns/book/#revealingmodulepatternjavascript)
* [AMD](http://requirejs.org/docs/whyamd.html)?(typically via?[RequireJS](http://requirejs.org/))
* [CommonJS](http://www.sitepoint.com/understanding-module-exports-exports-node-js/)?(used by?[Node.js](https://nodejs.org/), use in browser via?[Browserify](http://browserify.org/)?or?[Webpack](http://webpack.github.io/))
* [ES6 modules](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import#Browser_compatibility)
ES6模塊是未來。好消息是,雖然在瀏覽器中還不能很好的支持,但你可以用?[Babel](https://babeljs.io/)?來使用它。
如果你不想?transpile,?CommonJS可能是你最佳的選擇。由于 Node 使用的?CommonJS 模式,所以你可以使用[npm](https://www.npmjs.com/)?來下載數千個包。CommonJS 不能在瀏覽器中運行,所以你可能需要??[Browserify](http://browserify.org/),[Webpack](http://webpack.github.io/), or?[JSPM](http://jspm.io/).