Vue3 项目跨端开发平台选择:Taro 与 uniapp 的比较与抉择

2024-11-06
来源:网络整理

原文链接:vite+vue3搭建开发环境

最近想启动一个移动端或者小程序的Vue3项目,所以选择一个跨终端的开发平台非常重要。业界主要有两个跨端开发平台Taro和Taro,但是他们对vue3的支持似乎不是特别友好。所以我在Taro和Taro之间犹豫了一段时间,最后尝试选择一些相对熟悉的东西来开发。

::: 前排提醒

目前,对Vue3的支持还处于开发阶段,你很有可能会遇到很多问题。

:::

开发环境设置

推荐安装,主要是uni cli只支持在APP平台生成离线打包的wgt资源包,不支持云打包生成apk/ipa,而且配置一些打包参数也不方便。

推荐安装这里的版本,后面会解释原因。

::: 注意

正式版本中是无法直接创建Vue3项目的,而且版本有Vue2和3可供选择,但是创建的模板大部分还是用vue2编写的(没有语法糖),所以这时候你要么需要自己改代码,或者使用官方提供的

:::

# 创建以 javascript 开发的工程 npx degit dcloudio/uni-preset-vue#vite my-vue3-project # 创建以 typescript 开发的工程 npx degit dcloudio/uni-preset-vue#vite-ts my-vue3-project

当然,下载也有可能失败。您可以直接访问下载模板。

项目结构

|-- src |-- App.vue |-- env.d.ts |-- main.ts |-- manifest.json |-- pages.json |-- uni.scss |-- pages | |-- index | |-- index.vue |-- static |-- logo.png |-- index.html |-- package-lock.json |-- package.json |-- postcss.config.js |-- tsconfig.json |-- vite.config.ts

下载完成后,开始安装依赖,然后就可以开始测试了。

运行编译

运行之前,先删除vuex包,否则会有如下提示。简而言之,就是不推荐使用它,同时也推荐使用状态管理。所以执行yarn vuex

(node:26968) [DEP0148] DeprecationWarning: Use of deprecated folder mapping "./" in the "exports" field module resolution of the package at F:\Uniapp\my-vue3-project1\node_modules\vuex\package.json. Update this package.json to use a subpath pattern like "./*".

H5

运行、编译均正常

应用程序

使用npm run dev:app后,你会发现终端卡在如下界面,无法继续。 (后来测试发现除了H5可以正常运行,其他都会卡)

搭建小程序本地开发环境_搭建开发环境什么意思_搭建开发环境步骤

编译器版本:3.4.3(vue3) 请注意运行模式下,因日志输出、sourcemap 以及未压缩源码等原因,性能和包体积,均不及发行模式 。 正在编译中... vite v2.8.6 building for development... DONE Build complete. Watching for changes... ready in 1554ms.

然后呢? ? ?

算了,先用cli在手机或者模拟器上运行一下吧,然后打开app的时候就显示如下错误。点击“忽略”后,发现应用无法正常运行。

我查了一下我本地的版本是官方版本v3.3.13,Vue3模板版本是v3.4.3

好家伙,都是直接使用官方模板的,无奈,只能点击查看详情,解决问题。最终测试后,建议使用最新版本,即最新版本,于是更换了本地官方版本,应用程序可以正常运行。

既然在开发环境中可以正常运行,那么我们就尝试打包一下。由于打包应用程序只能打包成APP资源,所以要打包成apk,要么创建一个项目,然后将APP资源放入并打包成apk,要么使用云打包(云打包是一个独特的功能)。如果本地没有相关环境,建议使用云打包(简单方便)。封装过程这里不再演示。

小程序

这里只测试微信小程序。上述app处理完毕后,微信小程序正常运行。不过不知道和上面的Vue3模板和官方版本有没有关系,也懒得重新安装测试了。不过猜测应该和上面没有关系,毕竟和手机的SDK有关。

元件库

官方提供了uni-ui组件库,但是有一个比较知名的组件库,而且比前者更容易使用和实用。但是,当我尝试导入它时,出现以下提示。

显然它不支持vue3,但是我在社区找到了一个同时支持Vue3.0和Vue2.0的,但是经过测试最终失败了。

我也在社区里搜索过组件库,不过好像需要会员费,所以没有测试就果断放弃了。

然后我想到太郎里有这个,就开始尝试。果然支持Vue3组件库,肯定是支持的。演示如下

但遗憾的是,这里的支持仅限于h5开发。官方也有说法只能开发h5

@/@next 基于Vue3视觉风格京东APP 10.0规范,仅可开发h5

@/-taro基于Vue3视觉风格京东APP 10.0规范,必须基于taro + vue3框架进行多端开发(多端是指一套代码来部署多端环境微信小程序) h5等第三方小程序)

而如果要开发多端,必须基于taro+vue3框架,那么自然就跑不了app和小程序了(已测试)

那么一开始在芋头和芋头之间选择的时候,为什么不用芋头呢?并且还支持Vue3(相比之下)?

最终选择的组件库是官方的uni-ui。

搭建开发环境步骤_搭建开发环境什么意思_搭建小程序本地开发环境

使用开发

编码体验对我来说不太友好,所以我将项目转入开发并使用了 npm 包。

首先创建一个vite+vue3项目(或者使用一开始介绍的官方提供的Vue3模板,主要是用cli,需要自己安装),然后删除原来的src目录,替换为创建的项目根目录。但还需要进行以下操作

安装sass

vite支持sass只需要安装sass依赖即可。

npm install sass

允许js文件

由于使用了ts,如果项目中有js文件,就会发出警告。您可以将 "": true 添加到 .json。

组件语法提示

npm i @dcloudio/uni-helper-json @types/uni-app @types/html5plus -D

但是我发现uni-ui组件库的代码提示不太友好。很有可能需要在本地引用组件。我这里没有使用npm包导入,而是使用了官方的。不过组件库的代码提示问题不是很大。大了,查阅文档就可以解决。

导入代码块

uni-app 代码块()()

找不到模块“./App.vue”或其相应的类型声明

在src目录下创建env.d.ts文件,填写以下内容

/// declare module '*.vue' { import { DefineComponent } from 'vue' // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types const component: DefineComponent<{}, {}, any> export default component }

然后只需将一些非vue3的#VUE3代码块,以及一些js文件重写为ts文件即可。在这里上传我修改后的模板。如果需要的话可以自行下载:/vite-vue3-()

如果你不想使用官方的vue3模板,这里还有一篇关于如何迁移的文章。

项目迁移至主流前端IDE开发(支持VS Code等编辑器/IDE)

但最终,如果你想在应用程序或小程序上运行它,你仍然需要打开它。

总结

整个流程下来,其实对Vue3支持还是不够友好,生态也没有及时更新。而且官方提供的Vue3模板也存在一定的问题。

但最终我还是用它来开发。首先,我对Vue3足够了解并且已经使用过它。其次,Taro支持Vue3,但如何将其编译成App是我的主要需求。最重要的是我不想再踩太郎了。被骗了。

分享