网站大量收购闲置独家精品文档,联系QQ:2885784924

讲如何合理搭建前端项目海量资源.pdfVIP

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

本文由简悦SimpRead转码,原文地址

通过上一的学习,我们分析了前端构建工具webpack的底层原理,在理解原理再来探索构建

工具的具体应用——如何合理前端项目。当然,前端项目并不只是使用构建工具这么简单,本

从项目组织、代码规范2个方面来进行分析。

项目组织

考虑这样一个场景,在开发项目projectA的时候,发现其中的codeX也可以用于项目projectB,最简

单直接的处理方式就是把codeX的代码直接到projectB下,按照“三次原则”(三次原则是指同一

段代码被使用到3次时再考虑抽象)这种处理方式没什么问题。但如果此时项目projectC和projectD

也会用到codeX,那么这种方式起来会很麻烦。

有经验的工程师会想到将codeX发布成模块,作为依赖模块引入所需的项目中。此时对于codeX会涉

及两种组织代码的方式:multirepo和monorepo。

multirepo

multirepo就是将项目中的模块拆分出来,放在不同的仓库中进行独立管理。例如,用于Node.js的

Web框架Koa,它依赖的模块koa-convert和koa-compose分别拆分成了两个仓库进行管理。

这种方式的好处是保证仓库的独立性,方便不同团队对应的仓库代码,可以根据团队情况选择擅长

的工具、工作流等。

但这种方式也会存在一些问题,具体如下。

开发调试及版本更新效率低下。比如在仓库A用到的仓库B中发现了一个bug,就必须到仓库B

里修复它、打包、发版本,然后再回到仓库A继续工作。在不同的仓库间,你不仅需要处理不同

的代码、工具,甚至是不同的工作流程;还有,你只能去问这个仓库的人,能不能为你做出改

变,然后等着他们去解决。

团队技术选型分散。不同的库实现风格可能存在较大差异(比的库依赖Vue,有的依赖

React),还有可能会采用不同的测试库及校验规则,起来比较。

而monorepo方式恰好就能解决这些问题。

monorepo

monorepo就是将所有相关的模块放在同一个项目仓库中。这种方式在管理上会更加方便,项目所有代

码可以使用统一的规范及构建、测试、发布流程。

很多著名的开源项目都采取了这种管理方式,比如开源项目babel,它依赖的模块都放在了packages

下。

babel的依赖模块

通过查看babel项目,发现根下有一个lerna.json的配置文件,这是开源工具lerna的配置文件。

lerna是一个用于管理带有多个包的JavaScript项目工具,用lerna管理的项目会有3个文件:

packages、learna.json文件和package.json文件。通过lerna命令行工具在初始化项目的时候

就可以创建它们。

lerna支持两种模式,分别是Fixed/Locked和t

模式。

Fixed/Locked模式为默认模式,babel采用的就是这种模式,该模式的特点是,开发者执行lerna

publish后,lerna会在lerna.json中找到指定version版本号。如果这一次发布包含某个项目的更

新,那么会自动更新version版本号。对于各个项目相关联的场景,这样的模式非常有利,任何一个项

目大版本升级,其他项目的大版本号也会更新。

t

模式顾名思义,各个项目都是相互独立。开发者需要独立管理多个包的版本更新。也就是

说,我们可以具体到更新每个包的版本。每次发布,lerna会配合Git,检查相关包文件的变动,只发布

有改动的package。

虽然众多开源项目采用了monorepo,但它也并不是最完美的代码组织方式,也会带来一些问题,比如

由于将多个模块集中在一个仓库中会导致仓库体积变大,结构也会变得更复杂。而monorepo也

需要额外的工具来管理各个模块,这意味着相对multirepo而言会有一定的学习成本。

代码规范

什么样的代码才

文档评论(0)

cra12138 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档