谈谈多端相关原理
-
1、定制了一套标准来抹平不同平台的差异
-
2、运行时原理:在运行时会根据当前环境,动态地进行对平台代码转换和适配
-
2、在编译时,会进行转换,主要通过babel插件来转换
-
微信小程序来说,有
.wxml、.wxss、.js、.json -
jsx文件转换成小程序的wxml模板,生成小程序的配置文件、页面及组件的代码等等
-
view标签转换h5的div
-
taro
taro2
taro3.4
- 主要改动是支持使用
Preact和Vue3.2进行开发
taro3.5
-
Webpack5
-
模块联邦的依赖预编译
- 可以预先把项目的 node_modules 依赖打包为一个模块联邦 remote 应用,再次编译时 Webpack 则无需再对依赖进行编译,从而提升编译速度
-
支持使用
esbuild压缩 JS/CSS -
支持pnpm
多端开发处理
- 环境变量
- 条件编译
- 多端文件
- 虽然内置环境变量虽然可以解决大部分跨端的问题,但是代码需要写很多逻辑判断,影响代码可维护性
- 可以使用多端文件,来解决跨端差异
- 原文件名 + 平台类型,如table.h5.js、table.weapp.js
- 每个端写对应的文件,可以更好的维护
问题总结
- h5在钉钉导航标题问题
- 需要使用钉钉的SDK
- 在弹出层、二级页面,有些hooks只会在顶层页面才会触发
- usePageScroll
- 使用Scroll-View组件替代
- useReady
- usePageScroll
- 页面不会自动刷新问题,比如切换底部tabbar,页面没有刷新
- 解决办法,在页面的onShow触发请求
- 样式问题,修改第三方组件
- 使用
styleIsolation: 'shared', 表示设置样式共享。这使得你的组件的样式可以影响到第三方组件
- 使用