建设在线观看视频网站,免费企业网站建设免费,免费画图网站,品牌设计公司vi设计export和import是JavaScript中ES6#xff08;ECMAScript 2015#xff09;的模块系统的语法#xff0c;用于实现模块的导出和导入#xff0c;ES6 的模块系统是 JavaScript 官方标准中定义的模块化规范#xff0c;现在的前端应用模块化已经很普及了。 export和import的技… export和import是JavaScript中ES6ECMAScript 2015的模块系统的语法用于实现模块的导出和导入ES6 的模块系统是 JavaScript 官方标准中定义的模块化规范现在的前端应用模块化已经很普及了。 export和import的技术细节有很多下面做一总结。 一、实时监视JS文件的运行 ⑴为了在VSCode中编辑js文件并实时监视该文件的运行需要安装nodemon下面是进行全局安装。
npm install -g nodemon ⑵新建一个目录在该目录下运行
npm init -y 在该目录下生成一个新的 package.json 文件并使用默认值进行初始化 ⑶打开 package.json 文件添加type字段并设置为module这样就可以在js文件中使用ES模块语法了。 ⑷实时监视JS文件的运行
nodemon myfile.js ⑸中断运行 按下CtrlC即可 二、export和import技术细节 一般情况下先声明再导出。
//声明
const PI3.1415926function add(a,b){return a b
}function sub(a,b){return a - b
}function multi(a,b){return a * b
}
//导出
export {PI,add,sub,multi} 也可以在声明时导出。
export const PI3.1415926export const add(a,b){return a b;
}export const subfunction(a,b) {return a - b;
}export const multi(a,b){return a *b
} ⑴命名具名导出与导入 这是最为常见的用法命名具名导出可以导出多个值、函数、对象由于指定了名称方便追踪与维护。
//命名具名导出
export const PI3.1415926export const add(a,b){return a b;
}export const subfunction(a,b) {return a - b;
}export const multi(a,b){return a *b
}//命名具名导入
import { PI,add,sub,multi } from ./myexport.js;console.log(PI);
console.log(add(1,2));
console.log(sub(1,2));
console.log(multi(1,2)); 也可以选择性地导入
import {PI} from ./myexport.js;
import {add} from ./myexport.js;
import {sub} from ./myexport.js;
import {multi} from ./myexport.js; ⑵默认导出与导入 默认导出适合功能单一的模块由于对导出与导入做了简化代码比较简洁。
//声明时默认导出
export default function add(a,b){return ab
}
//导入时最好与导出时的名称一致
import add from ./myexport.js;
console.log(add(1,2));默认导出时可以不使用函数名称。
export default function(a,b){return a b
} ⑶既有默认导出又有具名导出时可以使用大括号也可以不使用大括号的方式来导入 既有默认导出又有具名导出时需要注意假如导出文件内容
export const PI3.1415926
export const add(a,b)ab;
export const sub(a,b){return a - b
}
export default function multi(a,b){return a * b*10
} 导入内容为
import add from ./myexport.js;
console.log(add(1,2)); 显然结果时20因为导入的add对应的是默认导出的函数multi。如果全部使用正确的写法是
import { PI,add,sub,default as multi } from ./myexport.js;console.log(PI);
console.log(add(1,2));
console.log(sub(1,2));
console.log(multi(1,2));或者注意默认导出的导入一定要放在最前面
import multi,{ PI,add,sub } from ./myexport.js; 上面时选择使用了{}方式如果不使用{}方式可以将所有导出内容作为一个对象导入如下使用
import * as myexport from ./myexport.js;console.log(myexport.PI);
console.log(myexport.add(1, 2));
console.log(myexport.sub(1, 2));
console.log(myexport.default(1, 2)); 可以选择性地导入
import {PI} from ./myexport.js;
import {add} from ./myexport.js;
import {sub} from ./myexport.js;
import { default as multi} from ./myexport.js; ⑷使用as关键字 在上面的例子中在导入时已经使用了as关键字这是为了避免在使用时的上下文冲突在导出时也可以使用as但是这个并不推荐因为这样不如直接修改源代码了。 ⑸聚合后重新导出 比如再建立一个聚合模块Aggregationmodule.js内容如下
import { PI,add,sub,default as multi } from ./myexport.js;export { PI,add,sub,multi } myimport.js直接导入这个聚合模块即可
import { PI,add,sub,multi } from ./Aggregationmodule.js;console.log(PI);
console.log(add(1,2));
console.log(sub(1,2));
console.log(multi(1,2)); 这种方式适合在一个目录下有很多模块文件可以将需要导出的函数或者变量集中在一个文件中比如index.js这样在导入时只需要导入该目录下的index.js即可。 ⑹动态导入
try {const myObj await import(./Aggregationmodule.js);console.log(导入正常);console.log(myObj.PI);console.log(myObj.add(1, 2));console.log(myObj.sub(1, 2));console.log(myObj.multi(1, 2));
} catch (e) {console.log(导入时发生错误 e);
}或者
try{const { PI,add,sub,multi } await import( ./Aggregationmodule.js);console.log(PI);
} catch(e){console.log(导入时发生错误e);
}