InfoQ科技|从 Angular转到 React,网易严选的前端工程化实践( 三 )
本文插图
- 用户执行 sr init myapp , 调用 @sharkr/cli
- @sharkr/cli 使用 npx 调用最新的 init 插件处理
说完了项目初始化 , 再来看一下开发 / 迭代过程中会遇到哪些问题 。
完成项目初始化进入开发阶段 , 这个阶段应该是关注业务本身、减少重复工作、高效快速的 。
1、dev 环境
开始项目开发遇到的第一个问题就是 dev 环境 。 需要 webpack 配置编译代码、需要一个本地 server、需要一个数据转发、需要 eslint 配置规范编码等 。
这一部分可以通过 @sharkr/scripts 提供 webpack 配置和 server 脚本 , 在模板里集成调用 , 用 koa 起一个本地服务 , koa 中间件完成转发等 。 @sharkr/eslint-config-react 定义编码规范 。 在这个环节规范了流程和配置 , 有效的保障项目质量 。
有了一个完备的 dev 环境 , 再来看一下前面说到的资源复用和资源 / 项目升级 。
2、资源复用和资源 / 项目升级
资源复用
简单把资源分为两类 , 一类是有固定输入输出 , 可抽离的 , 例如时间控件 , 下拉列表等;还有一类是无固定输入输出 , 不可抽离 , 但是又具有某些共性的 , 例如 B 端常见的列表页、详情页 , 这一部分资源没有一个很好的复用方式 。
对于第一类资源 , 可以采用封装组件的形式完成资源共享:
本文插图
对于第二类资源 , 以前的做法基本是 Ctrl+c、Ctrl+v 来复用 , 这种做法不够高级 , 还效率不高 , 所以在 cli 中提供了另外一种做法 , 那就是将代码模板抽离到一个 schematic 包里 , 然后通过 @sharkr/cli 来安装这个包 , 并且执行里面的 schematic 。
本文插图
资源 / 项目升级
同样的 , 假如项目或者是资源需要升级 , 就需要在项目中升级依赖 , 可能还需要修改配置、甚至调整目录结构、修改 api 调用等 。 这种升级以前的做法是 , 出一份升级文档 , 升级者按照文档一步步修改项目完成升级 。 假如有几十个项目 , 就需要几十个人做相同的事几十遍 , 这无疑是一个大的人力消耗 , 作为一个提效工具 , 就是需要将这部分重复的工作通过代码完成 。
本文插图
把升级文档里做的事情编写成 schematic 包
通过 @sharkr/cli 来安装这个包 , 并且执行里面的 schematic
这么一看 , 好像很简单 , 不管是资源复用 , 还是项目升级 , 都写成 schematic 包就好了 , 那么 schematic 到底是什么呢?
简介
schematics 是 ngCli 团队开发的一个强大和通用的工作流程工具 , 开发者可以将变换应用于项目中 , 例如:创建新组件、添加配置项、修改现有项目 , 或者更新你的代码来修复更新依赖时带来的 break change 。
原理
schematics 如它名字一样 , 可以理解为一个描述了具体操作的原理图 。
schematics 的输入是一个树 , 包含一个基础区域(一组已经存在的文件)和一个临时区域(要应用于基础区域的更改列表)) , schemtics 描述了对 Tree 的修改 , 并将这些修改合并到临时区域的更改列表中 , 再往外输出一个新的 Tree 。
在整个操作完结 , 并得到确认后 , 链条中所有描述的修改才会真正被应用 。
推荐阅读
- 材料|百利科技:首家锂电正极材料智慧工厂建成,氢能材料项目稳步推进
- 服务|薪宝科技荣获2020(深圳)人力资源数字化科技大赛二等奖
- 金融营销新视界|拥抱金融科技,中国银行持续提升用户体验!
- 百福地|霸州市百福地科技有限公司 | 用实力打造高品质美容仪器车
- 汽车|用科技俘获用户芳心“智慧”让BEIJING-X7美得更丰满
- 超新星|树木年轮或是超新星影响地球印迹
- 农业|农业无人机初创公司极飞科技宣布完成12亿元融资
- 农业|农业无人机初创企业极飞科技宣布完成12亿人民币融资
- 文库科技标杆|问题解决一半,华为可向高通购买芯片,但不包括5G芯片!
- 科技良辰|大量5G用户吐槽:“换了5G手机,网速比4G还慢”
