uniapp-miniprogram 是一个免费开源基于 uniapp 在 vsocode 中开发的脚手架,使用各类插件和类型提示插件方便用户在 vscode 中享受丝滑开发微信小程序的方案
# 配置
1. 一键安装 .vscode 目录中推荐的插件
2. node 版本 16+
3. pnpm 版本 8.x
# 克隆项目
git clone https://github.com/HavocZhang/uniapp-miniprogram.git
# 进入项目目录
cd uniapp-miniprogram
# 安装依赖
pnpm i
# 启动服务
pnpm dev:mp-weixin
根据控制台提示打开微信小程序开发工具导入编译好的项目目录
feat
增加新的业务功能fix
修复业务问题/BUGperf
优化性能style
更改代码风格, 不影响运行结果refactor
重构代码revert
撤销更改test
测试相关, 不涉及业务代码的更改docs
文档和注释相关chore
更新依赖/修改脚手架配置等琐事workflow
工作流改进ci
持续集成相关types
类型定义文件更改wip
开发中
小项目获取 star 不易,如果你喜欢这个项目的话,欢迎支持一个 star!
npx @dcloudio/uvm
此操作会更新 package.json 中 uniapp 相关依赖
- uni-create-view (不强制推荐)
- uni-helper (强烈建议安装)
- uniapp 小程序扩展 (强烈建议安装)
pnpm add @types/wechat-miniprogram @uni-helper/uni-app-types -D
{
"extends": "@vue/tsconfig/tsconfig.json",
"compilerOptions": {
"sourceMap": true,
"baseUrl": ".",
"paths": {
"@/*": ["./src/*"]
},
"lib": ["esnext", "dom"],
"types": [
"@dcloudio/types",
"@types/wechat-miniprogram",
"@uni-helper/uni-app-types"
]
},
"vueCompilerOptions": {
"nativeTags": ["block", "component", "template", "slot"]
},
"include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"]
}
types 内增加
- @types/wechat-miniprogram
- @uni-helper/uni-app-types
新增 vueCompilerOptions
"vueCompilerOptions": {
"nativeTags": ["block", "component", "template", "slot"]
},
在 vscode 设置中搜索“文件关联”设置,添加 manifest.json pages.json 值为 jsonc
{
"files.associations": {
"manifest.json": "jsonc",
"pages.json": "jsonc"
}
}
关于 ui 框架强烈建议使用官方 uni-ui 不推荐使用其他 ui 框架
pnpm add @dcloudio/uni-ui
配置 easycom 节点
// pages.json
{
"easycom": {
"autoscan": true,
"custom": {
// uni-ui 规则如下配置
"^uni-(.*)": "@dcloudio/uni-ui/lib/uni-$1/uni-$1.vue"
}
},
// 其他内容
"pages": [
// ...
]
}
添加 uni-ui 组件类型
pnpm add @uni-helper/uni-ui-types -D
在 tsconfig.json 中配置在 types 内
pnpm add pinia pinia-plugin-persistedstate
需要在对应的 store 内设置持久化保存到本地存储
{
persist: {
storage: {
getItem(key) {
return uni.getStorageSync(key);
},
setItem(key, value) {
uni.setStorageSync(key, value);
},
},
},
}
pnpm add unocss unocss-preset-weapp -D
//vite.config.ts
import { defineConfig } from "vite";
import uni from "@dcloudio/vite-plugin-uni";
import Unocss from "unocss/vite";
// https://vitejs.dev/config/
export default defineConfig({
plugins: [
uni(),
// https://github.com/antfu/unocss
Unocss(),
],
});
根目录新建 unocss.config.ts
import presetWeapp from "unocss-preset-weapp";
import {
extractorAttributify,
transformerClass,
} from "unocss-preset-weapp/transformer";
const { presetWeappAttributify, transformerAttributify } =
extractorAttributify();
export default {
presets: [
// https://github.com/MellowCo/unocss-preset-weapp
presetWeapp(),
// attributify autocomplete
presetWeappAttributify(),
],
shortcuts: [
{
"border-base": "border border-gray-500_10",
center: "flex justify-center items-center",
},
],
transformers: [
// https://github.com/MellowCo/unocss-preset-weapp/tree/main/src/transformer/transformerAttributify
transformerAttributify(),
// https://github.com/MellowCo/unocss-preset-weapp/tree/main/src/transformer/transformerClass
transformerClass(),
],
};
在 main.ts 中引入 css
import "uno.css";
封装的内容在 utils/http 中 使用如下:
const getData = async () => {
const res = http({
method: "GET",
url: "/test/hello",
});
console.log(res);
};