最近得空學習了下uniapp結合vue3搭建跨端專案。之前也有使用uniapp開發過幾款聊天/仿抖音/後臺管理等專案,但都是基於vue2開發。隨著vite.js破局出圈,越來越多的專案偏向於vue3開發,就想著uniapp搭配vite4.x構建專案效果會如何?經過一番嘗試果然真香~
HBuilderX: 3.8.4 Vite: 4.2.1 uView-Plus: 3.1.31
這次主要講解通過hbuilderx視覺化編輯器建立專案。
點選編輯器的執行 > 執行到瀏覽器 > 選擇瀏覽器
當然也可以執行到手機或模擬器、執行到小程式工具。
到這裡一個簡單的uniapp+vue3專案就搭建好了。
建立的專案,app.vue是使用vue2寫法,如果習慣setup語法糖編碼,則改為如下方式,生命週期是通過import引入方式。
<script setup> import { onLaunch, onShow, onHide } from '@dcloudio/uni-app' onLaunch(() => { console.log('App Launch!') }) onShow(() => { console.log('App Show!') }) onHide(() => { console.log('App Hide!') }) </script>
uni-app已經內建了vuex和pinia兩個狀態管理,不需要安裝即可使用。這次主要講解下uniapp裡面使用pinia設定。
import App from './App' import uView from '@/uview-plus' import { createSSRApp } from 'vue' import { createPinia } from 'pinia' export function createApp() { const app = createSSRApp(App) const pinia = createPinia() app.use(pinia) app.use(uView) return { app, pinia } }
import { defineStore } from 'pinia' export const counterStore = defineStore('counter', { state: () => ({ count: 0 }), getters: {}, actions: { increment() { this.count++ } } })
這樣基本就引入和建立好了pinia組態檔了,接下來就在.vue頁面使用。
<view>計數:{{counter.count}}</view> <button @click="handleAdd">增加</button> <script setup> import { counterStore } from '@/store/counter' const counter = counterStore() const handleAdd = () => { counter.increment() } </script>
目前支援 uniapp vue3 元件庫有uni-ui(官方),uview-plus等。
也可以下載後,直接放在根目錄下。
無需引入、註冊即可快速使用。在程式碼區鍵入 u ,拉出各種內建或uni-ui的元件列表。
https://uniapp.dcloud.net.cn/component/uniui/quickstart.html
https://uiadmin.net/uview-plus/components/install.html
主要講解下hbuilderx建立專案,匯入uview-plus元件庫。
// main.js import uviewPlus from '@/uni_modules/uview-plus' import { createSSRApp } from 'vue' export function createApp() { const app = createSSRApp(App) app.use(uviewPlus) return { app } }
/* uni.scss */ @import '@/uni_modules/uview-plus/theme.scss';
需要在app.vue首行引入基礎樣式
<style lang="scss"> /* 注意要寫在第一行,同時給style標籤加入lang="scss"屬性 */ @import "@/uni_modules/uview-plus/index.scss"; </style>
如果 不是通過uni_modules方式 匯入,而是直接下載在根目錄下,則需要額外再設定下easycom引入規則。
import App from './App' import uView from '@/uview-plus' import { createSSRApp } from 'vue' export function createApp() { const app = createSSRApp(App) app.use(uView) return { app, pinia } } // 在根目錄uni.scss中引入主題樣式 @import '@/uview-plus/theme.scss'; // 在app.vue中引入基礎樣式 <style lang="scss"> @import "@/uview-plus/index.scss"; </style>
// pages.json { "custom": { // 引入uview-plus元件庫 "^u-(.*)": "@/uview-plus/components/u-$1/u-$1.vue" } // ... }
基於uniapp+vue3專案還可以自定義設定vite.config.js檔案。另外還可以自定義.env環境變數。
import { defineConfig, loadEnv } from 'vite' import uni from '@dcloudio/vite-plugin-uni' import { resolve } from 'path' import { parseEnv } from './utils/env' export default defineConfig(({ command, mode }) => { const viteEnv = loadEnv(mode, __dirname) const env = parseEnv(viteEnv) return { plugins: [ uni() ], define: { // 自定義設定環境變數 'process.env.VITE_APPNAME': JSON.stringify('uniapp-vite4-vue3'), 'process.env.VITE_ENV': env }, /*構建選項*/ build: { // ... }, esbuild: { // 打包去除 console.log 和 debugger // drop: env.VITE_DROP_CONSOLE && command === 'build' ? ["console", "debugger"] : [] }, /*開發伺服器選項*/ server: { // 埠 port: env.VITE_PORT, // 執行時自動開啟瀏覽器 open: env.VITE_OPEN, // 代理設定 proxy: { // ... } } } })
這樣在.vue頁面就可以使用process.env環境變數了。
以上就是uniapp vue3搭建專案的一些分享,希望對大家有所幫助~ 後續還會分享一些uniapp+vue3範例專案。