AMD(异步模块定义)是RequireJS在推广过程当中对模块定义的规范化产出。AMD是一个概念,RequireJs是对这个概念的实现。好比javascript语言是对ECMAscript语言的实现,ECMAscript是一个组织,RequireJS是这个组织之下制定的一套脚本语言。javascript
// 异步的动态的加载js文件 // 依赖别的库,经过数组形式加载库进来['package/lib'] ## define定义,依赖lib库,经过['package/lib']加载这个库,经过回调函数接受lib参数,能够获得lib里面的一下方法 define(['package/lib'], function(lib){ function foo(){ lib.log("hello world!") } return { // return输出 foo:foo } }) 引用的话经过require就能够加载。就是异步模块定义,称为依赖前置(依赖或须要的时候在最上面定义好)
CMD(同步模块定义)是SeaJS(淘宝团队)在推广过程当中对模块定义的规范化产出。前端
// 全部模块都经过define来定义 define(function(require, exports, module){ // 经过require引入依赖 var $ = require('jquery'); var Spinning = require('./spinning'); }) 依赖就近(何时使用,就何时引进来),即用即返回
CommonJS规范-module.exports 是服务端nodeJs后端支持的规范,前端浏览器不支持CommonJS规范。java
是服务端进行模块划分的方式 exports.area = function(r){ return Math.PI * r * r; } exports.circumference = function(r){ return 2 * Math.PI * r; } 两种输出方式: module.exports 没有名字的命名输出 exports 带有有名字的输出
export default{} // 默认导出 import router from './router' // 导入
export function formatDate(date, fmt) {} // 向浏览器暴露这个方法 import { format } from 'common/js/utils' // 导入
export let sum = (x,y)=>{ return x+y } import * as util from './util' // 经过*封装起来 console.log(`sum:${util.sum(1,6)}`) 至关于: define('util',function(){ return { sum:function(){ }, minus:function(){ } } })
methods:{ increment(){ this.$emit("incre"); import('./../util') // 异步加载 与require('...')同样的 } }