为了方便理解,下面以图代文,正如所看到的那样,各种各样的域名对应大同小异的 repo, 维护起来简直要命, 作为一位强迫症开发者,对于这种现象是绝对是无法容忍的。 因此把每个项目的 repo 都过了一遍, 发现之间有很多相似的逻辑,包括前端页面的布局、项目的展示方式。最后进行了进一步的分析,本着'求同存异'的思想,进行了汇总。
大概分为两大类项目:
1-1. 纯展示类 1-2. 纯展示类附带简单UI页 2. 定制化类
V1.0
针对上面分好的两类项目,对项目的代码进行了合并并且引入了配置中心,去根据 host 进行相应的配置。 这样说可能不太明白,下面举个例子说明:
const config = [{ host: 'host1', title: 'xxxx', loadingPage: true, loadingBgImg: 'xxx', loaidngText: '', menu: true, engine3DType: '', menuList: [{ icon: 'xx', title: 'xx', data3D: [], templateUrl: '', modelJson: '', }, { icon: 'xx', title: 'xx', data3DUrl: '', templateUrl: '', modelJson: '', }, ...], navigator: ture, ... }, ...];
const item = checkDev() ? getItem(debugHost) : getItem(window.location.host);
// 页面的相关数据展示/UI展示/3D引擎的选择等,根据配置信息,进行具体控制(为了方便理解 也可以理解为权限控制系统)。
复制代码
升级之后的形态,如下图所示。
V2.0
进行了整合之后,自己在项目开发过程中 似乎减轻了很大的心智负担,但是大量域名的维护,依旧需要走不同的发布程序,运维同学的心智负担依旧很大, 因此想着能不能沟通一下,让域名共用一个,共用一个jks项目,这样的话开发运维都很和谐。
因此出现了下面的这种图。
摒弃了之前根据host读取配置的形式,改成了根据 pathname 去进行配置的读取,纯前端路由的手法进行实现。(哇,前端工程师真nb.. 笑哭😂)
V3.0
JavaScript 和 ES6
在这个过程你会发现,有很多 JS 知识点你并不能更好的理解为什么这么设计,以及这样设计的好处是什么,这就逼着让你去学习这单个知识点的来龙去脉,去哪学?第一,书籍,我知道你不喜欢看,我最近通过刷大厂面试题整理了一份前端核心知识笔记,比较书籍更精简,一句废话都没有,这份笔记也让我通过跳槽从8k涨成20k。