当前位置:   article > 正文

taro开发钉钉小程序,打包后真机测试tabbar丢失解决方案,以及在小程序上使用路由守卫_taro 可以用vue router

taro 可以用vue router

吐槽一下,最近公司让我搞钉钉小程序,因为公司用的是taro框架,本来这个框架的社区人就比较少,taro开发钉钉小程序的人更少,以致于遇到的bug和坑在网上都找不到解决方案,挺难受的。今天搞定taro编译钉钉小程序真机测试时底部tabbar丢失问题,分享一下解决方案。

 在taro编译成小程序的时候,在开发工具的模拟器里面,通过配置app.config.ts文件配置tabbar,是可以正常显示的,配置如下

  1. //app.config.ts
  2. tabBar: {
  3. custom: false,
  4. color: PRIMARY_COLOR,
  5. selectedColor: PRIMARY_COLOR,
  6. backgroundColor: '#ffffff',
  7. borderStyle: 'white',
  8. list: [
  9. {
  10. text: '首页',
  11. pagePath: 'pages/tab-bar/index',
  12. iconPath: 'assets/tabbar-icon/deafult/index.png',
  13. selectedIconPath: 'assets/tabbar-icon/selected/index.png'
  14. },
  15. {
  16. text: 'CRM',
  17. pagePath: 'pages/tab-bar/crm',
  18. iconPath: 'assets/tabbar-icon/deafult/crm.png',
  19. selectedIconPath: 'assets/tabbar-icon/selected/crm.png'
  20. },
  21. {
  22. text: '财务',
  23. pagePath: 'pages/tab-bar/finance',
  24. iconPath: 'assets/tabbar-icon/deafult/finance.png',
  25. selectedIconPath: 'assets/tabbar-icon/selected/finance.png'
  26. },
  27. {
  28. text: '审批',
  29. pagePath: 'pages/tab-bar/oa',
  30. iconPath: 'assets/tabbar-icon/deafult/oa.png',
  31. selectedIconPath: 'assets/tabbar-icon/selected/oa.png'
  32. },
  33. {
  34. text: '我的',
  35. pagePath: 'pages/tab-bar/my',
  36. iconPath: 'assets/tabbar-icon/deafult/my.png',
  37. selectedIconPath: 'assets/tabbar-icon/selected/my.png'
  38. }
  39. ],
  40. },

开发工具模拟器中↓                                                                  打包后真机测试↓(底部的tabbar没了)

                                                            

我打开调试器,检查页面上的元素时,居然页面上根本没有渲染tabbar的元素的,但是为啥能显示出来这里我就不知道了。
 可能有人会说 配置custom: true,然后换成自定义tabbar就可以解决,经过我实验之后并不能,走坑的过程我就不描述了。

然后不断翻阅taro的文档,百度。发现根本没人发表过相关的解决方法。
一次不小心给我在taro文档上看到这个 文档传送门

 3.6以上版本的taro支持使用vue-router的路由库,这样的话那我在小程序只用一个页面,然后自己写一个tabbar,然后由于整个小程序只有一个页面的话,这个tabbar用fixed定位定在底部,点击对应的图标跳转到对应路由也可以实现界面切换,这就等于和写h5的程序一样了,tabbar丢失的问题也就解决了!!!
 

下面是操作步骤:

第一步,当然是升级taro的版本,我当时使用的taro版本是3.4.7版本的,是不支持路由库的。

步骤1、查看taro版本 查看latest下的版本号 我当前是3.6.4

npm info @tarojs/cli

 步骤2 安装新版本

指令安装指定版本:

  1. #使用 yarn 安装依赖
  2. $ yarn global add @tarojs/cli@3.6.4
  3. #使用 cnpm 安装依赖
  4. $ cnpm install -g @tarojs/cli@3.6.4
  5. #使用 npm 安装依赖
  6. $ npm install -g @tarojs/cli@3.6.4

