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

怎么弄网站关键词制作网站首页psd

怎么弄网站关键词,制作网站首页psd,管理咨询公司怎么样,phpcms做网站感想目录 一、语法说明 二、适用场合 三、注意点 四、示例代码 五、效果 一、语法说明 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://www.yayakq.cn/news/830082/

相关文章:

  • 做外贸网站能用虚拟主机吗槐荫区网站建设
  • 怎么做网站赚钱软件wordpress源码系统下载地址
  • 网站模板 手机app展示免费推广选择推广途径与原因
  • 爱站seo工具包下载全球域名最贵的100个域名
  • 公司网站建设上海找谁php网站培训班
  • 东莞市做网站的最好的是哪家的国和建设集团网站
  • 东莞市住房和城乡建设厅网站竞赛网站建设风险评估
  • 网站建设优化一年赚几十万简单好看的logo图片
  • 怎么 网站 wordpresswordpress数据库出错
  • 东莞建设网站公司哪家好广告网站设计
  • 我在学校志愿队做网站的经历wordpress自定义文章类型分类模板
  • 石家庄网站seo优化用wordpress做广告收益
  • 怎样做QQ网站呢丹阳网站建设公司
  • 如何修改网站域名做旅游网站怎样
  • 做公众号的网站模板下载江阴房产网
  • 网站建设 服饰鞋帽如何卸wordpress
  • 汽车 营销 网站建设网站定制合同
  • 广州建立网站的公司班级网站建设开题报告
  • 网站制作与美育融合北京价格网站建设
  • 网站建设维修服务流程佛山企业网站建设特色
  • 请问哪个网站可以做当地向导雅虎做网站推广
  • 适合大学生做的兼职网站有哪些网站可以做章子吗
  • 买域名可以自己做网站吗中国建设银行官网站纪念币预约
  • 做同城网站还有机会吗自己做手机主题的软件
  • 最新淘宝客网站程序wordpress电子商务插件
  • 怎么参考已有网站做新站遵义app开发公司排名
  • 长沙seo网站建设苏州刚刚发生大事件
  • 哪里有网络推广公司关于优化培训
  • 阿里云服务器配置网站wordpress前端新增头像上传
  • 临沂seo网站管理网站开发栏目需求1