js模块化世界

前言

我们经常见到 一些这样的写法,require('xxx')、import xx from '../components/data'、export const data、。。。也听见一些这样的说法:commonjs 规范、AMD规范。。。

其实 都是 属于模块化概念里的东西了。所谓模块化,就是将一些功能 独立化、块状化,易于被别人使用。这是代码开发向前的趋势了。这里主要说一下当前模块化的 主要规范。所谓规范,即 遵从的一些语法标准。

主要有三大规范:commonJS、AMD、es6模块化 

commonJS: 

同步加载依赖模块,require导入、module.exports导出。 

语法: 

// 导入
const moduleA = require('./moduleA');

// 导出
module.exports = moduleA.someFunc;

 

优点: 

Node.js环境 可运行;npm的第三方模块 多使用 该规范 

缺点: 

浏览器环境不支持,须转换 

 

注:CommonJS 还可以细分为 CommonJS1 和 CommonJS2,区别在于 CommonJS1 只能通过 exports.XX = XX 的方式导出,CommonJS2 在 CommonJS1 的基础上加入了 module.exports = XX 的导出方式。 CommonJS 通常指 CommonJS2。

AMD 

异步加载模块。主要是为了解决浏览器环境的模块化问题,代表性 如 requirejs。 

语法: 

// 定义一个模块
define('module', ['dep'], function(dep) {
  return exports;
});

// 导入和使用
require(['module'], function(module) {
});

 

优点: 

可直接在浏览器环境运行;可并行加载多个模块;支持node环境和浏览器环境 

缺点: 

js环境 运行 需要amd库的支持。 

Es6模块化 

Import;export。取代 commonJS 和 AMD 成为 通用解决方案。

// 导入
import { readFile } from 'fs';
import React from 'react';
// 导出
export function hello() {};
export default {
  // ...
};

缺点: 

浏览器需要 转换为es5. 

猜你喜欢

转载自www.cnblogs.com/fan-zha/p/10419908.html