博客 / 詳情

返回

unibest:基於 Vite + Vue 3 的 Uni-app 開發終極方案

告別 HBuilderX?擁抱 unibest:基於 Vite + Vue 3 的 Uni-app 開發終極方案

在移動端跨平台開發領域,Uni-app 憑藉其強大的跨端能力不僅統一了小程序和 App 的開發,更構建了龐大的生態。然而,傳統的開發模式(依賴 HBuilderX、基於 Webpack 的構建速度、繁瑣的樣式寫法)在面對日益複雜的大型項目時,逐漸顯露出工程化能力的短板。

unibest (uni-app + best) 的出現,正是為了解決這些痛點。它是一套集成了當前前端最前沿技術棧的 Uni-app 開發模板,旨在提供極致的開發體驗最佳的工程實踐

今天,我們就瞭解下,為什麼 unibest 是你下一個 Uni-app 項目的不二之選。

核心技術棧:快,不僅是構建速度

unibest 的核心理念是“現代化”。它拋棄了陳舊的工具鏈,全面擁抱了以下技術:

  • 構建工具Vite 5 —— 毫秒級的冷啓動和熱更新(HMR),相比 Webpack 提升 10 倍以上。
  • 核心框架Vue 3 (Script Setup) —— 更簡潔的代碼組織,更強的邏輯複用能力。
  • 語言TypeScript —— 全鏈路類型安全,重構不再心驚膽戰。
  • 樣式引擎UnoCSS —— 原子化 CSS 引擎,樣式開發效率的革命。
  • 狀態管理Pinia —— 輕量、直觀,完美支持 Composition API。

深入 unibest 的技術亮點

1. 極致的原子化樣式體驗 (UnoCSS)

寫小程序最耗時的往往不是邏輯,而是寫樣式。傳統的 class + css 模式需要在模板和樣式文件間反覆橫跳。

unibest 內置了 UnoCSS,讓你可以在模板中直接書寫原子類,所見即所得。

傳統寫法:

<!-- template -->
<view class="card">
  <view class="title">標題</view>
</view>

<!-- style -->
.card { padding: 10px; background: #fff; border-radius: 4px; box-shadow: 0 2px
4px rgba(0,0,0,0.1); } .title { font-size: 16px; font-weight: bold; color: #333;
}

unibest (UnoCSS) 寫法:

<view class="p-4 bg-white rounded shadow-sm">
  <view class="text-base font-bold text-gray-800">標題</view>
</view>

優點:代碼量減少 50%,無需費勁想類名,CSS 體積極致壓縮。

2. 自動化開發的魅力 (Auto Imports)

利用 unplugin-auto-importunplugin-vue-components,unibest 實現了 API 和組件的自動按需引入

你不再需要滿屏的 import 語句:

// 以前
import { ref, computed, onMounted } from "vue";
import { onLoad } from "@dcloudio/uni-app";

// 現在:直接用!編譯器會自動處理
const count = ref(0);
onLoad(() => {
  console.log("Page loaded");
});

3. 企業級的網絡請求封裝 (Promise & Interceptors)

unibest 模板中通常包含了一套成熟的 uni.request 封裝方案,展示瞭如何優雅地處理攔截器、Token 注入和併發控制。

亮點模式:靜默登錄與 Token 自動注入
框架支持在請求攔截器中處理複雜的鑑權邏輯,例如:在 Token 不存在時自動掛起請求,完成登錄後再繼續。

// utils/http.ts 示例架構
export const http = async <T>(options: CustomRequestOptions) => {
  // 1. 動態 Token 注入
  const token = uni.getStorageSync("token");

  // 2. 智能攔截:如果是需要鑑權的接口且無 token,自動觸發登錄流程
  if (options.auth && !token) {
    await useUserStore().login();
  }

  return new Promise<Result<T>>((resolve, reject) => {
    uni.request({
      ...options,
      success(res) {
        // 3. 統一錯誤攔截(如 401 過期)
        if (res.statusCode === 401) {
          // 清理狀態,跳轉登錄頁或無感刷新 Token
          reject("Unauthorized");
        } else {
          resolve(res.data);
        }
      },
    });
  });
};

4. 基於文件系統的路由 (File-based Routing)

擺脱臃腫的 pages.json!unibest 集成了 vite-plugin-uni-pages,支持通過文件目錄結構自動生成路由配置。

  • 自動註冊:新建 src/pages/login/index.vue,自動識別為頁面。
  • 配置內聚:頁面的標題、導航欄樣式直接在 Vue 文件的 <route> 塊中定義,無需去 pages.json 裏查找。
<!-- src/pages/index/index.vue -->
<route lang="json5"> { style: { navigationBarTitleText: '首頁', } } </route>

<template>
  <view>Home</view>
</template>

5. 優秀的併發處理範式

在處理小程序登錄(uni.login)等異步操作時,unibest 推薦使用 Promise 鎖 模式來防止併發請求導致的重複調用。這是非常實用的高階技巧。

// store/user.ts
let loginPromise: Promise<void> | null = null;

const login = () => {
  // 如果已經在登錄中,直接返回現有的 Promise,避免重複調用 uni.login
  if (loginPromise) return loginPromise;

  loginPromise = (async () => {
    try {
      const { code } = await uni.login();
      // ... 換取 Token
    } finally {
      loginPromise = null; // 釋放鎖
    }
  })();

  return loginPromise;
};

為什麼選擇 unibest?

  1. 工程化完備:開箱即用的 ESLint, Prettier, Husky, Commitlint 配置,規範團隊代碼。
  2. 多端適配強:不僅支持微信小程序,還通過條件編譯和 polyfill 完美支持 H5、App 及其他小程序平台。
  3. 生態活躍:基於 Vite 生態,可以複用大量現有的 Vue 3 插件和工具。

使用體驗

個人使用體驗還是蠻不錯的,支持 vscode 作為編輯器,基礎的封裝(比如 uni.request)都有,引入了實用的插件(比如 z-paging),自動化開發(約定式路由,自動引入組件、自動引入 api),使用 wot-ui 組件庫、原子化樣式等等,比原來使用 uniapp 開發起來效率和效果確實要好.
官網地址:https://www.unibest.tech/,還有很多很有意思的東西,大家可以官網去看看。

結語

技術在不斷演進,工具也在不斷革新。unibest 不僅僅是一個模板,它代表了一種高效、規範、現代的 Uni-app 開發方式。如果你希望擺脱傳統開發模式的束縛,提升團隊的開發效率和代碼質量,unibest 絕對值得一試。

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.