VPS参考测评推荐
专注分享VPS主机优惠信息
衡天云优惠活动
荫云优惠活动
wexlayer优惠活动

如何使用Taro + Vue3开发小程序(练习)

主机参考:VPS测评参考推荐/专注分享VPS服务器优惠信息!若您是商家可以在本站进行投稿,查看详情!此外我们还提供软文收录、PayPal代付、广告赞助等服务,查看详情!
我们发布的部分优惠活动文章可能存在时效性,购买时建议在本站搜索商家名称可查看相关文章充分了解该商家!若非中文页面可使用Edge浏览器同步翻译!PayPal代付/收录合作

如何使用taro3 + vue3开发小程序?下一篇将介绍如何使用taro3 + vue3开发微信小程序。 希望对您有所帮助!

微信小程序是一款以微信为运行环境的应用程序。 其本质是混合动力技术的应用。 混合应用程序是混合模式的移动应用程序,因此它们与 H5 类似,但它们也比 H5 拥有更多原生功能,例如位置和摄像头通话。

小程序的开发方式和H5非常类似,都是使用JavaScript、HTML、CSS语言。

因此,小规模程序开发是前端工程师应该掌握的技能。

开发原生小程序需要一定的学习成本。 目前市面上有很多用于开发小程序的第三方多端框架。 除非你追求极致的性能和稳定性,否则最好不要开发原生小程序。 开发效率太低。

第三方多终端框架中,使用最广泛的是taro和uni-app。 一般来说,在选择技术时,团队使用React,然后是taro,然后团队使用Vue。 只需使用 uni- 应用程序即可。 两者没有区别,而且都非常容易使用。

但是很多开发者可能不知道taro3.0以上版本支持使用vue。 本文将向您展示如何使用Taro3 + Vue3开发微信小程序。

我根据网上的资料搭建完这个项目后,就利用这个项目开发了一个小程序。 开发体验确实超越了我以往开发过的所有项目,非常顺利(这可能是我第一次写Vue3脚本配置,但是非常好用)。

您可以直接访问并克隆该项目的github地址。

目标功能集成vue3、脚本设置语法开发集成Typescript代码检查及格式优化全局状态管理小程序外包配置风格封装、兼容刘海屏等风格问题http方法封装主要技术StackTaro3Vue3TypeScriptNutUiPinia

我学习vue3的热情就因为刚发布时缺乏适当的ui框架支持而被直接浇灭了。 迄今为止,许多优秀的框架(例如 quasar、element-plus 和 ant-design-vue)都支持 Vue3,并且许多 Vue3 项目正在生产中。 这时我才发现原来大家都在用vue3。 。

例如,我们旁边的一个项目团队使用 vue3 进行重建项目。 这时我才发现自己学习vue3有点落后了(提示:前端其实太复杂了)。

NutUI是一个京东风格的移动组件库。 支持使用Vue语言创建可在H5和小程序平台上使用的应用程序,帮助开发者提高开发效率和体验。

我从Taro文档中了解了NutUI。 Taro官方推荐使用NutUI进行开发。 他们似乎都是京东同一个开发团队的成员。 我开始使用它的目的是尝试一下,但感觉还不错。 。

Pinia 是 Vue 的状态管理库。 与 Vuex 一样,它是 Vue 的另一个状态管理解决方案,支持 Vue2 和 Vue3。

我第一次接触前端状态管理工具是在公司后端管理系统实习期间。 我用的是dva 这是一种折磨,几乎让我放弃了。 已经习惯了,但是无论用redux还是vuex写起来都很痛苦。

这次我尝试使用pinia。 它非常易于使用、直观且易于学习。 这与 Recoil 类似,但它没有 Recoil 那么多的概念或 API。 主体结构非常合理,很容易上手。 Pinia快速启动VScode需要安装插件EslintPrettierVolar

与vetur类似,volar是vue的vscode插件,但与vetur不同的是,volar提供了更强大的功能。能。

Volar 概述

初始化项目架构构建项目

在初始化项目之前,您必须安装 taro。 要完成taro的安装,请参考taro文档。

使用命令创建模板项目:

taro init myApp

