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

杰奇小说网站建设seo关键词排名优化评价

杰奇小说网站建设,seo关键词排名优化评价,湖南营销型网站建设公司排名,什么响应式网站目录 一、语法说明 二、适用场合 三、注意点 四、示例代码 五、效果 一、语法说明 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.khdw.cn/news/54240.html

相关文章:

  • 石家庄做网站电话免费做网站怎么做网站吗
  • 枣强网址建站电话投放小网站
  • 做网站的最终目的历下区百度seo
  • 如何做视频网站推广员什么软件可以弄排名
  • 备案查询站长之家网站排名推广软件
  • 自己制作手机游戏app百度官方优化指南
  • 佛山市品牌网站建设哪家好武汉电脑培训学校有哪些
  • 企业网站模板下载psd格式百度seo怎么优化
  • 龙岗网站价格今天最新的新闻头条新闻
  • 做网站1天转多钱产品线上推广方案
  • 目前做哪个网站能致富保定seo网络推广
  • 南京做网站的公司电商网站设计
  • 建设银行360网站登录不了制作网页完整步骤
  • 做的好的微信商城网站搜索百度网页版
  • 分类网站上怎么做锚文本广州关键词排名推广
  • 公司网站运营新乡网络推广外包
  • 如何用java语言做网站针对大学生推广引流
  • 设计精美的网站磁力链
  • 正邦网站建设下载一个百度导航
  • vue做前台网站怎么在百度上做推广上首页
  • 网页界面设计的特点seo流量软件
  • 做淘宝差不多的网站网店无货源怎么做
  • 营销网站建设平台百度官方网站下载
  • wordpress 更新问题优化网站结构一般包括
  • 计算机程序网站开发是什么关键词三年级
  • 晋中做网站重庆百度快照优化排名
  • 免费搭建购物网站最好的推广平台是什么软件
  • 网页设计与网站建设景点介绍网络优化工程师简历
  • 安徽省建设监理网站百度推广在哪里
  • 青海网站建设哪家好竞价托管代运营