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

如何搭建一个适配微信小程序,h5,app的uni-app项目

在vscode搭建 uni-app 项目(Vue 3 + Vite + Pinia + uView Plus)

一、环境准备

1. 安装 Node.js

确保已安装 Node.js(需≥14版本),可通过以下命令检查版本:

node -v

2. 安装 VSCode

从 VSCode 官网 下载并安装适合你操作系统的版本。

3. 安装 uni-app 官方插件

在 VSCode 中打开扩展视图(快捷键 Ctrl+Shift+X),搜索 “uni-app”,找到官方插件并安装。

4. 安装 Volar 插件

Volar 是 Vue 3 的官方语言服务,提供智能感知、语法检查等功能。在扩展视图中搜索 “Volar” 并安装。

二、创建项目

1. 初始化项目

首先,确保你已经安装了 Node.js 和 npm。然后,打开终端,使用以下命令创建一个新的 uni-app 项目:(个人node 版本 18.18.2)

注意: Vue3/Vite版要求 node 版本^14.18.0 || >=16.0.0

npm init uni-app my-uniapp-project --template=vue3-vite-uni

2. 进入项目目录

cd my-uniapp-project

3. 安装依赖

运行以下命令安装项目依赖:

npm install

4. 安装 uView Plus

安装 uView Plus UI 库:

npm install uview-plus

5. 配置 uView Plus

在 main.js 中引入并配置 uView Plus:

// main.js
import { createSSRApp } from 'vue';
import App from './App.vue';
import uView from 'uview-plus';

export function createApp() {
  const app = createSSRApp(App);
  app.use(uView);
  return {
    app,
  };
}

在 main.ts 中引入 uView Plus 的样式:

// main.ts
import 'uview-plus/dist/style/index.scss';

6. 安装 Pinia

安装 Pinia 状态管理库:

npm install pinia

在 main.js 中引入并创建 Pinia 实例:

// main.js
import { createPinia } from 'pinia';
import { createApp } from 'vue';
import App from './App.vue';
import uView from 'uview-plus';

const app = createApp(App);
app.use(createPinia());
app.use(uView);
app.mount('#app');

7. 创建 Pinia Store

在 src/stores 目录下创建一个新的 store 文件,例如 user.js:

// src/stores/user.js
import { defineStore } from 'pinia';

export const useUserStore = defineStore('user', {
  state: () => ({
    name: 'John Doe',
  }),
  actions: {
    setName(name) {
      this.name = name;
    },
  },
});

在组件中使用 store:

<template>
  <view>
    <text>{{ userName }}</text>
    <u-button @click="changeName">Change Name</u-button>
  </view>
</template>

<script setup>
import { useUserStore } from '../stores/user';

const userStore = useUserStore();
const userName = computed(() => userStore.name);

function changeName() {
  userStore.setName('Jane Doe');
}
</script>

8. 配置 Vite

在 vite.config.js 中配置 Vite 以支持 uni-app:

// vite.config.js
import { defineConfig } from 'vite';
import uni from '@dcloudio/vite-plugin-uni';

export default defineConfig({
  plugins: [uni()],
});

9. 配置package.json

这里需要适配h5、微信小程序、以及app或者其他各种小程序
配置以下命令在package.json

{
  "scripts": {
    "dev": "uni dev",
    "dev:h5": "uni dev -p h5",
    "dev:mp-weixin": "uni dev -p mp-weixin",
    "build:h5": "uni build -p h5",
    "build:mp-weixin": "uni build -p mp-weixin",
    "build:mp-baidu": "uni build -p mp-baidu",
    "build:mp-jd": "uni build -p mp-jd",
    "build:mp-kuaishou": "uni build -p mp-kuaishou",
    "build:mp-lark": "uni build -p mp-lark",
    "build:mp-qq": "uni build -p mp-qq",
    "build:mp-toutiao": "uni build -p mp-toutiao"
  }
}

以及对应的依赖项在dependencies

 	"@dcloudio/uni-app": "3.0.0-4040520250104002",
    "@dcloudio/uni-app-harmony": "3.0.0-4040520250104002",
    "@dcloudio/uni-app-plus": "3.0.0-4040520250104002",
    "@dcloudio/uni-components": "3.0.0-4040520250104002",
    "@dcloudio/uni-h5": "3.0.0-4040520250104002",
    "@dcloudio/uni-mp-alipay": "3.0.0-4040520250104002",
    "@dcloudio/uni-mp-baidu": "3.0.0-4040520250104002",
    "@dcloudio/uni-mp-jd": "3.0.0-4040520250104002",
    "@dcloudio/uni-mp-kuaishou": "3.0.0-4040520250104002",
    "@dcloudio/uni-mp-lark": "3.0.0-4040520250104002",
    "@dcloudio/uni-mp-qq": "3.0.0-4040520250104002",
    "@dcloudio/uni-mp-toutiao": "3.0.0-4040520250104002",
    "@dcloudio/uni-mp-weixin": "3.0.0-4040520250104002",

10.安装对应依赖并 运行项目

使用以下命令运行项目:

npm install
npm run dev:h5  // 运行 H5 平台
npm run dev:mp-weixin  // 运行微信小程序

这将启动开发服务器,并在浏览器中打开项目。

11. 条件编译

uni-app 支持条件编译,允许你根据不同平台编写特定的代码。例如:

// #ifdef H5
console.log('This code will only run on H5 platform');
// #endif

// #ifdef MP-WEIXIN
console.log('This code will only run on WeChat Mini Program');
// #endif

// #ifdef APP-PLUS
console.log('This code will only run on App platform');
// #endif

这样你可以根据需要在 请求拦截 或者 路径处理 时区分不同的运行环境

12. 构建项目

要构建项目,使用以下命令:

npm run build:h5  // 对应的命令

这将生成一个构建后的文件夹,其中包含可以部署的静态文件。

未完待续。。。

相关文章:

  • 数字化新零售与 AI 大模型,如何重塑大健康赛道?​
  • 食品饮料制造行业的现状 内检实验室系统在食品饮料制造行业应用
  • kettle ETL 配置
  • 图论·拓扑排序
  • Arthas解决CPU飙高和定位死锁问题,JProfiler解决OOM问题
  • 支付宝小程序评论提升策略:打造高互动度的用户体验
  • TONGYI Lingma(通义灵码),GitHub Copilot和Cursor 对比
  • 树莓集团落子海南,如何重构数字产业生态体系​
  • 第27周JavaSpringboot电商进阶开发 3.常见问题解答
  • C语言实现队列数据结构:思路与代码详解
  • 谈谈List,Set,Map的区别
  • 瞭解安全防火牆術語(適合剛接觸Firepower的使用者)
  • 【蓝桥杯—单片机】第十五届省赛真题代码题解析 | 思路整理
  • vue-next-admin修改配置指南
  • WireShark自动抓包
  • 数据库第二次作业
  • 【Go语言圣经1.5】
  • ctfhub-web-SSRF通过攻略
  • 【lf中的git实战】
  • DeepSeek + Midjourney(MJ):创意设计 具体步骤
  • 过去24小时中美是否就关税问题进行过接触?外交部:没有
  • 讲座|为什么要不断地翻译叶芝的诗?它们为什么值得细读?
  • 全国人民代表大会常务委员会公告〔十四届〕第十号
  • 魔都眼|静安光影派对五一启幕:苏河湾看徐悲鸿艺术画作
  • 2025年“投资新余•上海行”钢铁产业“双招双引”推介会成功举行
  • 合肥一季度GDP为3003.88亿元,同比增长6.6%