Module 的加载实现

<!-- 页面内嵌的脚本 -->
<script type="application/javascript">
  // module code
</script>

<!-- 外部脚本 -->
<script type="application/javascript" src="path/to/myModule.js">
</script>

两种异步加载的语法。

<script src="path/to/myModule.js" defer></script>
<script src="path/to/myModule.js" async></script>

 deferasync的区别是:defer要等到整个页面在内存中正常渲染结束(DOM 结构完全生成,以及其他脚本执行完成),才会执行;async一旦下载完,渲染引擎就会中断渲染,执行这个脚本以后,再继续渲染。一句话,defer是“渲染完再执行”,async是“下载完就执行”。另外,如果有多个defer脚本,会按照它们在页面出现的顺序加载,而多个async脚本是不能保证加载顺序的。

浏览器加载 ES6 模块,也使用<script>标签,但是要加入type="module"属性。

<script type="module" src="./foo.js"></script>

 

览器加载 ES6 模块,也使用<script>标签,但是要加入type="module"属性。

<script type="module" src="./foo.js"></script>

上面代码在网页中插入一个模块foo.js,由于type属性设为module,所以浏览器知道这是一个 ES6 模块。

浏览器对于带有type="module"<script>,都是异步加载,不会造成堵塞浏览器,即等到整个页面渲染完,再执行模块脚本,等同于打开了<script>标签的defer属性。

<script type="module" src="./foo.js"></script>
<!-- 等同于 -->
<script type="module" src="./foo.js" defer></script>

如果网页有多个<script type="module">,它们会按照在页面出现的顺序依次执行。

<script>标签的async属性也可以打开,这时只要加载完成,渲染引擎就会中断渲染立即执行。执行完成后,再恢复渲染。

<script type="module" src="./foo.js" async></script>

一旦使用了async属性,<script type="module">就不会按照在页面出现的顺序执行,而是只要该模块加载完成,就执行该模块。

ES6 模块也允许内嵌在网页中,语法行为与加载外部脚本完全一致。

<script type="module">
  import utils from "./utils.js";

  // other code
</script>
WPF(Windows Presentation Foundation)是一种用于创建Windows桌面应用程序的开发框架,而Prism是一个用于帮助开发人员构建可扩展、模块化的WPF应用程序的框架。 在WPF Prism中,模块是应用程序的组成部分,每个模块都是相对独立、可重用且可扩展的。模块可以使用Prism框架提供的功能进行加载和管理。 模块加载的过程包括以下步骤: 1. 定义模块:首先,需要在应用程序中定义模块。模块通常包括一个模块类,该类实现了IModule接口,并在其中进行模块的初始化工作。 2. 配置模块目录:为了加载模块,需要指定模块所在的目录。可以在应用程序的配置文件中设置模块目录的路径。 3. 模块发现:Prism框架将会在指定的模块目录中查找模块,并获取模块的配置信息。 4. 模块加载:根据模块的配置信息,Prism框架将逐个加载模块。加载过程会创建模块的实例,并在应用程序中进行初始化。 5. 模块初始化:一旦模块被加载,Prism框架将调用模块的初始化方法,用于注册模块的服务、视图等。 通过这种方式,应用程序可以使用Prism框架来实现模块化的架构。模块可以根据需求进行动态加载和卸载,以实现更好的应用程序可扩展性和维护性。 总结起来,WPF Prism模块加载的过程涉及定义模块、配置模块目录、模块发现、模块加载和模块初始化等步骤。通过这些步骤,开发人员可以构建出可扩展、模块化的WPF应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值