前端工程中的模块化&组件化

Dec 13, 2021|Oct 23, 2023
Asuhe
Asuhe
type
status
date
slug
summary
tags
category
icon
password

ES6模块化

在ES6模块化规范中,每个文件都是一个模块。它的语法只能在浏览器端运行,还要借助BabelBrowserify依次编译代码才能在浏览器端运行。

默认暴露

默认暴露暴露出去的是一个对象。默认暴露必须用一个变量去统一接收
默认暴露只能暴露一次

分别暴露

分别暴露也叫部分暴露,同样是暴露出去一个对象。它在最终暴露的时候,把所有暴露的变量自动封装到对象当中

统一暴露

统一暴露就是部分暴露的一个简便写法,方便程序员少写一些export关键字。它暴露出去的也是一个对象。但它暴露出去的对象并没有被重新包装,暴露出去的对象就是它原本的那个对象

总结

部分暴露和默认暴露方式可以混合使用。

CommonJS模块化

CommonJS模块化的规范里,每个文件都是一个模块。用它模块化的代码既可以在服务端运行也可以在浏览器端运行。但在浏览器端运行前需要用Browserify编译一遍。

基本语法

在暴露语法中若module.exportsexports指向的是不同的对象,则引入模块的得到的是最终module.exports所指向的那个对象,而exports只是一个封装起来的语法糖。
exportsmodule.exports的关系图
notion image
exports和module.exports的关系

组件化

组件就是一个html、css、js的代码集合。它可以复用代码,简化项目的编码,提高运行效率。在组件注册的语法中实际上是把一个组件文件暴露出去的变成了一个构造组件实例对象的构造函数。每当我们使用一个组件标签的时候,在内存里就用构造函数new出了一个实例对象。
一文搞定Javascript中的原型与原型链Vue组件间通信总结