当前位置:网站首页 > 前端开发 > 正文

前端工程化概念(前端工程化做了哪些东西,怎么做)



前端工程化是使用软件工程的方法来解决前端的开发流程中模块化、组件化、规范化、自动化的问题,其主要目的为了提高效率和降低成本。

Web业务日益复杂化和多元化,现在随便找个前端项目,都已经不是过去的拼个页面+搞几个jQuery插件就能完成的了。代码量可能从以前的千行到如今的万行,甚至十万行。人数从一个人变成了N个一起协作开发。所以在业务上,我们要去思考这些复杂和多元的场景,而产生的问题,如:

  • 如何扩展javascript、html、css本身的语言能力
  • 如何进行高效的多人协作
  • 如何解决功能复用和变更问题
  • 如何保证项目的规范性
  • 如何实现重复的劳动简单化

要实现前端工程化,就要解决以上的几个问题。

(1)TypeScript

typeScript是javascript的超集,扩展了语法(类Classes,接口interfaces,模块Modules,类型注解Type annotaions,编译时类型检查Compiletime type checking,Arrow函数(类似c#的Lambda))使得JavaScript变得更强大,对于面向对象编程更好的支持。

(2)CSS预处理器:SASS 、LESS、 Stylus。

它们基于CSS扩展了一套属于自己的DSL(Domain Specific Language领域特定语言 ),来解决我们书写CSS时难以解决的问题:

  • 语法不够强大,比如无法嵌套书写导致模块化开发中需要书写很多重复的选择器;
  • 没有变量和合理的样式复用机制,使得逻辑上相关的属性值必须以字面量的形式重复输出,导致难以维护。

所以这就决定了CSS预处理器的主要目标:提供CSS缺失的样式层复用机制、减少冗余代码,提高样式代码的可维护性。

模块化

简单来说,模块化就是将一个大文件拆分成相互依赖的小文件,再进行统一的拼装和加载。只有这样,才有多人协作的可能。

JS的模块化

在ES6之前,JavaScript一直没有模块系统,这对开发大型复杂的前端工程造成了巨大的障碍。对此社区制定了一些模块加载方案,如CommonJS、AMD和CMD等,某些框架也会有自己模块系统,比如Angular1.x。现在ES6已经在语言层面上规定了模块系统,完全可以取代现有的CommonJS和AMD规范,而且使用起来相当简洁,并且有静态加载的特性。

规范确定了,然后就是模块的打包和加载问题:

  • 用Webpack+Babel将所有模块打包成一个文件同步加载,也可以打成多个chunk异步加载;
  • 用SystemJS+Babel主要是分模块异步加载;
  • 用浏览器的<script type="module">加载

目前Webpack远比SystemJS流行。Safari已经支持用type="module"加载了。

CSS的模块化

命名约定:即提供一种命名的标准,来解决冲突,常见的标准有:

这种问题就更普遍了,一些重复的样式值总是不断的出现在css代码中,维护起来极其困难。

比如一个网站的主题颜色改变,这些颜色会充斥到背景、文字、边框中,一旦颜色调整,就是一个非常大的工程。

为了解决复用问题,引入组件化的概念。何以提高代码的复用性。

组件化

首先,组件化≠模块化。好多人对这两个概念有些混淆。

模块化只是在文件层面上,对代码或资源的拆分

而组件化是在设计层面上,对UI(用户界面)的拆分。从UI拆分下来的每个包含模板(HTML)+样式(CSS)+逻辑(JS)功能完备的结构单元,我们称之为组件。

其实,组件化更重要的是一种分治思想。页面上所有的东西都是组件。页面是个大型组件,可以拆成若干个中型组件,然后中型组件还可以再拆,拆成若干个小型组件,小型组件也可以再拆,直到拆成DOM元素为止。DOM元素可以看成是浏览器自身的组件,作为组件的基本单元。

模块化和组件化确定了开发模型,而这些东西的实现就需要规范去落实。

规范化其实是工程化中很重要的一个部分,项目初期规范制定的好坏会直接影响到后期的开发质量。

比如:

  • 目录结构的制定
  • 编码规范(eslint)
  • 前后端接口规范(swagger)
  • 文档规范(
  • 组件管理
  • Git分支管理
  • Commit描述规范(commitlint)
  • 定期CodeReview
  • 视觉图标规范

为什么要借助自动化工具呢?

在浏览器端,开发时态(devtime)和运行时态(runtime)的侧重点不一样

开发时态,devtime:

1. 模块划分越细越好
2. 支持多种模块化标准
3. 支持npm或其他包管理器下载的模块
4. 能够解决其他工程化的问题(模块化、组件化、规范化)

运行时态,runtime:

1. 文件越少越好
2. 文件体积越小越好
3. 代码内容越乱越好
4. 所有浏览器都要兼容
5. 能够解决其他运行时的问题,主要是执行效率问题

这种差异在小项目中表现的并不明显,可是一旦项目形成规模,就越来越明显,如果不解决这些问题,前端项目形成规模只能是空谈

解决办法

既然开发时态和运行时态面临的局面有巨大的差异,因此,我们需要有一个工具,这个工具能够让 开发者专心的在开发时态写代码,然后利用这个工具将开发时态编写的代码转换为运行时态需要的东西。

这样的工具,叫做自动化构建工具
























用网上比较流行的话来说就是,前端工程化的很多脏活累活都应该交给自动化工具来完成。现在比较流行的前端自动化构建工具有gulp、webpack、vite

在之后的章节会详细讲解webpack的基本使用和构建原理,敬请期待~

到此这篇前端工程化概念(前端工程化做了哪些东西,怎么做)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 前端跨域解决方案cors(前端跨域解决方案有哪些)2025-11-28 23:54:08
  • 前端工程化解决方案(前端 工程化)2025-11-28 23:54:08
  • 前端埋点怎么实现快捷键(前端埋点怎么实现快捷键操作)2025-11-28 23:54:08
  • 前端跨域方式(前端跨域的常用解决方式)2025-11-28 23:54:08
  • 跨域是什么,如何解决跨域(跨域是什么,如何解决跨域前端)2025-11-28 23:54:08
  • 前端工作面试(前端工作面试都有面试题吗)2025-11-28 23:54:08
  • 前端工程化解决方案(前端工程化实战)2025-11-28 23:54:08
  • 前端工程化的好处(前端工程化的意义)2025-11-28 23:54:08
  • 重绘和回流面试题(前端面试 回流和重绘)2025-11-28 23:54:08
  • 前端工程化的理解(前端工程化的理解是什么)2025-11-28 23:54:08
  • 全屏图片