为什么需要模块化?
如果没有模块化的话,那么 后引入的 会代替 前引入的 [a.js 有一个name , b.js 有一个name 那么先引入a.js在引入b.js 那么b会把a的顶替掉]
js有哪些模块化规范?
1.CommonJs 服务器的模块化。【nodejs支持】
2.ADM , UMD 社区自创建的 [目前没人用了]
3.ESM ES6提出正式的规范 【nodejs是不支持的】
ESM(ECMAScript Module 标准规范)
导出 : export
// es6提出的模块化规范 导出 : 使用export const es = 'es6的导出' const abc = 'es6导出使用别名' const cd = 'es6导入使用别名' export { es, abc as abcScript, cd }
导入 : import
// es6提出的模块化规范 导入 : 使用 import import { es , abcScript ,cd as cdd} from './ecmascript.mjs' console.log(es ,abcScript,cdd)
整个文件只有一个导出
// 整个文件只有一个导出 export default const abc = '整个文件只有一个导出' export default abc
整个文件只有一个导入
// 导入的是,整个文件只有一个导出的,就不用 {} import abc from './ecmadef.mjs' console.log(abc);
nodejs默认是不支持ESM规范的,如果想要这样用,那么后缀要变成 .mjs 或者创建一个文件 package.json 写上 { "type": "module" } 也可以解决
CommonJS规范
导出 module.exports. !! 有加s
var a = '我的commonJS的导入' var fo = '我的commonJS的导入的第二个' // 这里跟es6的区别是多了一个s !!! // exports.a = a // exports.fo = fo // 第二种方法 就不能简写,一定要加上module module.exports = { a, fo }
导出 require(‘文件名’)
var a = require('./module') console.log(a); console.log(a.a); console.log(a.fo);
标签:es6,abc,模块化,导出,module,导入 From: https://www.cnblogs.com/qd-lbxx/p/16780253.html