export和import

  export和import是JavaScript中ES6(ECMAScript 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

  ⑸中断运行
  按下Ctrl+C即可

  二、export和import技术细节
  一般情况下,先声明再导出。

//声明
const PI=3.1415926

function 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 PI=3.1415926

export const  add=(a,b)=>{
    return a + b;
}

export const sub=function(a,b) {
    return a - b;
}

export const  multi=(a,b)=>{
    return a *b
}

  ⑴命名(具名)导出与导入
  这是最为常见的用法,命名(具名)导出可以导出多个值、函数、对象,由于指定了名称,方便追踪与维护。

//命名(具名)导出
export const PI=3.1415926

export const  add=(a,b)=>{
    return a + b;
}

export const sub=function(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 a+b
}
//导入时最好与导出时的名称一致
import add from "./myexport.js";
console.log(add(1,2));

  默认导出时可以不使用函数名称。

export default function(a,b){
    return a + b
}

  ⑶既有默认导出又有具名导出时,可以使用大括号,也可以不使用大括号的方式来导入
  既有默认导出又有具名导出时,需要注意,假如导出文件内容:

export const PI=3.1415926
export const add=(a,b)=>a+b;
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);
}

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【1】项目代码完整且功能都验证ok,确保稳定可靠运行后才上传。欢迎下载使用!在使用过程中,如有问题或建议,请及时私信沟通,帮助解答。 【2】项目主要针对各个计算机相关专业,包括计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师或企业员工使用。 【3】项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 【4】如果基础还行,或热爱钻研,可基于此项目进行二次开发,DIY其他不同功能,欢迎交流学习。 【注意】 项目下载解压后,项目名字和项目路径不要用中文,否则可能会出现解析不了的错误,建议解压重命名为英文名字后再运行!有问题私信沟通,祝顺利! 基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值