2019-03-27 14:26:09 1972浏览
今天扣丁学堂HTML5培训老师给大家分享一篇关于JavaScript中AMD和ES6模块的导入导出对比的详细介绍,比如首先我们前端在开发过程中经常会遇到导入导出功能。
//import 路径不可以为变量 var url = './output' import { a, b } from url//这么写会报错 //------------------ //import 的引入与否不能和代码逻辑向关联 let status= true if(status){ import { a, b } from url//这么写会报错 }
import foo from './output' import {b as B} from './output' import * as OBj from './output' import {a} from './output' import {b as BB} from './output' import c, {d} from './output'
const a = 'valueA1' export {a}
import {a} from './output.js'//此处的import {a}和export {a},两个a是一一对应关系 console.log(a)//=>valueA1
const a = 'valueA1' export default{a}
import a from './output.js'//此处的a和export default{a},不是一个a, console.log(a)//=>{ a: 'valueA1' }
import abc from './output.js'//此处的a和export default{a},不是一个a, console.log(abc)//=>{ a: 'valueA1' }
const a = 'valueA1' const b = 'valueB1' const c = 'valueC1' const d = 'valueD1' function foo() { console.log(`foo执行,c的值是${c}`); } export {a} export {b} export default { b,d,foo}
import obj, {a,b } from './output' console.log(a); //=>valueA1 console.log(b); //=>valueB1 console.log(obj); //=>{ b: 'valueB1', d: 'valueD1', foo: [Function: foo] }
const a = 'valueA1' const b = 'valueB1' const c = 'valueC1' const d = 'valueD1' function foo() { console.log(`foo执行,c的值是${c}`); } export {a} export {b} export default { b,d,foo}
import {a as A} from './output' import {* as A} from './output'//这是不支持的 import * as obj from './output' console.log(A); //=>valueA1 console.log(obj); //=>{ a: 'valueA1',default: { b: 'valueB1', d: 'valueD1', foo: [Function: foo] },b: 'valueB1' }
import {* as A} from './output'//这是不支持的 import * as obj from './output' console.log(obj); //=>{ a: 'valueA1',default: { b: 'valueB1', d: 'valueD1', foo: [Function: foo] },b: 'valueB1' }
let flag = true if (flag) { const a = require('./output.js') console.log(a); //支持 }
let flag = true let url = './output.js' if (flag) { const a = require(url) console.log(a); //支持 }
const exports = module.exports;
exports.a ='valueA1' module.exports.a='valueA1'
const exports = module.exports;
const a = 'valueA1' const b = 'valueB1' const c = 'valueC1' module.exports = { c} exports.b = b//当直接给 module.exports时,exports会失效 module.exports.a = a
//部分省略 exports.b = b//这样可以生效 module.exports.a = a
const obj = require('./output.js') console.log(obj); //=>{ b: 'valueB1', a: 'valueA1' }
//部分省略 module.exports = { c} module.exports.a = a
const obj = require('./output.js') console.log(obj); //=>{ c: 'valueC1', a: 'valueA1' }
output.js //部分省略 module.exports = { c} module.exports.a = a inputj.s import obj from './output' import {a} from './output' console.log(a);//=>valueA1 console.log(obj);//=>{ c: 'valueC1', a: 'valueA1' } demo2 output.js const a = 'valueA1' const b = 'valueB1' const c = 'valueC1' function foo() { console.log(`foo执行,c的值是${c}`); } export {a} export default {b,c,foo} export {b} input.js const a = require('./output.js') console.log(a); //=>{ a: 'valueA1',default: { b: 'valueB1', c: 'valueC1', foo: [Function: foo] }, b: 'valueB1' }
【关注微信公众号获取更多学习资料】 【扫码进入HTML5进阶免费公开课】