首页 > 其他分享 >「趣学前端」Taro迁移完成之后,总结了一些踩坑经验

「趣学前端」Taro迁移完成之后,总结了一些踩坑经验

时间:2023-02-22 12:33:15浏览次数:47  
标签:NODE Taro ENV 前端 趣学 env 迁移 页面

背景

四月份的时候,尝试将老的移动端项目改造成多端。因为老项目使用的React框架,综合考量,保障当前业务开发的进度同时,进行项目迁移,所以最后选择了Taro框架。迁移成本会低一些,上手快一些。

上个月,也就是七月份,我们用一个月的时间实现了两个项目从原生小程序到Taro框架的迁移。这当中,因为几个「小水坑」,我们连着加了两周的班。我把其中几个比较难搞的问题,解决方案总结了下来。

Taro文档

Taro的​​官方文档​​写的挺详细的,不过感觉搜索功能不是特别顺手。我平时搜不到想要的词条,会在菜单里找找可能的页面,基本多刷刷文档,能找到想找的内容。

项目迁移

之前写过一篇项目迁移的文章——​​《「Taro开发」前端多端开发,Taro观赏指南》​​。文章中对于基本配置、采用的UI框架、路由处理等基础功能实现,本篇不再重复。

踩坑指示牌

这次的坑,新旧都有。原本以为解决的问题,其实没有完全解决,所以我把最终的实现方案做了总结。

小程序文件过大的问题

最开始用分包的方式,在开发者工具中提交代码提示文件体积过大。但是又没找到问题在哪,最后才用了方案B,设置环境变量 NODE_ENV 为 production 可以开启压缩。如下为项目命令:

"scripts": {
"build:weapp": "NODE_ENV=production taro build --type weapp",
"dev:weapp": "npm run build:weapp -- --watch"
}

但是这样做会有个额外的问题,就是无法在用NODE_ENV区分环境。后来我采用的解决方案是

  • 小程序端使用envVersion区分环境
const env = wxConfig.envVersion;
// 小程序开发环境 release-正式 trial-体验 develop-开发
const baseUrl = env === 'release' ? requestUrl : devrequestUrl;
  • H5端则通过页面的域名区分环境
let env = 'production';
if (NODE_ENV === 'production' && window.location) {
if (window.location.origin.indexOf('//dev') !== -1) {
env = 'dev';
}
if (window.location.origin.indexOf('//release') !== -1) {
env = 'release';
}
} else if (NODE_ENV === 'development') {
env = 'dev';
}

H5页面间样式冲突

开始我并没有往样式冲突上想。我把项目发布到测试环境之后,页面布局发生了局部混乱。

一开始我以为是功能写的有问题,找了半天,换了实现方式,也没有解决问题。然后我找了一下规律,发现当不同页面切换时,切到某个页面会导致样式错乱。于是我打开浏览器的元素审查,查看页面源码。截图如下:

「趣学前端」Taro迁移完成之后,总结了一些踩坑经验_Taro框架

原来Taro框架生成的H5页面,每次切换路由之后,所有的页面都是在app根下,通过display控制展示和隐藏。这种情况下,我采用的样式隔离的方式来避免冲突。

官方提供的​​CSS Modules​​,尝试了一下觉得有点繁琐,所以没有采用。

不要使用空标签

空标签会导致项目部署时报错,如下代码:

<>111</>

我统一用Fragment组件替换了空标签:

<Fragment>111</Fragment>

部署前需要确认Jenkins上是否已安装了Taro

我们的项目刚上测试环境时,发版工具给了如下报错:

sh: taro: command not found

请教了运维的同事后,运维的同事帮忙安装了Taro。所以部署前确认一下,不然发版会失败,着急提测会手忙脚乱。

尺寸单位替换

小程序迁移的时候注意单位的替换,因为我是直接把小程序的样式代码迁移过来的,所以需要将原本的rpx更换为px。Taro 默认以 750px 作为换算尺寸标准,所以尺寸值不需要进行额外的修改。

总结

后面还会有React项目迁移的需求,等那个项目迁移完成之后,我会再总结一般踩坑经验。

标签:NODE,Taro,ENV,前端,趣学,env,迁移,页面
From: https://blog.51cto.com/u_15838863/6078860

相关文章

  • 开发日志01-后端以文件流的形式供前端下载
    需求:本地有一个生成sql脚本的文档,预留了很多类似{{xxx}}需要替换的地方。该需求是需要前端传入响应的值替换掉模板中预留的需要被替换的位置最后通过Post请求返......
  • 前端分页代码示例
    teacher.jsimportrequestfrom'@/utils/request'exportdefault{//1讲师列表(条件查询)getTeacherList(query){returnrequest({ur......
  • 记住这12个要点,你也能打造出让HR和技术主管前一亮的前端简历
     第一篇章:吸引HR如果你想在众多简历中脱颖而出,需要注意以下几点: 1、突出你的亮点:给你的简历一个吸引人的文件命名和头部,突出你的关键技能和经验。2、采用简洁......
  • 碎片化学习前端之webpack(plugin)
    Plugin原理Plugin的作用通过插件我们可以扩展webpack,加入自定义的构建行为,使webpack可以执行更广泛的任务,拥有更强的构建能力。Plugin工作原理webpack就像一条......
  • 系统化学习前端之webpack篇(02)
    webpack高级配置Webpack发展至今,除了编译资源外,还拓展了许多loader和plugin来辅助提升项目性能。写在前面webpack功能之强大,令吾等为之惊叹,欢迎挖宝。提升开发......
  • 行业内口碑第一的前端团队,如何打造文化
    之前我们提了三个关键词叫“简单、自由、有爱”,这是体验技术部的文化。为什么体验技术部会受到大家的欢迎,除了技术强之外,还有非常强的向心力,我们想了解玉伯所带领的团队是如......
  • 前端页面开发less规范写法
    代码组织代码按一下顺序组织:@import变量声明样式声明  1@import"mixins/size.less";2@default-text-color:#333;3.page{4width:960px;5margin:0......
  • 前端开发页面性能优化法则
    性能优化慎重选择高消耗的样式高消耗属性在绘制前需要浏览器进行大量计算:box-shadowsborder-radiustransparencytransformsCSSfilters(性能杀手)避免过分重排当......
  • 前端二面react面试题集锦
    reactdiff算法我们知道React会维护两个虚拟DOM,那么是如何来比较,如何来判断,做出最优的解呢?这就用到了diff算法diff算法的作用计算出VirtualDOM中真正变化的部分,并......
  • 社招前端常考react面试题总结
    react强制刷新component.forceUpdate()一个不常用的生命周期方法,它的作用就是强制刷新官网解释如下默认情况下,当组件的state或props发生变化时,组件将重新渲染。......