JS中模块化管理

本文介绍了Javascript的发展,最初它是简单的脚本语言,随着Google v8推出性能提升,NodeJS诞生使其可处理复杂业务。重点讲述了JS中的两种模块化:CommonJS主要用于NodeJS,浏览器需Webpack处理;ESModule在ES6中提出,浏览器支持ES6即可用,NodeJS添加配置也能使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从Javascript这个语言的命名就可以看出,最初他是脚本语言,脚本语言的特点肯定就是简单,像我们常用 Shell 脚本,主要就是实现一些简单的功能,不需要处理复杂的业务逻辑。所以Javascript 诞生之初就是网页的 Shell,据说 Javascript 是用了10天的时间开发出来的,作者肯定也没想到 Javascript 如今的发展规模,社区规模。在 Chrome 出来之前,Javascript 的性能还是比较弱,只是做一些 Dom 的操作。随着这个 Google v8 的推出,Javascript 性能有了飞速提升,NodeJS 诞生了,可以用 Javascript 写后台业务逻辑了,而且性能还不错。可以处理复杂业务,要处理复杂业务,那就一定要用到模块化,像Java、Python 语言一些样。JS 中主要的模块化有两种,CommonJS 和 ESModule,CommonJS 主要是 NodeJS 在用,浏览器中支持CommonJS需要试用 Webpack做处理。浏览器只要支持 ES6,都支持 ESModule,ES6中提出的模块化方案,我个人感觉 很像 CommonJS, 在 CommonJS 的基础上加了一些新的特性,例如异步加载,下面我们来看看这两种模块化是如何试用的:

CommonJS

首先,我们创建两个js 文件,一个主文件 main.js,一个模块文件,我们这里起名为 mod1.js。mod1.js 文件中有两个函数。main.js 依赖 mod1.js 中定义的这两个函数。首先在 mod1.js 中需要将定义的两个导出来,通过module.exports进行导出。

//mod1.js
const mod1Fun1 = () => console.log('fun1----')
const mod1Fun2 = () => console.log('fun2----')

module.exports = { mod1Fun1, mod1Fun2 }

导出之后,需要在 main.js 导入,通过 require 关键字进行导入。如果是多个函数需要JS的结构把对应的函数解析出来。

// main.js
({ mod1Fun1, mod1Fun2 } = require('./mod1.js'))

const testFunction = () => {
    console.log('Im the main function')
    mod1Fun1()
    mod1Fun2()
}

testFunction()

在命令行通过 node main.js 直接运行。

ESModule

需要对mod1.js 和 main.js 进行改造,require 关键字改为 import 关键字引入 mod1 中的方法,根据 mod1 中 export 的不同方式,import 的方式也有所不同。
1.直接export 方法变量,import 时候解构,也可以试用别名

// main.js
import {mod1Fun1 as a, mod1Fun2} from './mod1.js'


const testFunction = () => console.log('Im the main function')

document.getElementById('isAlive').addEventListener('click', () => a())
document.getElementById('isRolling').addEventListener('click', () => mod1Fun2())

testFunction()
//mod1.js
export const mod1Fun1 = () => console.log('fun1----')
export const mod1Fun2 = () => console.log('fun2----')

// export { mod1Fun1, mod1Fun2 } 直接 export 也可以

2.Export default, import 时可以随便起名字

// main.js
import f1 from './mod1.js'


const testFunction = () => console.log('Im the main function')

document.getElementById('isAlive').addEventListener('click', () => f1.mod1Fun1())
document.getElementById('isRolling').addEventListener('click', () => f1.mod1Fun2())

testFunction()
//mod1.js
 const mod1Fun1 = () => console.log('fun1----')
 const mod1Fun2 = () => console.log('fun2----')

export  default { mod1Fun1, mod1Fun2 }

ES6 的JS 模块化nodeJS 也是支持的,将 package.json 加上 “type”: “module”,这样 nodejs 中也可以试用 ESModule了,通过 import/export 导入导出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值