当前位置: 首页 > news >正文

使用 `Vitesse Uni App` 创建微信小程序并配置 uview-plus 和 alovajs

使用 Vitesse Uni App 创建微信小程序

Vitesse Uni App:https://vitesse-docs.netlify.app/

UI:https://uview-plus.jiangruyi.com/components/intro.html

编辑器:VScode 安装 Volar(Vue Offices)插件

创建项目

pnpm create uni <project-name> -t vitesse

创建页面

参考:https://vitesse-docs.netlify.app/getting-started/views

创建方式非常简单,即看即会

引入 UI 库

这步稍微有些麻烦。

安装文档地址:https://uview-plus.jiangruyi.com/components/install.html

配置文档地址:https://uview-plus.jiangruyi.com/components/npmSetting.html

安装 Sass
// 安装sass
npm i sass -D// 安装sass-loader,注意需要版本10,否则可能会导致vue与sass的兼容问题而报错
npm i sass-loader@10 -D
安装依赖
npm install uview-plus
npm install dayjs
npm install clipboard
引入 JS 库
// main.js
import uviewPlus from 'uview-plus'// #ifdef VUE3
import { createSSRApp } from 'vue'
export function createApp() {const app = createSSRApp(App)app.use(uviewPlus)return {app}
}
// #endif
引入全局 CSS
/* uni.scss */
@import 'uview-plus/theme.scss';
引入基础样式
<style lang="scss">/* 注意要写在第一行,同时给style标签加入lang="scss"属性 */@import "uview-plus/index.scss";
</style>
配置 easycom 模式

参考:https://uview-plus.jiangruyi.com/components/npmSetting.html#%E9%85%8D%E7%BD%AEeasycom%E7%BB%84%E4%BB%B6%E6%A8%A1%E5%BC%8F

// pages.json
{"easycom": {"autoscan": true,// 注意一定要放在custom里,否则无效,https://ask.dcloud.net.cn/question/131175"custom": {"^u--(.*)": "uview-plus/components/u-$1/u-$1.vue","^up-(.*)": "uview-plus/components/u-$1/u-$1.vue","^u-([^-].*)": "uview-plus/components/u-$1/u-$1.vue"}},// 此为本身已有的内容"pages": [// ......]
}
配置 typescript 支持
{"compilerOptions": {"sourceMap": true,"baseUrl": ".","paths": {"@/*": ["./src/*"]},"lib": ["esnext", "dom"],"types": ["@dcloudio/types","uview-plus/types"]},"include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"]
}

启动项目查看

npm run dev:h5

请添加图片描述

踩坑记录

在 pages.json 中配置 easycom 配置时,再次重新启动项目,会导致 pages.json 中的文件刷新,然后 ui 样式引入失效,需要在 pages.config.json 中配置

import { defineUniPages } from '@uni-helper/vite-plugin-uni-pages'export default defineUniPages({pages: [],globalStyle: {backgroundColor: '@bgColor',backgroundColorBottom: '@bgColorBottom',backgroundColorTop: '@bgColorTop',backgroundTextStyle: '@bgTxtStyle',navigationBarBackgroundColor: '#000000',navigationBarTextStyle: '@navTxtStyle',navigationBarTitleText: 'Vitesse-Uni',navigationStyle: 'custom',},// tabBar: {//   backgroundColor: "@tabBgColor",//   borderStyle: "@tabBorderStyle",//   color: "@tabFontColor",//   selectedColor: "@tabSelectedColor",// },"easycom": {"autoscan": true,"custom": {"^u--(.*)": "uview-plus/components/u-$1/u-$1.vue","^up-(.*)": "uview-plus/components/u-$1/u-$1.vue","^u-([^-].*)": "uview-plus/components/u-$1/u-$1.vue"}},
})
]

使用 alova.js 作为小程序的请求工具

官网:https://alova.js.org/zh-CN/

unipp 插件:https://alova.js.org/zh-CN/resource/request-adapter/uniapp

