前端研发链路之构建

简介: 本文首发于微信公众号“前端徐徐”,作者徐徐探讨了前端研发链路中的构建过程。文章介绍了构建器、JavaScript编译器和CSS编译器的作用及常见工具,详细解析了它们如何协同工作,提高开发效率和项目可维护性。适合前端开发者阅读,帮助理解现代前端构建体系。

本文首发微信公众号:前端徐徐。

大家好,我是徐徐。今天跟大家聊聊前端研发链路中的构建。

前言

我们每天都在说构建构建,你真的了解前端构建吗?

在现代前端开发中,构建过程扮演着至关重要的角色。随着 Web 应用变得越来越复杂,直接编写原生 HTML、CSS 和 JavaScript 已经不能满足开发需求,我们需要工程化的体系去构建前端应用。构建过程通过自动化工具链,将开发者的源代码转换为高效、兼容性好的生产代码。

接下来,我们就一起来聊一下构建过程中的三大主力:构建器、JavaScript 编译器和 CSS 编译器。看看它们都是什么来头,能耐如何,适合在哪些场合大显身手,以及他们是如何合作的。

构建器

随着前端项目规模的扩大,手动管理资源和依赖变得越来越困难。构建器应运而生,它们自动化了许多重复性任务,如文件合并、压缩、编译预处理器语言等,大大提高了开发效率和项目可维护性。

常见的构建器有以下几种:

gulp

基于 Node.js 的流式构建系统。

  • 适合处理重复性任务,如文件压缩、图片优化
  • 项目结构简单,主要需要自动化工作流的项目

Webpack

强大的静态模块打包工具。

  • 复杂的单页应用(SPA)或多页应用
  • 需要代码分割、按需加载的大型项目
  • 使用现代 JavaScript 框架(如 React、Vue)的项目

snowpack

专为现代Web应用设计的快速构建工具。

  • 使用 ES 模块的现代 Web 应用
  • 追求快速开发体验的项目
  • 不需要复杂打包配置的中小型项目

vite

下一代前端构建工具。

  • 需要极快开发服务器启动的项目
  • 使用 Vue、React 等现代框架的应用
  • 追求生产环境优化的项目

JavaScript 编译

JavaScript 语言在不断发展,但浏览器对新特性的支持往往滞后。JavaScript 编译器允许开发者使用最新的语言特性,同时确保代码在各种环境中的兼容性。此外,随着 TypeScript 等静态类型语言的兴起,编译器也承担了类型检查的重任。

常见的 js 编译器有以下几种:

tsc (TypeScript Compiler)

TypeScript 官方编译器。

  • 大型、复杂的 JavaScript 项目
  • 需要静态类型检查以提高代码质量的项目
  • 团队协作开发,需要更好的代码提示和重构支持

babel

JavaScript 编译器,能将 ECMAScript 2015+ 代码转换为向后兼容的 JavaScript 版本。

应用场景:

  • 需要使用最新 JavaScript 特性但又要兼容旧版浏览器的项目
  • 需要使用实验性 JavaScript 特性的项目
  • 配合 React 等库使用 JSX 语法的项目

esbuild

极快的 JavaScript 打包器和压缩器。

应用场景:

  • 对构建速度有极高要求的项目
  • 作为其他构建工具的底层编译器
  • 简单的打包需求,不需要复杂转换的项目

CSS 编译

随着项目复杂度的增加,原生 CSS 的局限性日益明显。CSS 预处理器和后处理器的出现,为开发者提供了更强大的样式编写能力,如变量、嵌套规则、混合(Mixins)等,同时也提供了模块化和代码复用的解决方案。

常见的 CSS 编译器有以下几种:

Sass

成熟、稳定且功能强大的 CSS 扩展语言。

应用场景:

  • 大型、复杂的样式系统
  • 需要使用高级特性如变量、嵌套、混合、函数的项目
  • 团队已经熟悉 Sass 语法的项目

Less

向后兼容 CSS 的语言扩展。

应用场景:

  • 需要简单 CSS 预处理器的项目
  • 从 CSS 迁移到预处理器的过渡项目
  • 习惯 JavaScript 风格语法的开发者

Stylus

富有表现力、动态和健壮的 CSS 预处理器。

应用场景:

  • 喜欢简洁语法的开发者
  • 需要高度定制化样式语言的项目
  • Node.js 项目,因为 Stylus 是用 Node.js 编写的

PostCSS

用 JavaScript 转换 CSS 的工具。

应用场景:

  • 需要自定义 CSS 处理流程的项目
  • 使用未来 CSS 特性并需要兼容性处理的项目
  • 需要优化和压缩 CSS 的项目

如何协作

了解完了这三大主力,你可能会问:"它们怎么配合工作的呢?" 让我们来看看这个前端"铁三角"是如何协同作战的。

构建器:总导演

想象一下,构建器就像是一个电影导演。它负责整个"电影制作"过程,协调各方,确保最终成果的质量。

  1. 统筹全局:构建器定义了整个构建过程的流程。它决定什么时候该做什么,比如先编译 JavaScript,还是先处理 CSS。
  2. 任务分配:它会把具体的编译任务分配给相应的工具。比如,遇到 .ts 文件就交给 TypeScript 编译器,遇到 .scss 文件就交给 Sass 处理。
  3. 资源整合:最后,构建器还负责把所有处理过的资源整合在一起,可能还会进行压缩、优化等工作。

JavaScript编译器:语言翻译官

