ES6 —— 模块化

1)引入

        js代码有3种方式把js脚本写在页面上:

        1.行内式 : js引擎要去执行的标签的某些属性(事件)中

<button onclick="javascript:var a=20;alert(a)">按钮</button>

        2.嵌入式 :

<a href="javascript:void(0)">链接</a>

         3.导入式: src的地址时一个js的路径  会加载js编码(jsonp)

<script src="./test.js"></script>

2)概述

  • ES6 引入了模块化,其设计思想是在编译时就能确定模块的依赖关系,以及输入和输出的变量。

  • ES6 的模块化分为导出(export)导入(import)两个模块。

3)特点

  • ES6 的模块自动开启严格模式,不管你有没有在模块头部加上 use strict;

  • 模块中可以导入和导出各种类型的变量,如函数,对象,字符串,数字,布尔值,类等。

  • 每个模块都有自己的上下文,每一个模块内声明的变量都是局部变量,不会污染全局作用域。

  • 每一个模块只加载一次(是单例的), 若再去加载同目录下同文件,直接从内存中读取。

4)export导出

  • default关联使用,并且一个js模块中只能有一个export default语句,单独写在一个js文件中

var obj = {name:"xiaozhang"}

export var num = 100
export function tool() {return obj}

// 单独导出的 必须用导出的表示符来按需导入,可以有多个单独导出
// 默认导出  在这个文件中只能有一个或者0个

var a = 20
var arr = [1,2,3,4]
var fm = () => {}
export default {a,arr,fm}

5)import导入

  • from关联使用,此时script标签的type必须设置为module

  • 单例模式:多次重复执行同一句 import 语句,那么只会执行一次,而不会执行多次。import 同一模块,声明不同接口引用,会声明对应变量,但只执行一次 import

<!-- type="module"  因为js读取外部文件然后编码进来  需要babel软件来解码 -->
    <script type="module">
        import x,{num,tool} from "./src/test.js"
        console.log(num);
        console.log(tool);

        console.log(x);
        console.log(x.arr);

    </script>

 

### JavaScript ES6 模块化概述 ES6模块化是现代JavaScript开发的重要组成部分,它提供了一种标准化的方式来组织和管理代码[^1]。通过将大型复杂的应用程序分解成更小、独立的模块,开发者可以显著提升代码的可读性、可维护性和可重用性。 #### 基本概念 ES6模块的核心理念在于导出(`export`)和导入(`import`)。这种机制允许开发者定义哪些部分可以从其他文件访问,并指定如何从外部获取所需的函数、变量或类[^3]。 - **导出功能** 可以通过两种方式实现导出:命名导出和默认导出。 ```javascript // 导出单个对象 (命名导出) export const myFunction = () => { console.log('This is a named function'); }; // 默认导出 export default class MyClass { greet() { console.log('Hello from the default exported class!'); } }; ``` - **导入功能** 对应于上述导出形式,可以通过如下方式进行导入: ```javascript // 导入命名导出的内容 import { myFunction } from './module.js'; // 导入默认导出的内容 import MyDefaultClass from './module.js'; ``` #### 循环依赖处理 在实际项目中可能会遇到循环依赖的情况,即A模块依赖B模块的同时,B模块也反过来依赖A模块。ES6模块系统采用了一种特殊的解析策略——延迟执行,从而有效解决了这一问题[^2]。 #### 性能优化 为了进一步改善模块加载速度并减少不必要的资源消耗,在构建工具的支持下还可以利用树摇算法移除未使用的代码片段,最终达到减小打包体积的目的[^4]。 --- ### 实际应用场景举例 假设有一个简单的计算器应用程序,其中包含加法器逻辑以及主入口点: **addition.js 文件内容如下所示:** ```javascript // 定义一个用于相加操作的方法 const addNumbers = (a, b) => a + b; // 将该方法作为命名导出示例公开出去供其它地方调用 export { addNumbers }; ``` **main.js 文件则负责组合各个组件完成整体业务流程:** ```javascript // 引入之前创建好的 addition 功能模块 import { addNumbers } from './addition.js'; console.log(addNumbers(5, 7)); // 输出结果为 12 ``` 以上例子展示了如何运用基本的 `export/import` 结构来分离关注点,使整个项目的结构更为清晰合理。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

z_小张同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值