Webpack学习笔记 01、Module模块系统(二)

简介: Webpack学习笔记 01、Module模块系统(二)

四、Module的注意事项


4.1、模块顶层的this指向


结论:在模块中,顶层的this指向undefined,这就能够很好的解决模块化的问题!


示例:


2.js


console.log(this);


exer.html


<!-- 对于引入模块的需要设置type="module" -->
<script type="module">
    // 注意了若是引入的模块中使用了export default,那么就必须先引入该expert default的值
    import './modules/2.js';
</script>




4.2、import关键字和import()函数


import关键字的使用(自动提升,但是不能够进行逻辑判断执行引入)


import:具有提升效果,会将该语句提升到模块的头部,率先执行。也就是说import执行的时候,代码还没有执行。


import与export命令只能在模块的顶层不能在代码块中执行。

示例:


2.js


console.log(`模块中的开始执行......,输出this为:${this}`);


exer.html


<!-- 对于引入模块的需要设置type="module" -->
<script type="module">
    console.log("hello");
    console.log("changlu!");
    //故意将引入模块放在前面两句console.log()后输出
    import './modules/2.js';
</script>



缺点:对于我们想要适配pc端或是手机端时,选择哪个来进行引入仅仅使用import关键字是不够的,因为一旦使用import关键字的话就会直接进行执行,而不是根据逻辑来进行判断引入哪个js文件!下面是示例实际上是不允许的:


<!-- 对于引入模块的需要设置type="module" -->
<script type="module">
    const pc = true;
    //是不允许以下这么进行逻辑判断引入js的!会报错:Uncaught SyntaxError: Unexpected string
    if (pc) {
        import './modules/pc.js';
    } else {
        import './modules/mobile.js'
    }
</script>



import()函数


import():使用该函数能够配合逻辑判断引入,而不是像import一样具有提升效果直接引入,弥补了import关键字的缺点!


示例:


<!-- 对于引入模块的需要设置type="module" -->
<script type="module">
    const pc = true;
    //通过使用import()函数就能够进行逻辑判断后导入指定的js模块
    if (pc) {
        import('./modules/pc.js').then(module => { console.log(module) });
    } else {
        import('./modules/mobile.js').then(module => { console.log(module) });
    }
</script>




4.3、导入导出的复合写法


介绍


复合写法:就是说一条语句能够既导入又导出的操作!缺点就是不能对导出的变量执行任何操作!!!


用途:就是达到了中转站的效果!


注意点:复合语句中export后的值无论是单个还是多个必须是{}包裹,否则会报语法错误,并且不能执行对导出的变量进行任何操作!



示例


mobile.js


export const num = 10;


pc.js


//export的复合写法
export { num } from './mobile.js'
//复合写法相当于执行了引入与导出两步操作
//①import { num } from './mobile.js'
//②export { num } from './mobile.js'
//注意:不能有任何对num的操作,例如输出、修改等等操作
// console.log(num);


exer.html


<!-- 对于引入模块的需要设置type="module" -->
<script type="module">
    import { num } from './modules/pc.js'
    console.log(num);
</script>




五、实际应用


一般的话js代码都是基于对象来进行编写的,一般将一个类或者常量或者说是单独的功能模块都使用Module模块系统来进行抽离,有利于代码的可扩展性!!!


比如说抽离的内容如:常量以及默认参数一块、某个设置默认参数对象、类或者说单独的功能模块我们都可以进行拆分!!!


相关文章
|
4月前
|
JavaScript 前端开发
Webpack ECMAScript 模块
Webpack ECMAScript 模块
27 0
|
4月前
|
JSON 监控 测试技术
《Webpack5 核心原理与应用实践》学习笔记-> 提升插件健壮性
《Webpack5 核心原理与应用实践》学习笔记-> 提升插件健壮性
53 0
|
4月前
|
缓存 前端开发 API
《Webpack5 核心原理与应用实践》学习笔记-> webpack插件开发基础
《Webpack5 核心原理与应用实践》学习笔记-> webpack插件开发基础
60 0
|
4月前
|
前端开发 JavaScript 测试技术
《Webpack5 核心原理与应用实践》学习笔记-> webpack的loader运行与调试
《Webpack5 核心原理与应用实践》学习笔记-> webpack的loader运行与调试
34 0
|
4月前
|
存储 缓存 JavaScript
《Webpack5 核心原理与应用实践》学习笔记-> webpack的loader开发技巧
《Webpack5 核心原理与应用实践》学习笔记-> webpack的loader开发技巧
43 1
|
4月前
|
缓存 监控 JavaScript
《Webpack5 核心原理与应用实践》学习笔记-> webpack极致性能优化
《Webpack5 核心原理与应用实践》学习笔记-> webpack极致性能优化
32 1
|
4月前
|
前端开发 JavaScript
《Webpack5 核心原理与应用实践》学习笔记-> webpack代码压缩
《Webpack5 核心原理与应用实践》学习笔记-> webpack代码压缩
44 0
|
4月前
|
监控 IDE 开发工具
《Webpack5 核心原理与应用实践》学习笔记-> webpack性能优化技巧
《Webpack5 核心原理与应用实践》学习笔记-> webpack性能优化技巧
62 0
|
4月前
|
JavaScript 前端开发 API
《Webpack5 核心原理与应用实践》学习笔记-> webpack并行构建
《Webpack5 核心原理与应用实践》学习笔记-> webpack并行构建
64 0
|
4月前
|
前端开发 测试技术
《Webpack5 核心原理与应用实践》学习笔记-> webpack核心配置结构
《Webpack5 核心原理与应用实践》学习笔记-> webpack核心配置结构
55 1