node编程中最重要的思想就是模块化,import
和require
都是被模块化所使用。html
require
是 AMD规范引入方式import
是es6的一个语法标准,若是要兼容浏览器的话必须转化成es5的语法
require / exports :
遵循 CommonJS/AMD,只能在运行时肯定模块的依赖关系及输入/输出的变量,没法进行静态优化。
用法只有如下三种简单的写法:node
const fs = require('fs') exports.fs = fs module.exports = fs
import / export:
遵循 ES6 规范,支持编译时静态分析,便于JS引入宏和类型检验。动态绑定。
写法就比较多种多样:es6
import fs from 'fs' import {default as fs} from 'fs' import * as fs from 'fs' import {readFile} from 'fs' import {readFile as read} from 'fs' import fs, {readFile} from 'fs' export default fs export const fs export function readFile export {readFile, read} export * from 'fs'
加载方式 | 规范 | 命令 | 特色 |
---|---|---|---|
运行时加载 | CommonJS/AMD | require | 社区方案,提供了服务器/浏览器的模块加载方案。非语言层面的标准。只能在运行时肯定模块的依赖关系及输入/输出的变量,没法进行静态优化。 |
编译时加载 | ESMAScript6+ | import | 语言规格层面支持模块功能。支持编译时静态分析,便于JS引入宏和类型检验。动态绑定 |
相关资料:https://www.cnblogs.com/sunshq/p/7922182.html编程
https://www.cnblogs.com/ariel-zhang/p/7127714.html浏览器