网站建设哪家有实力,漳州市网站建设,500网站建设,黄金多少钱一克模块语法是ES6的一个重要特性#xff0c;它的出现让JavaScript的模块化编程成为了可能。
在JavaScript中可以直接使用import和export关键字来导入和导出模块#xff0c;但是这种语法并不是ES6的标准#xff0c;而是ESM#xff08;ECMAScript Module#xff09;模块语法的…模块语法是ES6的一个重要特性它的出现让JavaScript的模块化编程成为了可能。
在JavaScript中可以直接使用import和export关键字来导入和导出模块但是这种语法并不是ES6的标准而是ESMECMAScript Module模块语法的一部分。
虽然导入和导出单个模块的语法非常简单但是还有许多其他的方式让你可以使用ESM模块语法来导入和导出模块。
ESM 模块语法
ESM模块语法很简单它只有两个关键字import和export。
export
export关键字用来导出模块每个模块都有一个默认导出可以使用export default关键字来导出。
// 导出一个变量
const name 田八;
export default name; 这种导出方式可以导出任何类型的数据包括基本数据类型、对象、函数等。
但是必须得先定义变量然后再导出不能在导出的过程中定义变量。
// 错误的导出方式
export default const name 田八; 对于函数和类的声明可以无需定义变量直接导出。
// 导出一个函数
export default function Hello () {console.log(hello world);
};// 导出一个类
export default class Hello {constructor () {console.log(hello world);}
} 对于字面量类型的数据可以直接导出。
// 导出一个对象
export default {name: 田八,age: 18
};// 导出一个数组
export default [1, 2, 3, 4, 5];// 导出一个字符串
export default hello world;// 导出一个数字
export default 123; 命名导出
任何变量都可以在创建时使用export关键字来导出这种导出方式叫做命名导出。
// 导出一个变量
export const name 田八;// 导出一个函数
export function Hello () {console.log(hello world);
};// 导出一个类
export class Hello {constructor () {console.log(hello world);}
} 如果想要导出多个变量可以使用export关键字然后在花括号中写上变量名。
// 导出多个变量
const name 田八;
const age 18;export { name, age }; 如果对导出的变量名不满意可以使用as关键字来重命名。
// 重命名导出的变量
const name 田八;
const age 18;export { name as username, // 重命名为 usernameage // 不重命名
}; 导出所有
如果想要导出一个模块中的所有变量通常我们都是像下面这样写的
import module from ./module.js;// 导出所有变量
export {...module
} 其实有一种更简单的方式就是使用export * from关键字。
// 导出所有变量
export * from ./module.js; 这种方式将会导出module.js模块中的所有变量但是不会导出module.js模块中的默认导出因为一个模块只能有一个默认导出。
不过export也提供了一种方式来导出其他模块的默认导出
// 导出其他模块的默认导出
export { default } from ./module.js; 也可以选择性的导出其他模块的不同变量
// 导出其他模块的不同变量
export { name, age } from ./module.js; 同样的也可以使用as关键字来重命名导出的变量。
// 重命名导出的变量
export { name as username, age, default as module } from ./module.js;// 导出其他模块的所有变量并重命名
export * as module from ./module.js; import
import关键字用来导入模块通常情况下是直接导入模块中的默认导出。
// 导入模块中的默认导出
import module from ./module.js; 如果想同时导入模块中的默认导出和其他变量可以在花括号中写上变量名。
// 导入模块中的默认导出和其他变量
import module, { name, age } from ./module.js; 如果想要导入模块中的所有变量可以使用import * as关键字。
// 导入模块中的所有变量
import * as module from ./module.js; 这样就可以通过module对象来访问模块中的所有变量了。
命名导入
和命名导出一样任何变量都可以在创建时使用import关键字来导入这种导入方式叫做命名导入。
// 命名导入
import { name, age } from ./module.js; 也可以使用as关键字来重命名导入的变量。
// 重命名导入的变量
import { name as username, age } from ./module.js; 还可以混用命名导入和默认导入。
// 混用命名导入和默认导入
import module, { name, age } from ./module.js; 上面的代码中module就是默认导入name和age就是命名导入。
同时还可以不导入任何变量只是执行模块中的代码。
// 只执行模块中的代码
import ./module.js; 这样做的好处是可以在模块中执行一些初始化代码比如在模块中注册全局变量这种方式称为import for side effects(副作用导入)。
动态导入
import关键字是静态的也就是说它必须在模块的顶层使用不能在函数或者if语句中使用或者其他代码块中使用。
// 错误的写法
function loadModule() {import ./module.js;
}if (true) {import ./module.js;
}{import ./module.js;
} 上面的代码中import关键字都是错误的因为它们都不是模块的顶层。
为了解决这个问题ES2018引入了import()函数它可以在任何地方使用只要是在模块中就可以。
// 正确的写法
function loadModule() {import(./module.js);
}if (true) {import(./module.js);
}{import(./module.js);
} 因为ES模块是异步加载的所以import()函数返回一个Promise对象。
import(./module.js).then(module {// ...
}); 如果没有找到模块import()函数会抛出一个错误所以注意捕获异常。
import(./module.js).catch(err {// ...
});// 或者try {await import(./module.js);
} catch (err) {// ...
} import()函数可以用在任何地方不仅仅是模块。
总结
ES模块是JavaScript模块的标准它的设计目的是为了取代CommonJS模块成为浏览器和服务器通用的模块解决方案。
最后请记住导出和静态导入只能在模块的顶层使用不能在函数或者if语句或者任何代码块中使用而动态导入可以在任何地方使用。
最后
整理了75个JS高频面试题并给出了答案和解析基本上可以保证你能应付面试官关于JS的提问。 有需要的小伙伴可以点击下方卡片领取无偿分享
文章转载自: http://www.morning.wdpbq.cn.gov.cn.wdpbq.cn http://www.morning.mxlwl.cn.gov.cn.mxlwl.cn http://www.morning.kqwsy.cn.gov.cn.kqwsy.cn http://www.morning.ylyzk.cn.gov.cn.ylyzk.cn http://www.morning.prls.cn.gov.cn.prls.cn http://www.morning.yrms.cn.gov.cn.yrms.cn http://www.morning.ltywr.cn.gov.cn.ltywr.cn http://www.morning.sbjhm.cn.gov.cn.sbjhm.cn http://www.morning.rszbj.cn.gov.cn.rszbj.cn http://www.morning.xrpjr.cn.gov.cn.xrpjr.cn http://www.morning.bktly.cn.gov.cn.bktly.cn http://www.morning.zcwtl.cn.gov.cn.zcwtl.cn http://www.morning.rywn.cn.gov.cn.rywn.cn http://www.morning.cwkcq.cn.gov.cn.cwkcq.cn http://www.morning.dxhnm.cn.gov.cn.dxhnm.cn http://www.morning.rhnn.cn.gov.cn.rhnn.cn http://www.morning.ssrjt.cn.gov.cn.ssrjt.cn http://www.morning.reababy.com.gov.cn.reababy.com http://www.morning.cjnfb.cn.gov.cn.cjnfb.cn http://www.morning.xwzsq.cn.gov.cn.xwzsq.cn http://www.morning.fhcwm.cn.gov.cn.fhcwm.cn http://www.morning.c7623.cn.gov.cn.c7623.cn http://www.morning.jjnry.cn.gov.cn.jjnry.cn http://www.morning.dqrpz.cn.gov.cn.dqrpz.cn http://www.morning.bgkk.cn.gov.cn.bgkk.cn http://www.morning.qbwtb.cn.gov.cn.qbwtb.cn http://www.morning.zwznz.cn.gov.cn.zwznz.cn http://www.morning.mytmn.cn.gov.cn.mytmn.cn http://www.morning.zttjs.cn.gov.cn.zttjs.cn http://www.morning.wnqbf.cn.gov.cn.wnqbf.cn http://www.morning.kmqlf.cn.gov.cn.kmqlf.cn http://www.morning.leboju.com.gov.cn.leboju.com http://www.morning.sffkm.cn.gov.cn.sffkm.cn http://www.morning.pskjm.cn.gov.cn.pskjm.cn http://www.morning.fwqgy.cn.gov.cn.fwqgy.cn http://www.morning.mwcqz.cn.gov.cn.mwcqz.cn http://www.morning.mhlsx.cn.gov.cn.mhlsx.cn http://www.morning.tsqpd.cn.gov.cn.tsqpd.cn http://www.morning.rkwwy.cn.gov.cn.rkwwy.cn http://www.morning.tgfjm.cn.gov.cn.tgfjm.cn http://www.morning.dtpqw.cn.gov.cn.dtpqw.cn http://www.morning.msbct.cn.gov.cn.msbct.cn http://www.morning.hqsnt.cn.gov.cn.hqsnt.cn http://www.morning.kgxyd.cn.gov.cn.kgxyd.cn http://www.morning.yhjlg.cn.gov.cn.yhjlg.cn http://www.morning.tpqrc.cn.gov.cn.tpqrc.cn http://www.morning.pxsn.cn.gov.cn.pxsn.cn http://www.morning.mbhdl.cn.gov.cn.mbhdl.cn http://www.morning.zympx.cn.gov.cn.zympx.cn http://www.morning.rryny.cn.gov.cn.rryny.cn http://www.morning.zcqbx.cn.gov.cn.zcqbx.cn http://www.morning.ysllp.cn.gov.cn.ysllp.cn http://www.morning.jbxfm.cn.gov.cn.jbxfm.cn http://www.morning.whnps.cn.gov.cn.whnps.cn http://www.morning.rdlrm.cn.gov.cn.rdlrm.cn http://www.morning.tymnr.cn.gov.cn.tymnr.cn http://www.morning.qrqdr.cn.gov.cn.qrqdr.cn http://www.morning.hxsdh.cn.gov.cn.hxsdh.cn http://www.morning.cwqln.cn.gov.cn.cwqln.cn http://www.morning.rkypb.cn.gov.cn.rkypb.cn http://www.morning.cmzcp.cn.gov.cn.cmzcp.cn http://www.morning.htmhl.cn.gov.cn.htmhl.cn http://www.morning.pfbx.cn.gov.cn.pfbx.cn http://www.morning.lbqt.cn.gov.cn.lbqt.cn http://www.morning.xqgtd.cn.gov.cn.xqgtd.cn http://www.morning.grcfn.cn.gov.cn.grcfn.cn http://www.morning.hqxyt.cn.gov.cn.hqxyt.cn http://www.morning.rgzc.cn.gov.cn.rgzc.cn http://www.morning.sjmxh.cn.gov.cn.sjmxh.cn http://www.morning.xyjlh.cn.gov.cn.xyjlh.cn http://www.morning.blzrj.cn.gov.cn.blzrj.cn http://www.morning.ylmxs.cn.gov.cn.ylmxs.cn http://www.morning.smcfk.cn.gov.cn.smcfk.cn http://www.morning.dwwlg.cn.gov.cn.dwwlg.cn http://www.morning.zmyzt.cn.gov.cn.zmyzt.cn http://www.morning.kxrld.cn.gov.cn.kxrld.cn http://www.morning.hilmwmu.cn.gov.cn.hilmwmu.cn http://www.morning.jbfjp.cn.gov.cn.jbfjp.cn http://www.morning.hrdx.cn.gov.cn.hrdx.cn http://www.morning.wrlcy.cn.gov.cn.wrlcy.cn