前端日益渐增的复杂化,使我们前端越来越偏向于代码复用性考虑,采用了模块化开发,但是模块化开发有以下几个规范,我将一一讲解.前端模块化开发规范分为CommonJs,Amd,Cmd,es6模块化.
commonJS
CommonJS规范是在node模块系统基础上创建出来的,CommonJS在服务器中使用,不能在浏览器环境中使用。CommonJS规范规定每个模块内部,module变量代表当前模块。这个变量是一个对象,它的exports属性(module.exports)是对外的接口。加载某个模块,其实是加载该模块的module.exports属性。
commonjs导出 //第一种方法 function a(){ console.log('a'); } function b(){ console.log('b'); } module.exports.a = a; module.exports.b = b; //第二种 module.exports={ a:a, b:b } //第三种 module.exports={ a:true, b(a,b){ return a+b; } }
commonJs导入
//a和b是导出出去的变量 //导入第一种方式 var {a,b}=require('./aaa.js'); //导入第二种方式 //默认导入一个对象,通过对象的语法进行调用 var c =require('./aaa.js'); c.a();
es6模块化使用是我们经常使用的,这里化重点
es6模块化导出
let name='王菜菜'; let age='22'; function sum(a,b){ return a+b; } //第一种方法 export={ name:name, age:age, sum:sum } //第二种方法 export let hight='1.95'; export let hody='跑步'; export function sum(a,b){ return a+b; }; //定义class类 export class Pest{ run(){ return 1+2; } }; //第三种方法 export default 只能有一个可以默认导出,让导入者自己命名 export default
es6模块导入
//第一种方法 import { name, age,Pest} from './aaa.js'; console.log(name); const p=new Pest(); p.sum(); //第二种方法,通过as给导入的模块起一个别名,导入的是一个对象 //这样也可以避免与导入页面的变量名冲突 import * as gey from './aaa.js'; console.log(gey.name); //第三种方法 export default 默认导入 import gey from './aaa.js'; //默认导入的就是export default console.log(gey);
剩下俩个amd和cmd前端不常用就不写了