当前位置: 首页 > 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.ds6.com.cn/news/94607.html

相关文章:

  • 网站与系统对接图文方案腾讯企点
  • 昆明设计网站建设百度上怎么打广告宣传
  • 怎样不花钱做网站百度首页百度
  • 网站新闻怎么写南宁seo外包靠谱吗
  • 网站推广计划百度优选官网
  • 做网站教程下载娄底seo
  • 煤棚网架多少钱一平方网站优化策略分析
  • 中山做网站费用国外市场网站推广公司
  • 展览馆展示设计宁波企业seo服务
  • 买了网站 怎么做呢怎样在百度上做免费推广
  • 电子商务网站建设成果ppy营销背景包括哪些内容
  • 石家庄网站建设价格深圳营销策划公司十强
  • dreamweaver个人网站推广费用一般多少
  • 网站建设文献翻译网站搜索优化价格
  • 舟山市建设局网站网站制作流程
  • 微信公众号推广网站腾讯广告联盟
  • 网站开发服务纠纷seo网址超级外链工具
  • 萧山建设有限公司网站上海关键词排名推广
  • 企业文化内容范本seo的主要工作内容
  • 宁波做微信网站新网站如何推广
  • 建设银行北京分行网站长沙疫情最新消息
  • 网站建设预览济南最新消息
  • 哪个网站可以接做美工的活儿百度客服中心人工电话
  • 广东省自然资源厅领导分工seo公司杭州
  • 网站交互方式百度网盘seo优化
  • 做类似返利网的网站有哪些网络建站工作室
  • 无锡锡山网站建设制作一个网站需要多少费用
  • 北京市城乡建设委员会门户网站关键词seo优化排名公司
  • 深圳网站建设智能小程序软文街官网
  • 做简历哪个网站比较好百度客服人工在线咨询