diff --git a/rfcs/0000-optimize-template-size.md b/rfcs/0000-optimize-template-size.md new file mode 100644 index 0000000..8a917b0 --- /dev/null +++ b/rfcs/0000-optimize-template-size.md @@ -0,0 +1,156 @@ +- 提案时间: 2020-07-20 +- 影响版本: 3.x +- 相关 Issues: #6910 + +## 概述 + +对 Taro 为不支持模板递归的小程序(微信、QQ、京东)生成的 base 模版的体积进行优化。 + +## 动机 + +目前 Taro 对于不支持递归的小程序,会默认把代表各小程序内置组件的模板循环 16 次。 + +对于这种情况,我们实现了模板按需引入的优化,默认情况只会引入 `View`、`Text`、`ScrollView`、`Image` 组件,这时 base 模板大小为:*59 kb*。但是考虑到最坏情况,开发者使用了所有小程序的内置组件,这时 base 模板的体积则会爆发性增长到 *573 kb*。 + +小程序平台方对小程序体积的限制非常严格,开发者需要的是一个体积小巧的开发框架。因此对于 base 模板体积的优化迫在眉睫。 + +## 使用案例 + +```js +module.exports = { + mini: { + // 配置额外需要绑定的属性和事件 + extraTemplateAttrs: { + view: ['hover-stop-propagation', 'bindanimationstart'] + } + // 配置是否压缩模板 + enableCompressTemplate: true + } +} +``` + +## 详细设计 + +优化工作可分为 Taro 对模板的重构,和新增优化工具、API 两种。前者开发者不会感知,后者需要开发者关注和配置。 + +### 模板重构 + +#### 1. 消除不必要的模板循环 + +在不支持模板递归的小程序中,只有这样才能做到 `view` 模板的嵌套,所以我们要把模板循环 N 次: + +```html +