安装

npm install @alova/adapter-uniapp --save

封装

index.ts

//index.ts
import { createAlova } from 'alova'
import AdapterUniapp from '@alova/adapter-uniapp';export const AlovaInstance = createAlova({baseURL: 'http://localhost:8080/api/v1/',// https://alova.js.org/zh-CN/resource/request-adapter/uniapp#%E5%88%9B%E5%BB%BA-alova...AdapterUniapp(),// 请求拦截器beforeRequest() {},// 响应拦截器responded: {}})

api.ts

import { AlovaInstance } from './index'const headers = { 'Content-Type': 'application/json;charset=UTF-8' }
const timeout = 5000export const Alova = {createGet(url: string, params?: Record<string, any>) {return AlovaInstance.Get(url, {headers,params,timeout})},createPost(url: string, data: Record<string, any>, params: Record<string, any>) {return AlovaInstance.Post(url, data, {params})},createTodoPut(url: string, data: Record<string, any>, params: Record<string, any>) {return AlovaInstance.Put(url,data, {params})},createDelete(url: string, data?: Record<string, any>, params?: Record<string, any>) {return AlovaInstance.Put(url,data, {params})}}

service.ts

import {Alova} from "./api"// Law notice
export const getLawNotice = () => {return Alova.createGet("law")}

调用:

<script lang="ts" setup>
import {getLawNotice} from "../alova/service"
import {concatenate, ulg} from "../utils/strings/index";
![请添加图片描述](https://i-blog.csdnimg.cn/direct/f5bfc075d5254acdb28bef31d5b85b1b.png)// data
const content = ref<string>("")
// const law // request api
const getLawList = async () => {await getLawNotice().then((result: any) => {// check status codeif (result.statusCode === 200) {// get datalet lawList = result.data.data;for (let i = 0; i < lawList.length; i++) {let text = lawList[i].text;// ulg(text)content.value = concatenate(content.value, " ", text)}}}).catch((err: any) => {alert(err)})
}
http://www.lryc.cn/news/434239.html

相关文章:

  • C#迭代器和接口IEnumerable,IEnumerator
  • 通信工程学习:什么是IP-CAN(IP连接接入网)
  • 使用 MongoDB 构建 AI:Patronus 如何自动进行大语言模型评估来增强对生成式 AI 的信心
  • openpose1.7.0编译 cuda12.2 cudnn 8.9.7.29 python3.7
  • 【华为OD流程】性格测试选项+注意事项
  • 《生物学教学》
  • C++ 标准库的典型内容
  • 【C++初阶】:C++入门,引用概念及其性质
  • Linux 中的 crontab 命令介绍以及使用
  • 单片机组成原理
  • 《机器学习》—— SVD奇异值分解方法对图像进行压缩
  • 英文文本预处理——文本清理
  • Spring Boot 注解探秘:常用配置值读取注解的魔力
  • Ps初步使用教程
  • 远程连接Hiveserver2服务
  • PDF样本图册转换为一个链接,随时打开无需印刷
  • 自己动手实现mybatis的底层框架(不用动态代理直接用执行器、用动态代理自己实现。图文分析!)
  • 项目日志——日志落地模块的设计、实现、测试
  • CTK框架(七):事件监听
  • 一区霜冰算法+双向深度学习模型+注意力机制!RIME-BiTCN-BiGRU-Attention
  • C语言 | Leetcode C语言题解之第396题旋转函数
  • 利士策分享,克服生活中的困难:走好勇攀高峰的每一步
  • PurchasereturnController
  • mysql 学习笔记 八
  • 反序列化漏洞练习2
  • 基于SpringBoot的社区医院管理系统
  • YOLOv8安装配置教程(Windows版)
  • Linux的历史,版本,Linux的环境安装、简单学习4个基本的Linux指令等的介绍
  • 【论文阅读】01-Survey on Temporal Knowledge Graph
  • 【AIGC】InstructPixPix:基于文本引导的图像编辑技术