前端工程化之:ES Module

标准类型:官方标准

支持环境:node,浏览器

依赖类型:静态依赖,动态依赖

如何导出

 ES Module 分为两种导出方式:

  • 具名导出(普通导出):可以导出多个
  • 默认导出:只能导出一个

一个模块可以同时存在两种导出方式,最终会合并为一个对象导出。

一、html中引入

 html 文件 script 标签中 type="module" 是指将引入的 js 文件当成一个模块进行引入。

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

二、导出方式 

具名导出默认导出 ESModule.js 

export const a = 1 // 具名导出,常用
export function isOdd(a){
    return a % 2 !== 0
} // 具名导出,常用
export function sum(a,b){
    return a + b
} // 具名导出,常用

const b = 2
export { b } // 具名,名称与值都为b
const k = 10
export { k as temp } // 具名,名称为temp,值为k

// export default 3 // 默认导出,常用
// export default function c(){} // 默认导出,常用

// const d = 4
// export {d as default} // 默认

const e = 1,f = 2,g = 3
export {e,f,g as default} // 基本 + 默认

// 导出对象结果
/**
 * {
 *     a:1,
 *     isOdd:fn,
 *     sum:fn,
 *     b:2,
 *     temp:10,
 *     e:1,
 *     f:2,
 *     default:3
 * }
 */

三、导入方式

1. 静态导入 :

 静态依赖:代码运行前就要分析出依赖关系。

// 仅运行一次该模块,不导入任何内容
import "模块路径"
// 常用,导入属性 a、b,放到变量a、b中。a->a,b->b
import { a,b } from "模块路径"
// 常用,导入属性default,放入变量c中。default->c
import c from "模块路径"
// 常用,default->c,a->a,b->b,default需要写在前面
import c,{a,b} from "模块路径"
// 常用,将模块对象放入到变量obj中
import * as obj from "模块路径"

// 导入属性a、b,放到变量temp1、temp2 中
import {a as temp1,b as temp2} from "模块路径"
// 导入属性default,放入变量a中,default是关键字,不能作为变量名,必须定义别名
import {default as a} from "模块路径"
//导入属性default、b,放入变量a、b中
import {default as a,b} from "模块路径"

注意:

静态导入的代码必须为在代码顶端,也不可放入代码块中。

另外,静态导入的代码绑定的符号是常量不可更改

例1: index.js 

import {isOdd,sum as add} from "./ESModule.js"
const result = add(1,2)
console.log(result) // 3

例2: ESModule.js 

export default {
    sum(a,b){
        return a+b
    },
    isOdd(a){
        return a % 2 !== 0
    }
}

  index.js 

import math from "./ESModule.js"

const result2 = math.isOdd(4)

console.log(result2) // false

2. 动态导入 :

 动态依赖:代码运行过程中调用才会导入,分析依赖关系。

import("模块路径") // 动态导入,返回一个Promise,完成时的数据为模块对象

例: index.js 

// 动态导入1
setTimeout(()=> {
    // 返回一个promise
    import("./ESModule.js").then((math)=> {
        const result2 = math.isOdd(4)
        console.log(result2) // false
    })
},1000)

// 动态导入2
setTimeout(async()=>{
    const math = await import("./ESModule.js")
    const result1 = math.sum(1,2)
    console.log(result1) // 3
},2000)

  • 14
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
React前端工程化是指在React项目开发过程中,通过一系列的工具和规范来提高开发效率、代码质量和项目可维护性的一种方法。下面是React前端工程化的几个重要方面: 1. 代码组织:合理的组织项目代码结构,可以按照功能或模块进行划分,使得代码易于维护和扩展。 2. 模块化开发:使用ES6的模块化语法,将项目拆分为多个独立的模块,每个模块负责特定的功能,提高代码的可复用性和可维护性。 3. 构建工具:使用构建工具(如Webpack、Parcel等)来自动化构建过程,包括代码编译、打包、压缩等,提高开发效率。 4. 组件化开发:将页面拆分为多个可复用的组件,每个组件负责特定的功能,通过组合不同的组件来构建页面,提高代码的可维护性和可复用性。 5. 状态管理:使用状态管理库(如Redux、Mobx等)来管理应用的状态,使得状态变更可追踪、可预测,方便进行状态共享和数据流控制。 6. 自动化测试:使用自动化测试工具(如Jest、Enzyme等)编写单元测试、集成测试和端到端测试,保证代码质量和功能的稳定性。 7. 代码规范:使用代码规范工具(如ESLint、Prettier等)对代码进行静态检查和格式化,统一团队的代码风格,提高代码质量和可读性。 8. 持续集成与部署:使用持续集成工具(如Jenkins、Travis CI等)将代码自动构建、测试和部署到服务器,实现快速迭代和持续交付。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

猛扇赵四那半好嘴

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

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

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

打赏作者

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

抵扣说明:

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

余额充值