组件编译增强
tui-vitex 编译器提供了组件编译增强功能,对特定组件进行编译期优化,提高组件的性能和开发体验。
支持的组件
t-view 组件
t-view 是一个特殊的容器组件,它不是简单的 view 包装,而是一个会先参与编译转换、再交给官方编译器处理的特殊组件。
编译增强特性
- 主题集成:自动集成主题配置
- 公共属性:处理公共事件和属性
- 结构优化:优化组件结构
- 样式增强:增强样式处理能力
编译过程
ts
// 处理 t-view 组件
function processTView(node) {
// 添加主题相关属性
if (!node.props.find(p => p.name === 'theme')) {
node.props.push({
name: 'theme',
value: 'default'
});
}
// 优化结构
if (node.children.length === 1 && node.children[0].type === 'text') {
// 特殊处理文本节点
}
return node;
}t-text 组件
t-text 组件是对原生 text 标签的封装,主要解决小程序端 text 标签中使用 slot 的兼容性问题。
编译增强特性
- 插槽兼容:解决小程序端
text + slot的平台差异 - 文本优化:优化文本渲染性能
- 样式统一:统一文本样式处理
编译过程
ts
// 处理 t-text 组件
function processTText(node) {
// 检查是否包含插槽
const hasSlot = node.children.some(child => child.type === 'slot');
if (hasSlot) {
// 小程序端需要特殊处理
if (process.env.UNI_PLATFORM === 'mp-weixin') {
// 转换为 view 标签
node.name = 'view';
node.props.push({
name: 'class',
value: 't-text-slot'
});
}
}
return node;
}t-page 组件
t-page 是页面级别的容器组件,提供了页面级的主题和布局管理。
编译增强特性
- 页面布局:统一页面布局管理
- 主题应用:自动应用页面主题
- 生命周期:增强页面生命周期
- 导航栏:优化导航栏配置
编译增强原理
组件转换流程
- 识别组件:在编译过程中识别需要增强的组件
- 分析结构:分析组件的结构和属性
- 应用增强:应用相应的编译增强逻辑
- 生成代码:生成优化后的代码
增强处理
ts
// 组件编译增强处理
function enhanceComponent(node, id) {
switch (node.name) {
case 't-view':
return processTView(node);
case 't-text':
return processTText(node);
case 't-page':
return processTPage(node);
default:
return node;
}
}使用示例
t-view 组件
html
<t-view class="tbg-pn tp-m">
<text class="ttl1">Hello World</text>
</t-view>编译后:
html
<view class="tbg-pn tp-m t-view">
<text class="ttl1">Hello World</text>
</view>t-text 组件
html
<t-text class="ttl1">
Hello <slot></slot>
</t-text>编译后(小程序端):
html
<view class="ttl1 t-text-slot">
Hello <slot></slot>
</view>t-page 组件
html
<t-page title="首页">
</t-page>编译后:
html
<!-- APP端 -->
<scroll-view class="t-page">
<!-- 页面内容 -->
</scroll-view>
<!-- 其它端编译结果 -->
<view class="t-page">
</view>性能优化
- 编译期优化:将运行时逻辑移到编译期
- 代码精简:移除不必要的代码
- 结构优化:优化组件结构
- 样式优化:优化样式处理
最佳实践
- 合理使用:只在需要的地方使用增强组件
- 遵循规范:按照组件的使用规范进行开发
- 性能考虑:避免过度使用复杂组件
- 兼容性:考虑跨平台兼容性
常见问题
组件不生效
- 检查组件名称是否正确
- 确认是否正确引入组件
- 查看控制台错误信息
编译报错
- 检查组件使用方式是否正确
- 确认组件属性是否符合规范
- 查看编译器错误信息
平台差异
- 了解不同平台的组件行为差异
- 使用条件编译处理平台差异
- 测试不同平台的组件表现
通过组件编译增强,tui-vitex 可以帮助开发者创建更高效、更一致的组件,同时减少平台差异带来的问题。