指令安装最新版本:

  1. #使用 yarn 安装依赖
  2. $ yarn global add @tarojs/cli
  3. #使用 cnpm 安装依赖
  4. $ cnpm install -g @tarojs/cli
  5. #使用 npm 安装依赖
  6. $ npm install -g @tarojs/cli

步骤三    查看最新版本是否安装成功 我的当时还是显示旧版本但是继续下一步也没事可能是缓存

taro -v

步骤四  更新项目配置 更新package.json 里的配置 会发现里面的版本号变成你刚刚安装的版本了

 taro update project

最后一步 最好从新安装一下包 
 

  1. yarn
  2. npm i
  3. cnpm i

项目配置里面 配置上这个插件   @tarojs/plugin-html' 为了使用h5标签开发小程序,也为了适配vue-router路由包


这里有一个坑,直接运行会报错

 taro update project 这个指令能将下面红色的包更新了,但是 绿色的@tarojs/plugin-framework-vue3 这个包不会自动更新要自己手动安装 版本号和taro一致就行


 

yarn add @tarojs/plugin-framework-vue3@3.6.4

别忘了你还差了vue-router包

yarn add vue-router@4

然后就是修改项目里面的配置了
不会的跟着下面来
app.config.ts这里面的tabbar有关的配置可以删除 剩下这些,整个项目只需要配置一个页面了

  1. //app.config.ts
  2. const PRIMARY_COLOR = '#E28A43'
  3. export default defineAppConfig({
  4. pages: ['pages/index'],
  5. window: {
  6. backgroundTextStyle: 'light',
  7. navigationBarBackgroundColor: PRIMARY_COLOR,
  8. navigationBarTitleText: 'ERP',
  9. navigationBarTextStyle: 'white',
  10. pullRefresh: true // 可下拉刷新
  11. }
  12. })
  1. //pages/index.vue
  2. <template>
  3. <div>
  4. <router-view />
  5. <nut-tabbar
  6. bottom
  7. @tab-switch="tabSwitch"
  8. >
  9. <nut-tabbar-item
  10. tab-title="首页"
  11. href="/index"
  12. :icon="Home"
  13. :value="11"
  14. />
  15. <nut-tabbar-item
  16. tab-title="crm"
  17. href="/crm"
  18. :icon="Category"
  19. />
  20. <nut-tabbar-item
  21. tab-title="财务"
  22. href="/financ"
  23. :icon="Order"
  24. :value="110"
  25. />
  26. <nut-tabbar-item
  27. tab-title="审批"
  28. href="/oa"
  29. :icon="Comment"
  30. />
  31. <nut-tabbar-item
  32. tab-title="我的"
  33. href="/my"
  34. :icon="People"
  35. />
  36. </nut-tabbar>
  37. </div>
  38. </template>
  39. <script lang="ts" setup>
  40. import { Home, Category, Order, Comment, People } from '@nutui/icons-vue-taro'
  41. import { useRouter } from 'vue-router'
  42. const router = useRouter()
  43. function tabSwitch(item, index) {
  44. router.push(item.href)
  45. console.log(item, index)
  46. }
  47. </script>

然后路由的配置就和写pc的vue项目一样 不会的同学这里有传送门  自己看哈 Vue Router | Vue.js 的官方路由 (vuejs.org)
我的配置这样,你们可以参考一下毕竟项目每个人的不一样
我这分多层来写是为了后面我想做不同的中间配置,你们可以不需要这么多层

 然后就大工告成拉!!! 路由跳转直接就可以使用router.push()这些了
 

既然使用了vue-router 那么项目中也就可以使用路由守卫做到一些自己需要做的事情,弥补小程序上没有守卫的缺点,
比如我之前项目中遇到的因为没有守卫,我的pina中有些数据是请求回来的但是页面渲染出来了数据还没有返回给我,造成页面上的报错等等,反正有守卫还是挺好用的。
路由守卫的使用就自己去看文档哈 

导航守卫 | Vue Router (vuejs.org)
 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/751298
推荐阅读
相关标签
  

闽ICP备14008679号