2019-03-27 14:26:09 1995浏览
今天扣丁学堂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进阶免费公开课】