做個開源部落格學習Vite2 + Vue3 (一)搭建項目

前言

不會 webpack,遇到報錯就一頭霧水,完全不知道怎麼辦,而且體積還大速度還慢。
所以尤雨溪做了 vite 後就很嚮往,只是知道自己水平有限還是等大佬先趟趟坑,等差不多了在跳。

現在vite2發布了,官網也有了,網上也能找到大佬寫的相關資料,時機應該成熟可以往裡跳了。
所以打算做個開源部落格,一邊做這個小項目,一邊學習 vite2 和vue3,還有相關知識。

為啥選擇部落格呢?因為功能相對比較簡單,不考慮皮膚等功能的話。
而且大家都比較熟悉,沒寫過部落格總看過博文吧。
所以呢,業務需求方面一說大家也都懂,不用做過多的解釋。

建立項目

因為GitHub總是連不上,速度還慢,所以選擇了gitee。先在gitee上面建立一個項目:
//gitee.com/naturefw/vue3-blog

自然框架/vue3-blog

然後clone到本地,接下來就是用vite2建立項目了。

按照官網(//cn.vitejs.dev/guide/#scaffolding-your-first-vite-project)介紹建立項目。

yarn create @vitejs/app

這裡建議使用 yarn,因為可以更快一些。

  • 設置項目名稱:
    vite2建立項目,設置項目名稱.png

輸入你喜歡的名稱即可,這裡用vue3-blog。

  • 選擇模板
    vite2建立項目,選模板.png

我也不知道都是啥,反正選 vue 就對了,如果你喜歡ts的話,那麼可以選擇vue-ts。

  • 初始化
    進入項目文件夾,執行 yarn 安裝需要的資源包。最後執行 yarn dev 就可以運行項目了。
    vite2建立項目,初始化.png

  • 對比項目體積
    vite2建立的項:

vite2建立項目的體積.png

比vue-cli建立的項目小多了,不信可以對比一下:

vue-cli4.5建立項目的體積.png

  • 運行項目
    如果是Windows環境的話,可以做個bat文件,內容是 yarn dev ,然後保存為run.bat,注意擴展名。然後雙擊文件即可運行,比較方便。

vite2運行項目.png

再也不需要漫長的等待了。

  • 看看效果

vite2運行項目.png

還是一貫的簡潔。

安裝路由

按照官網(//next.vuex.vuejs.org/installation.html#direct-download-cdn)介紹安裝路由。(估計大家都會)

yarn add vuex@next --save

還是使用 yarn 的方式來安裝。
安裝路由.png

  • main裡面做設置
import { createApp } from 'vue'
import App from './App.vue'
import router from './router' // 路由

createApp(App)
  .use(router) // 路由
  .mount('#app')

路由的設置和使用沒啥區別,所以就不多說了。

安裝輕量級狀態管理

vite2也是支援Vuex的,只是個人感覺Vuex有點繁瑣,所以自己做了個輕量級的狀態管理,部落格項目採用這個vue-data-state來嘗試一下,具體好不好用看後面的實際使用情況。

  • 安裝
yarn add vue-data-state

安裝狀態管理.png

  • 設置
    和 Vuex 比較像,先做一個index.js 文件定義狀態,然後在main.js 裡面掛載
// store-ds/index.js
import VuexDataState from 'vue-data-state'

export default VuexDataState.createStore({
  global: { // 全局狀態
    blogState: {
      name:'博文的狀態', // 測試用
      currentGroupId: 0, // 選擇的分組ID。0:沒選擇
      currentArticleId: 0, // 選擇的文章ID。
      editArticleId: 0 // 當前修改的文章ID
    },
    dicussState: {
      name: '討論的狀態'
    }
  },
  local: { // 局部狀態
    // 數據列表,使用前需要先註冊
    dataListState() { // 顯示博文列表用的狀態
      return {
        findKind: {}, // 查詢方式
        find: {}, // 查詢關鍵字
        page: { // 分頁參數
          pageTotal: 100,
          pageSize: 2,
          pageIndex: 1,
          orderBy: { id: false }
        },
        _query: {}, // 快取的查詢條件
        isReload: false // 重新載入數據,需要統計總數
      }
    }
  },
  // 可以給全局狀態設置初始狀態,同步數據可以直接在上面設置,如果是非同步數據,可以在這裡設置。
  init(state) {
    setTimeout(() => {
      state.blogState.name = 'int裡面設置的數據,可以非同步'
    },3000)
  }
}) 

main.js

import { createApp } from 'vue'
import App from './App.vue'
import router from './router' // 路由
import store from './store-ds' // 輕量級狀態

createApp(App)
  .use(router) // 路由
  .use(store) // 輕量級狀態
  .mount('#app')

具體使用方式在後面使用的時候在介紹。

安裝 element-plus

按照官網(//element-plus.gitee.io/#/zh-CN/component/installation)介紹安裝 element-plus

yarn add element-plus --save

安裝element-plus.png

vite2支援各種UI庫,或者說支援什麼UI庫,其實還是看vue3。
使用方面也沒啥區別。

import { createApp } from 'vue'
import App from './App.vue'
import router from './router' // 路由
import store from './store-ds' // 輕量級狀態

// UI庫
import ElementPlus from 'element-plus'
import 'element-plus/lib/theme-chalk/index.css'
import 'dayjs/locale/zh-cn'
import locale from 'element-plus/lib/locale/lang/zh-cn'

createApp(App)
  .use(router) // 路由
  .use(store) // 輕量級狀態
  .use(ElementPlus, { locale, size: 'small' }) // UI庫
  .mount('#app')

安裝 v-md-editor

按照官網(//ckang1229.gitee.io/vue-markdown-editor/zh/quick-start.html#安裝支援-vue3-的版本)介紹,安裝 v-md-editor,用於編輯博文。

yarn add @kangc/v-md-editor@next

注意:一定要帶上@next,否則在vue3裡面會報錯,別問我是怎麼知道了,還不是沒仔細看文檔踩的坑。

安裝v-mk-editor.png

好了項目的架子搭建起來了,後面就是具體的實現方式。
下篇更精彩。
碼字不易,感謝點贊。

Tags: