从 Angular转到 React,网易严选的前端工程化实践( 三 )
文章插图
对于第二类资源 , 以前的做法基本是 Ctrl+c、Ctrl+v 来复用 , 这种做法不够高级 , 还效率不高 , 所以在 cli 中提供了另外一种做法 , 那就是将代码模板抽离到一个 schematic 包里 , 然后通过 @sharkr/cli 来安装这个包 , 并且执行里面的 schematic 。
文章插图
资源 / 项目升级
同样的 , 假如项目或者是资源需要升级 , 就需要在项目中升级依赖 , 可能还需要修改配置、甚至调整目录结构、修改 api 调用等 。 这种升级以前的做法是 , 出一份升级文档 , 升级者按照文档一步步修改项目完成升级 。 假如有几十个项目 , 就需要几十个人做相同的事几十遍 , 这无疑是一个大的人力消耗 , 作为一个提效工具 , 就是需要将这部分重复的工作通过代码完成 。
文章插图
把升级文档里做的事情编写成 schematic 包
通过 @sharkr/cli 来安装这个包 , 并且执行里面的 schematic
这么一看 , 好像很简单 , 不管是资源复用 , 还是项目升级 , 都写成 schematic 包就好了 , 那么 schematic 到底是什么呢?
schematics简介
schematics 是 ngCli 团队开发的一个强大和通用的工作流程工具 , 开发者可以将变换应用于项目中 , 例如:创建新组件、添加配置项、修改现有项目 , 或者更新你的代码来修复更新依赖时带来的 break change 。
原理
schematics 如它名字一样 , 可以理解为一个描述了具体操作的原理图 。
schematics 的输入是一个树 , 包含一个基础区域(一组已经存在的文件)和一个临时区域(要应用于基础区域的更改列表)) , schemtics 描述了对 Tree 的修改 , 并将这些修改合并到临时区域的更改列表中 , 再往外输出一个新的 Tree 。
在整个操作完结 , 并得到确认后 , 链条中所有描述的修改才会真正被应用 。
更多 schematics 知识:
【从 Angular转到 React,网易严选的前端工程化实践】优势
和常规的 JavaScript 脚本工具相比 , 它的优势在哪呢?
- 开发便捷
- 易于调试
- 可扩展性和可重用性
- 测试友好
schematics 封装
既然 schematics 处理文件很友好 , 而且刚好能解决文件处理问题 , 于是我们就引入了 schematics 完成文件处理 , 并对它做了一层封装 。
文章插图
- 最底层主要依赖 @angular-devkit/schematics 和 @angular-devkit/core 提供 schematics 基础能力;
- 将公共能力提取到 @schematics/util 方便开发调用;
- 提供 schematics 开发模板 , 方便开发新建 schematics 包;封装 schematics 的 cli , 也就是说它也可以单独调用命令;
- 资源(通用资源、项目改造资源、模板升级资源等)会做一些整合 , 这些资源集合将作为物料维护在物料海 , 将来会跟我们正在开发的物料平台对接;
- 向上暴露所有的命令 , 最终在 @sharkr/cli 作为统一出口 。
文章插图
首先 , 对于开发者来说 , 需要做以下三步:
- 根据 schematics 规范开发一个 schematics 包
- 定义配置项(可选)
- 定义 schema 命令
- 使用 @sharkr/cli 调用 schematics 包
- 输入配置(可选)
- 完成项目修改
- 王文鉴|从工人到千亿掌门人,征服华为三星,只因他36年只坚持做一件事
- 精英|业务流程图怎么绘制?销售精英的经验之谈
- 走向|电商,从货架陈列走向内容驱动
- 权属|从数据悖论到权属确认,数据共享进路所在
- 高配版|从4599元跌至3699元,256GB+65W,12GB旗舰加速退场
- 科技|联咏科技将从明年下半年开始为iPad提供LCD驱动芯片
- 不确定性|从虾米看文娱,如何从内容不确定性寻找确定性?
- 换头像|从不换“头像”的人,多半都是这几张原因,你是哪一种?
- 添加|手机:小米手机如何添加门禁卡?
- 这场|这场顶级盛会,15位全球设计行业组织主席@烟台:中国创新经验从这里影响世界