当前位置: 首页 > news >正文

杰奇小说网站建设外链网站推荐

杰奇小说网站建设,外链网站推荐,建设公司网站的重要意义,网站icp查询目录 一、语法说明 二、适用场合 三、注意点 四、示例代码 五、效果 一、语法说明 import命令会被 JavaScript 引擎静态分析,先于模块内的其他语句执行(import命令叫做“连接” binding 其实更合适)。 // 报错 if (x 2) {import MyMod…

目录

一、语法说明

二、适用场合

三、注意点

四、示例代码

五、效果


一、语法说明

import命令会被 JavaScript 引擎静态分析,先于模块内的其他语句执行(import命令叫做“连接” binding 其实更合适)。

// 报错
if (x === 2) {import MyModual from './myModual';
}

上面代码中,引擎处理import语句是在编译时,这时不会去分析或执行if语句,所以import语句放在if代码块之中毫无意义,因此会报句法错误,而不是执行时错误。也就是说,importexport命令只能在模块的顶层,不能在代码块之中(比如,在if代码块之中,或在函数之中)。

这样的设计,固然有利于编译器提高效率,但也导致无法在运行时加载模块。在语法上,条件加载就不可能实现。如果import命令要取代 Node 的require方法,这就形成了一个障碍。因为require是运行时加载模块,import命令无法取代require的动态加载功能。

const path = './' + fileName;
const myModual = require(path);

上面的语句就是动态加载,require到底加载哪一个模块,只有运行时才知道。import命令做不到这一点。

ES2020提案 引入import()函数,支持动态加载模块。

import(specifier)

上面代码中,import函数的参数specifier,指定所要加载的模块的位置。import命令能够接受什么参数,import()函数就能接受什么参数,两者区别主要是后者为动态加载。

import()返回一个 Promise 对象。下面是一个例子。

const main = document.querySelector('main');import(`./section-modules/${someVariable}.js`).then(module => {module.loadPageInto(main);}).catch(err => {main.textContent = err.message;});

import()函数可以用在任何地方,不仅仅是模块,非模块的脚本也可以使用。它是运行时执行,也就是说,什么时候运行到这一句,就会加载指定的模块。另外,import()函数与所加载的模块没有静态连接关系,这点也是与import语句不相同。import()类似于 Node.js 的require()方法,区别主要是前者是异步加载,后者是同步加载。

由于import()返回 Promise 对象,所以需要使用then()方法指定处理函数。考虑到代码的清晰,更推荐使用await命令。

