服务器端 - 暴露module.exports对象 - module.exports = {} - module.exports = function (){} - module.exports.xxx = - 引用 let module = require('path') 浏览器端 - npm i browserify -g - 编译打包 - browserify js/src/app.js -o js/dist/bundle.js //>是写入文件 - <script>引入bundle.js便可
用于浏览器端异步加载多个js模块
- 异步加载
- 防止顺序错乱
下载rerquire.js - 无依赖模块 define(function (){ return //return回暴露的模块 }) - 有依赖模块 define(['moduleName'], function (moduleName){ return }) - 主模块 (function () { requirejs.config({ baseurl: 'js/', //以哪一个相对的路径为根据 path: { moduleName1: './modules/module1', //后缀无.js moduleName2: './modules/module2' } }) requirejs(['moduleName'], function (moduleName) { }) })() - <script data-mian = 'js/app.js' src = 'js/libs/require.js'> - 引入require和主页面 引用第三方模块 - 支持AMD的(如jquery) - 不支持的 path: { moduleName: 'path' } shim: { moduleName:{ exports: moduleName } }
模块引入 define(function (require, exports, module) { var moduleName1 = require('path1') //同步引用 require.async('path2', function (moduleName2) {}) //异步加载 }) 主模块 define(function (require) {}) 标签 <script type = 'text/javascript' src = 'js/libs/sea.js'></script> <script type = 'text/javascript'>seajs.use('./js/src/app.js')</script>
配置打包工具 - npm i babel-cli browserify -g - npm i babel-preset-es2015 --save-dev - babel-cli //cli:command line interface - babel-preset-es2015 //ES6转换为ES5的包 - browserify - .babelrc{"presets":["es2015"]} 执行 - babel js/src -d js/libs - browserify js/libs/app.js -o js/lib/bundle.js ES6暴露方式 - 常规暴露 - export value或 export {fun} //可直接暴露屡次 - import {value} from 'path' //直接暴露的必须解构方式引用 - 默认暴露 - export default value - import module from 'path' //可直接使用