执行如下操作:I will。 当您以构建方式启动项目时,会生成一个 dist。 目录

yarn add @tarojs/cliyarn dev:weapp 应该打开微信开发工具项目目录并指向构建的dist。 file

显示Hello world,工程成功。 开始跑步吧!

配置代码规范 代码规范 ESlint 格式化代码 Prettier Husky 在提交前检查

个人认为 eslint + prettier 足以处理大多数前端代码规范问题。 配置也非常容易。 如果您有特殊需要,您仍然可以配置它。 。

安装依赖

yarn add @vue/eslint-config-prettier @vue/eslint-config-typescript eslint-p lugin- prettier vue -tsc husky -D

配置代码规范和格式 规则

.eslintrc.js

module.exports = { root: true, env: { node: true, 'vue/setup-compiler-macros': true }, extends : ['插件:vue/vue3-e ssential', 'eslint:推荐', '@vue/prettier', '@vue/typescript'], parserOptions: { 解析器: '@typescript-eslint/parser' }, 规则: { 'prettier/prettier': [ 'error', {singleQuote: true, semi: false, TrailingComma: 'none', 'arrowParens: 'avoid', 'printWidth: 100 '} ], 'no-console': process.env.NODE_ENV === '生产'? '警告' : '关闭', 'no-debugger': process.env.NODE_ENV === '生产' ? '警告' : '关闭' }}

.prettierrc

{ "tabWidth" : 2. "singleQuote": true, "semi": false, "trailingComma": "none", "arrowParens": "avoid", "endOfLine": "auto", "printWidth": 100}

将 In Ts 检查和 Eslint 检查命令添加到脚本 package.json

"scripts":{ "tsc": "vue[ k3] tsc --noEmit --skipLibCheck","lint": "eslint --ext .vue --ext .js --ext .ts src/"}

添加 husky 触发 Git hook ,预提交代码

npx husky install

pre-commit运行Eslint检查和Ts检查 编辑。

#!/bin/sh. "$(dirname "$0")/_/husky.sh"echo "---eslint start---" npm run lintecho "--[k3 ] ]eslint end-- -"echo "---ts lint start---"npm run tscecho "---ts lint end---"

至此,代码规范和格式为你的项目规格已经定下来,多人协作不再是问题。

入门将配置添加到 NutUIyarn add @nutui/nutui-taro

.babelrc 或 babel.config.js:

module.exports = { // ... plugins: [ [ '导入', { 库名称: '@nutui/nutui', 库目录: 'dist/packages/_es', Camel2DashComponentName: false }, 'nutui3-vue' ], [ '导入', { 库名称: '@nutui/nutui-taro', 库目录 : 'dist/packages/_es', ' Camel2DashComponentName: false ' }, 'nutui3-taro ' ] ]}

根据需要引入并安装插件 babel-plugin-import

yarn add babel-plugin-import -D

样式处理nutui设计方案为375,所以将框架设计尺寸调整为375

项目配置文件 config/ Index.js 中配置:

designWidth:375

app.ts

从'vue'导入{createApp}从导入{Button} '@nutui/nutui-taro'const app = createApp()app .use(Button)

在index.vue中,nut-button组件是直接在模板中用中文写的,引入的你不用'不需要再做一次

{{ msg }} 主按钮

说实话,设置起来还是很痛苦,不过根据官网的文档,没有什么坑,所以也还好。

小程序的子包配置

如果小程序的主包超过2M,实际上预览是在机器上完成的,最初是分包进行初步准备。 例如下面的小程序配置被拆分为四个包:

app.config.ts

页面:['pages/create/index', 'pages/find/index', 'pages/my/index'], 子包: [{ root : 'pages/featureA', 页面: ['index/index']},{ root: 'pagesSub/search', 页面: ['index']},{ root: 'pagesSub/my', 页面: ['详细信息/指数', '摘要/索引']},{ Root: '页面子/书籍', 页面: ['详细信息/索引', '人员/列表/索引', '人员/详细信息/索引']}],

Mini您可以在程序开发工具编辑器中通过代码依赖分析查看主包和子包的大小。

使用脚本设置。 迷你语法封装 程序页面生命周期方法

hooks/life.ts

import { getCurrentInstance } from '@tarojs/taro'import { onMounted } from 'vue'const Current = getCurrentInstance()export f function useDidShow(callback ) { onMounted(callback) 当前?.page?.onShow && (Current.page.onShow = 回调)} 导出函数 usePullDownRefresh(callback) {Current?.page?.onPullDownRefresh && (Current.page.onPullDownRefresh = 回调)}

使用

import { useDidShow } from '@/hooks/life'useDidShow(() => { // console.log ('onShow')}) 安装Pinia 执行状态管理yarn add piniayarn add taro-plugin-pinia

项目配置文件 config/index.js 中设置:

plugins: ['taro-plugin-pinia']

用户信息及用户登录以用户登录状态为例实现该功能

需要处理的文件代码如下:

stores/auth.ts

从 'pinia' 界面导入 {defineStore} UserInfoProp {nickName:string avatarUrl:string}const useAuth =defineStore({ id: 'au thInfo', state: ( ) => ({ userInfo: { nickName: '', avatarUrl: '' }, isLogin: false }), actions: {login() { this.isLogin = true }, logout() { this.isLogin = false }, setUserInfo(userInfo: UserInfoProp) { this.userInfo = userInfo } }})export { useAuth }

stores/index.ts

import { createPinia } from 'pinia'import { useAuth } from './auth'export const store = createPinia()const storeObj = { auth: useAuth}// 它封装在 useStore 的形式中,所以当你查看引用时它是存储数据 我知道这是一个导出函数 useStore(key: string) { return storeObj[key]()}

Personal Center Index.vue

微信一键登录
导入芋头 '@tarojs/taro'import {compute} from 'vue'import { useStore } from '@/stores'import UserInfo from './userInfo.vue'const auth = useStore('auth&#39 ;)const isLogin = Compute( ()=> auth.isLogin)const handleLogin = () => { setTimeout(() => { // 模拟后端请求获取token和userInfo Taro.setStorageSync('token', 'xxxx&# 39; ) auth.setUserInfo ({ 昵称: '林', avatarUrl: 'img/images/https://zhujicankao.com/img/images/17369007512025011500255171.jpg' }) auth.login() }, 500)}

用户信息 组件

{{ userInfo.nickName }}

导入 Taro from '@tarojs/taro'import { Computed } from 'vue'import { useStore } from '@/stores'const auth = useStore('auth')const userInfo = Compute(() => auth.userInfo)

一般来说,pinia 可以写得非常简洁。 我真的很喜欢这种反应挂钩的编写方式。

请求方法封装

http.ts

// 封装axios请求,返回重新封装的数据格式 // 统一错误处理 import { HttpResponse } from '@/common/interface'import Taro从 '@tarojs/taro'导入 publicConfig 从 '@/config/index'导入 axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse, Canceler} from 'axios-miniprogram'import errorHandle from '../common/errorHandle'const CancelToken = axios.CancelTokenclass HttpRequest { private baseUrl: string privateending: Recordconstructor(baseUrl: string) { this.baseUr l =baseUrl this.pending = {} } // 获取 axios 配置 getInsideConfig() { const config = {baseURL: BaseUrl, header: { 'Content-Type': 'applica.tion/json;charset=utf-8' }, timeout: 10000 } return config }removePending(key: string, isRequest = false) { if (this.pending[key] && isRequest) { this.pending[key ] ('取消重复请求')} delete this.pending [key]} // 设置拦截器interceptor(instance: axiosinstance) {Instance.interceptors.request.use(config => {Console.log('Config:>>', config) let isPublic = false publicConfig.publicPath.map(path => { isPublic = isPublic || path. test( config.url || '') }) const token = Taro.getStorageSync('tok en') if (!isPublic && token) { config.headers.Authorization = 'Bearer' + token } const key = config.url+'&'+config.method this.removing (key, true, true) config.cancelToken = new CancelToken(c => { this.pending[key] = c }) return config }, err => { errorHandle(err) return Promise.reject(err) ) res.config.url + '& ' + res.config.method this.removePending(key) if (res.status === ) ) ) } //创建实例 request(options: AxiosRequestConfig) { const instance = axios.create() const newOptions = Object.assign(this.getInsideConfig(), options) this.interceptors(instance)返回实例(newOptions) } get(url: string, config?: AxiosRequestConfig): Promise | Promise { const options = Object.assign( {method: 'get', url: url }, config ) ) return this.request(options) } post(url: string, data?:unknown): Promise | Promise { return this.reques t({ method: 'post', url: url, data: data }) }}导出默认 HttpRequest

request.ts

从'./http'导入HttpRequest导入配置 来自 '@/config/index'const BaseUrl = process.env.NODE_ENV === '开发' : config.baseUrl.proconst Request = new HttpRequest(baseUrl) 默认导出请求

以获取图书列表和图书详细信息为例

apis/book.ts

从“../request”导入请求导出函数 getBookList() { return request.get('books/getBookList')}导出函数 getBookDetail(id:number) { return request.post('books/getBookDetail', { id })}

请求方法封装仍然使用axios,但只是axios-miniprogram。 写作风格与网页版基本相同。 http.js 文件引用的模块太多,本文未列出。 您可以直接访问其github地址来查看该项目。

样式封装

iPhoneX底部横线适配

assets/styles/common.scss

.safe-area-bottom {padding-bottom:constant (afe-区域-插入-底部);填充-底部: env(safe-area-inset-bottom);}

刘海儿平适配

assets/styles/hairline.scss

@ mixin Hairline-common () { 位置: 绝对; 大小: 边框- 内容: ' '; 无;}@mixinhairline() { @include hairline-common(); 上:-50%;下:-50%;边框:0 实线#eaeaea;比例(0.5);}@mixinhairline-top($color, $left: 0, $right: 0) { @include Hairline-common(); 右:$right;左:$left;边框-top:1px 实线$color;}@mixinhairline-bottom($color ,$left:0,$right:0){@includehairline-common(); 右:$right; 左:$left; 边框-底部:1px实体$color;变换:scaleY(0.5);}[class*='van-hairline'] { &::after { @include Hairline ();发际线{ &、&--顶部、&--左、&--右、&--底部、&-]-环绕、&[ k3]-top-bottom { 位置:相对 &--top::after {边框-顶部-宽度:1px;&--左::之后{边框-左-宽度:1px; -右-宽度:1px } &--底部::之后{ 边框-底部-宽度:1px } &, &-unset { &--顶部-底部::{ 边框-宽度:1px 0; -surround::after {border-width: 1px }}

省略多行文字

ass ets/styles/ellipsis.scss

@mixin multi-ellipsis($lines) { display: -webkit- ]box; 溢出:隐藏; text-overflow: ellipsis; webkit -line-clamp: $lines; -webkit- box-orient: 垂直;}@mixin 省略号(){溢出:隐藏;白色-空间:午睡;文本-溢出:省略号;}.省略号{@包括省略号();}.multi-省略号--l2 {@包括multi-ellipsis(2);}.multi-ellipsis--l3 { @include multi-ellipsis(3);} 小结

此时,你的 Taro + Vue3 项目应该: 看起来会像这样。 终于完成了。要构建,我强烈建议直接进入项目的 github 地址并克隆它。 有一些配置细节无法在本文中介绍,因此请在您的项目中查找它们。

如果我的文章对您有帮助,我将不胜荣幸。

【相关学习推荐:小程序开发教程】

PHP轻松学习视频免费教程(从初学者到专家)

如何学习PHP PHP应该从哪里开始?我学PHP怎样才能快速学好PHP呢? 这里有简单的 PHP 学习教程(从初学者到专家)。 您可以保存并下载您想学习的朋友。

下载

这几篇文章你可能也喜欢:

本文由主机参考刊发,转载请注明:如何使用Taro + Vue3开发小程序(练习) https://zhujicankao.com/142187.html

【腾讯云】领8888元采购礼包,抢爆款云服务器 每月 9元起,个人开发者加享折上折!
打赏
转载请注明原文链接:主机参考 » 如何使用Taro + Vue3开发小程序(练习)
主机参考仅做资料收集,不对商家任何信息及交易做信用担保,购买前请注意风险,有交易纠纷请自行解决!请查阅:特别声明

评论 抢沙发

评论前必须登录!