JavaScript 编译器就像是剧组里的翻译。它负责把"外语"(比如 TypeScript 或最新的 ECMAScript)翻译成所有"观众"(浏览器)都能听懂的语言。

  1. 代码转换:它会将新版本的 JavaScript 或 TypeScript 代码转换为兼容性更好的 JavaScript 版本。
  2. 语法检查:在转换过程中,它还能帮忙找出一些潜在的错误。
  3. 特性垫片:对于一些新特性,它会添加必要的 polyfill,确保代码在旧环境中也能正常运行。

CSS编译器:造型师

CSS 编译器就像是剧组的造型师。它让你的样式表变得更漂亮,更易管理。

  1. 预处理:它会处理那些浏览器原生不支持的 CSS 扩展语法,比如变量、嵌套规则等。
  2. 后处理:有些 CSS编译器(如 PostCSS)还能进行后处理,比如自动添加浏览器前缀、压缩 CSS 等。
  3. 模块化:它还能帮助你更好地组织 CSS,实现样式的模块化和重用。

总的来说,这三个角色就像是一个默契十足的团队。构建器负责全局调度,JavaScript 编译器和 CSS编译器各司其职,专注于自己的领域。它们通力合作,最终为我们带来高效、现代、兼容性好的前端应用。

总结

前端构建过程是现代 Web 开发不可或缺的一环。通过使用适当的构建器、JavaScript 编译器和 CSS 预处理器,开发者可以显著提高开发效率,同时确保最终产品的性能和兼容性。选择合适的工具取决于项目的具体需求、团队的技术栈和开发习惯。

随着 Web 技术的不断发展,构建工具也在持续演进。开发者需要不断学习和适应新工具,以保持竞争力。同时,理解这些工具的工作原理和适用场景,对于优化开发流程、提高代码质量和项目可维护性至关重要。

在实际开发中,可能需要综合使用多种工具来满足复杂的项目需求。例如,使用 Webpack作 为主要构建工具,配合 Babel 进行 JavaScrip t转译,同时使用 Sass 处理样式,最后通过 PostCSS 进行后处理。通过这种组合,可以充分发挥各个工具的优势,构建出高效、现代化的 Web 应用。

相关文章
|
2天前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
1529 4
|
18小时前
|
编解码 Java 程序员
写代码还有专业的编程显示器?
写代码已经十个年头了, 一直都是习惯直接用一台Mac电脑写代码 偶尔接一个显示器, 但是可能因为公司配的显示器不怎么样, 还要接转接头 搞得桌面杂乱无章,分辨率也低,感觉屏幕还是Mac自带的看着舒服
|
29天前
|
弹性计算 人工智能 架构师
阿里云携手Altair共拓云上工业仿真新机遇
2024年9月12日,「2024 Altair 技术大会杭州站」成功召开,阿里云弹性计算产品运营与生态负责人何川,与Altair中国技术总监赵阳在会上联合发布了最新的“云上CAE一体机”。
阿里云携手Altair共拓云上工业仿真新机遇
|
6天前
|
人工智能 Rust Java
10月更文挑战赛火热启动,坚持热爱坚持创作!
开发者社区10月更文挑战,寻找热爱技术内容创作的你,欢迎来创作!
525 20
|
2天前
|
存储 SQL 关系型数据库
彻底搞懂InnoDB的MVCC多版本并发控制
本文详细介绍了InnoDB存储引擎中的两种并发控制方法:MVCC(多版本并发控制)和LBCC(基于锁的并发控制)。MVCC通过记录版本信息和使用快照读取机制,实现了高并发下的读写操作,而LBCC则通过加锁机制控制并发访问。文章深入探讨了MVCC的工作原理,包括插入、删除、修改流程及查询过程中的快照读取机制。通过多个案例演示了不同隔离级别下MVCC的具体表现,并解释了事务ID的分配和管理方式。最后,对比了四种隔离级别的性能特点,帮助读者理解如何根据具体需求选择合适的隔离级别以优化数据库性能。
186 2
|
9天前
|
JSON 自然语言处理 数据管理
阿里云百炼产品月刊【2024年9月】
阿里云百炼产品月刊【2024年9月】,涵盖本月产品和功能发布、活动,应用实践等内容,帮助您快速了解阿里云百炼产品的最新动态。
阿里云百炼产品月刊【2024年9月】
|
21天前
|
存储 关系型数据库 分布式数据库
GraphRAG:基于PolarDB+通义千问+LangChain的知识图谱+大模型最佳实践
本文介绍了如何使用PolarDB、通义千问和LangChain搭建GraphRAG系统,结合知识图谱和向量检索提升问答质量。通过实例展示了单独使用向量检索和图检索的局限性,并通过图+向量联合搜索增强了问答准确性。PolarDB支持AGE图引擎和pgvector插件,实现图数据和向量数据的统一存储与检索,提升了RAG系统的性能和效果。
|
9天前
|
Linux 虚拟化 开发者
一键将CentOs的yum源更换为国内阿里yum源
一键将CentOs的yum源更换为国内阿里yum源
486 5
|
8天前
|
存储 人工智能 搜索推荐
数据治理,是时候打破刻板印象了
瓴羊智能数据建设与治理产品Datapin全面升级,可演进扩展的数据架构体系为企业数据治理预留发展空间,推出敏捷版用以解决企业数据量不大但需构建数据的场景问题,基于大模型打造的DataAgent更是为企业用好数据资产提供了便利。
318 2
|
5天前
|
XML 安全 Java
【Maven】依赖管理,Maven仓库,Maven核心功能
【Maven】依赖管理,Maven仓库,Maven核心功能
200 2