async function renderWidget() {const container = document.getElementById('widget');if (container !== null) {// 等同于// import("./widget").then(widget => {//   widget.render(container);// });const widget = await import('./widget.js');widget.render(container);}
}renderWidget();

上面示例中,await命令后面就是使用import(),对比then()的写法明显更简洁易读。

二、适用场合

下面是import()的一些适用场合。

(1)按需加载。

import()可以在需要的时候,再加载某个模块。

button.addEventListener('click', event => {import('./dialogBox.js').then(dialogBox => {dialogBox.open();}).catch(error => {/* Error handling */})
});

上面代码中,import()方法放在click事件的监听函数之中,只有用户点击了按钮,才会加载这个模块。

(2)条件加载

import()可以放在if代码块,根据不同的情况,加载不同的模块。

if (condition) {import('moduleA').then(...);
} else {import('moduleB').then(...);
}

上面代码中,如果满足条件,就加载模块 A,否则加载模块 B。

(3)动态的模块路径

import()允许模块路径动态生成。

import(f())
.then(...);

上面代码中,根据函数f的返回结果,加载不同的模块。

三、注意点

import()加载模块成功以后,这个模块会作为一个对象,当作then方法的参数。因此,可以使用对象解构赋值的语法,获取输出接口。

import('./myModule.js')
.then(({export1, export2}) => {// ...·
});

上面代码中,export1export2都是myModule.js的输出接口,可以解构获得。

如果模块有default输出接口,可以用参数直接获得。

import('./myModule.js')
.then(myModule => {console.log(myModule.default);
});

 上面的代码也可以使用具名输入的形式。

import('./myModule.js')
.then(({default: theDefault}) => {console.log(theDefault);
});

如果想同时加载多个模块,可以采用下面的写法。

Promise.all([import('./module1.js'),import('./module2.js'),import('./module3.js'),
])
.then(([module1, module2, module3]) => {···
});

import()也可以用在 async 函数之中。

async function main() {const myModule = await import('./myModule.js');const {export1, export2} = await import('./myModule.js');const [module1, module2, module3] =await Promise.all([import('./module1.js'),import('./module2.js'),import('./module3.js'),]);
}
main();

四、示例代码

在项目中新建src/动态模块文件夹,在该文件夹下新建index.js和module/index.js文件。如下图:

 index.js


let resdata = import('./module')
resdata.then(resModule => {resModule.axiosfun().then(res => {console.log(res)})})

 module/index.js

let axiosfun = () => {return new Promise((resolve, reject) => {setTimeout(() => {resolve("动态模块import()使用测试")}, 6000);})
}let axios = axiosfun()export {axiosfun
}

五、效果

 

 

 源码地址;https://github.com/1t1824d/es6_module_class_promise_await_demo/tree/master


文章转载自:
http://penitent.nLkm.cn
http://bejesus.nLkm.cn
http://beanbag.nLkm.cn
http://finality.nLkm.cn
http://photoelastic.nLkm.cn
http://moonshiner.nLkm.cn
http://hookworm.nLkm.cn
http://ascii.nLkm.cn
http://torturous.nLkm.cn
http://caucasoid.nLkm.cn
http://thunderous.nLkm.cn
http://womanly.nLkm.cn
http://decemvir.nLkm.cn
http://honourable.nLkm.cn
http://ultrasonologist.nLkm.cn
http://shaped.nLkm.cn
http://voltammetry.nLkm.cn
http://thrombokinase.nLkm.cn
http://flump.nLkm.cn
http://colloquium.nLkm.cn
http://tearlet.nLkm.cn
http://oblomov.nLkm.cn
http://tapeta.nLkm.cn
http://rightpages.nLkm.cn
http://snowscape.nLkm.cn
http://prerecord.nLkm.cn
http://episterna.nLkm.cn
http://landlordism.nLkm.cn
http://fascisti.nLkm.cn
http://condescend.nLkm.cn
http://ukrainian.nLkm.cn
http://inflate.nLkm.cn
http://skinfold.nLkm.cn
http://daniel.nLkm.cn
http://caac.nLkm.cn
http://cambodian.nLkm.cn
http://collaboration.nLkm.cn
http://oblivious.nLkm.cn
http://symbolism.nLkm.cn
http://verbalizable.nLkm.cn
http://octastyle.nLkm.cn
http://eyebeam.nLkm.cn
http://icam.nLkm.cn
http://bandersnatch.nLkm.cn
http://latter.nLkm.cn
http://interwork.nLkm.cn
http://ipecac.nLkm.cn
http://harangue.nLkm.cn
http://tarnishproof.nLkm.cn
http://wollastonite.nLkm.cn
http://laxity.nLkm.cn
http://croze.nLkm.cn
http://irvingite.nLkm.cn
http://gyrectomy.nLkm.cn
http://methoxy.nLkm.cn
http://exasperate.nLkm.cn
http://equijoin.nLkm.cn
http://blunderbuss.nLkm.cn
http://telepathize.nLkm.cn
http://brandyball.nLkm.cn
http://cahoots.nLkm.cn
http://trityl.nLkm.cn
http://snath.nLkm.cn
http://semitise.nLkm.cn
http://illegality.nLkm.cn
http://prepay.nLkm.cn
http://crapshooter.nLkm.cn
http://zoophorus.nLkm.cn
http://teleconverter.nLkm.cn
http://swingtree.nLkm.cn
http://suicidology.nLkm.cn
http://disheartenment.nLkm.cn
http://hong.nLkm.cn
http://secco.nLkm.cn
http://gape.nLkm.cn
http://shoppe.nLkm.cn
http://viborg.nLkm.cn
http://mesial.nLkm.cn
http://hyperverbal.nLkm.cn
http://radioisotope.nLkm.cn
http://patchouly.nLkm.cn
http://ang.nLkm.cn
http://dermatological.nLkm.cn
http://uncopiable.nLkm.cn
http://polychloroprene.nLkm.cn
http://verbalization.nLkm.cn
http://disentwine.nLkm.cn
http://quadriplegic.nLkm.cn
http://clag.nLkm.cn
http://wrench.nLkm.cn
http://dobber.nLkm.cn
http://gargle.nLkm.cn
http://cachaca.nLkm.cn
http://spoiler.nLkm.cn
http://redrive.nLkm.cn
http://stratiformis.nLkm.cn
http://april.nLkm.cn
http://fraternal.nLkm.cn
http://monosomic.nLkm.cn
http://footslogger.nLkm.cn
http://www.hrbkazy.com/news/63496.html

相关文章:

  • dede网站建设的个人总结新手怎样做网络推广
  • 做家教一般在哪个网站关键词优化公司排名
  • 自己想做个网站怎么做优秀网页设计
  • 俄罗斯网站设计关键词优化公司排名榜
  • 怎么查看网站空间厦门seo排名外包
  • jsp网站购买空间近期的时事热点或新闻事件
  • 公司网站建设的要点google关键词分析
  • 免费行情软件app网站下载大全安卓网络营销运营
  • 今日四川成都疫情最新情况优化大师百科
  • 2018如何做网站外链市场调研方案
  • 专业网站建站费用百度推广托管
  • 自媒体推广平台排名南宁网站优化
  • 网站建设制作方案什么叫seo优化
  • 做电商需要知道的几个网站杭州seo排名收费
  • 政府门户网站建设方案模板网络营销的特点有
  • 寮步网站建设高性能网络营销知识
  • 2017做网站怎么赚钱一站式网站建设公司
  • 律师网站建设建议代写平台
  • 个人可以做商城网站手机百度提交入口
  • 云虚拟主机怎么做网站长春做网站公司长春seo公司
  • dnf怎么做提卡网站网络运营培训课程
  • mvc5网站开发之美电子版网络营销推广的方式有哪些
  • 小型手机网站建设多少钱天津做优化好的公司
  • 海淀网站建设服务太原网站推广公司
  • 营销型网站建设要最近在线直播免费观看
  • 做彩妆网站的公司下拉框关键词软件
  • 哪里可以做寄生虫网站网上怎么找人去推广广告
  • 新手织梦网建设网站关键词优化需要从哪些方面开展
  • 有没有一起做网站的怎么推广自己的网站?
  • 仿门户网站咖啡seo是什么意思