Vue3實戰(05)-教你快速搭建Vue3工程化項目

来源:https://www.cnblogs.com/JavaEdge/archive/2023/10/12/17759857.html
-Advertisement-
Play Games

除了Vue 3這個庫,還需Vue 3 最新全家桶。 1 環境準備 之前語法演示直接使用script引入Vue 3,從而在瀏覽器里實現所有調試功能。但實際項目中,使用專門調試工具。在項目上線之前,代碼也需打包壓縮,並考慮到研發效率和代碼可維護性,所以在下麵,需建立一個工程化項目實現這些功能。 工具 V ...


除了Vue 3這個庫,還需Vue 3 最新全家桶。

1 環境準備

之前語法演示直接使用script引入Vue 3,從而在瀏覽器里實現所有調試功能。但實際項目中,使用專門調試工具。在項目上線之前,代碼也需打包壓縮,並考慮到研發效率和代碼可維護性,所以在下麵,需建立一個工程化項目實現這些功能。

工具

  • VS Code寫Vue 3的代碼
  • 直接在Chrome瀏覽器里展示

image-20231012141518814

  • Vue 2官方推薦Vue-cli創建項目
  • Vue 3建議使用Vite創建項目,因為vite能夠提供更好更快的調試體驗。使用Vite前,先安裝Node.js

推薦使用VS Code的官方擴展插件Volar,這個插件給Vue 3提供了全面的開發支持。我們訪問Volar的 地址,直接點擊Install,就會啟動VS Code並且安裝。然後使用Chrome訪問 Vue 3調試插件的 地址 ,可以幫助我們在瀏覽器里高效的調試頁面。

命令行視窗對vuejs目錄執行下麵的命令,創建一個Vite的初始化項目。

npm init @vitejs/app

之後,在Project name這一行,我們輸入項目的名字,例如geek-admin;接著,在Select a framework這一行輸入框架的名字,這裡我們選擇vue;再之後,在select a variant 這一行,因為在項目里,我們沒有選擇TS,所以這裡我們依然選擇vue即可。

看geek-admin下麵的文件目錄,這個目錄就是我們項目啟動的骨架了。目錄中的index.html是項目的入口;package.json是管理項目依賴和配置的文件;public目錄放置靜態資源,比如logo等圖片;vite.config.js就是和Vite相關所有工程化的配置;src就是工作的重點,我們大部分的代碼都會在src目錄下管理和書寫,後面我們也會在src目錄下細化項目規範。

.
├── README.md
├── index.html           入口文件
├── package.json
├── public               資源文件
│   └── favicon.ico
├── src                  源碼
│   ├── App.vue          單文件組件
│   ├── assets
│   │   └── logo.png
│   ├── components
│   │   └── HelloWorld.vue
│   └── main.js          入口
└── vite.config.js vite工程化配置文件

2 Vue2.x V.S Vue3.x

2.1 main.js

  • 通過按需導入的 createApp 方法構建 vue 實例
  • 通過 vue實例.use 掛載插件(router 、 wuex)
  • 沒有了 wue 構造方法,也就無法再掛載原型

2.2 App.vue

組件內部結構無變化

依然是:

  • tempalte
  • script
  • style

template標簽

支持多個根標簽。

2.3 store/index.js

  • 通過 按需導入的createStore 萬江來來構建store 實例
  • 無需再通過 Vue.use(vuex) 形式掛載

2.4 route/index.js

  • 通過 按需導入的createRouter 萬法來構建router

  • 通過按需導入的 createWebHashHistory 方法來創建

  • 無需再通過 Vue.use(VueRouter) 形式掛載

  • routes 路由表的定義無差別

2.5 小結

vue3 的初始化項目中,與 vue2 對比的最大差異其實就是:

  • vue3 使用 按需導入的形式 進行初始化操作
  • template標簽中支持多個根標簽

之後,在geek-admin文件夾內執行npm install 命令,來進行依賴的安裝,然後執行npm run dev 命令來啟動項目,看到如下信息就算是啟動成功了。

打開 http://localhost:3000/

完成項目初始化後,細化src目錄,搭建源碼骨架。我們去VS Code里打開項目,修改一下src目錄下的App.vue 文件。例如,我們改動一下文件中的HelloWorld組件,把msg改成“你好,javaedge”,之後你會發現瀏覽器不需要我們去刷新,首頁大標題就自動更新了,這種熱更新的開發體驗會伴隨我們整個項目開發,極大提高我們的開發效率。

現在項目架構如下,擁有工程初步。從下往上看這個架構:

  • 所有工程化體系都是基於Node.js生態
  • VS Code+Volar編輯器+語法提示工具作為上層開發工具
  • 使用Vite作為工程化工具
  • 使用Chrome進行調試

都是Vue 3工程化體系的必備工具。

image-20231012142759413

開發項目是多頁面,所以vue-router和Vuex也成為必選:

  • Vue負責核心
  • Vuex負責管理數據
  • vue-router負責管理路由

geek-admin目錄中使用下麵這段代碼安裝Vuex和vue-router。

npm install vue-router@next vuex@next

框架搭建完畢後,我們如何在項目的src目錄下麵組織我們的路由和其他代碼呢?我們需要制定一些基本的規範,最常見的規範就是使用文件夾來做區分。對於如何做分區,下麵的規範這一部分就會介紹到。

3 規範

無規矩不成方圓,團隊項目中的規範尤其重要。我們先對幾個文件夾的分層進行規定,便於管理,下麵是src目錄的組織結構。

├── src
│   ├── api            數據請求
│   ├── assets         靜態資源
│   ├── components     組件
│   ├── pages          頁面
│   ├── router         路由配置
│   ├── store          vuex數據
│   └── utils          工具函數

我們的頁面需要引入路由系統,我們進入到router文件夾中,新建index.js,寫入下麵的代碼:

import {
    createRouter,
    createWebHashHistory,
  } from 'vue-router'
  import Home from '../pages/home.vue'
  import About from '../pages/about.vue'

  const routes = [
    {
      path: '/',
      name: 'Home',
      component: Home
    },
    {
      path: '/about',
      name: 'About',
      component: About
    }
  ]

  const router = createRouter({
    history: createWebHashHistory(),
    routes
  })

  export default router

上面的代碼中,我們首先引入了createRouter和createWebHashHistory兩個函數。createRouter用來新建路由實例,createWebHashHistory用來配置我們內部使用hash模式的路由,也就是url上會通過 # 來區分。

之後在上面的代碼里,我們引入兩個組件about和home,根據不同的訪問地址 //home 去渲染不同的組件,最後返回router即可。

現在頁面就會報錯,提示我們找不到about和home這兩個組件,然後我們去pages下麵新建兩個文件,分別輸入如下內容:

<template>
    <h1>這是關於頁面</h1>
</template>
<template>
    <h1>這是首頁</h1>
</template>

註意,這兩個文件是以 .vue 作為尾碼的,這是Vue中單文件組件的寫法,我們可以在一個文件中通過template、script和style來維護Vue組件的HTML、JavaScript和CSS。然後我們在main.js中,載入router的配置:

import { createApp } from 'vue'
import App from './App.vue'

import router from './router/index'
createApp(App)
    .use(router)
    .mount('#app')

然後去App.vue中,我們刪掉template之前的代碼,加入如下內容:

<template>
  <div>
    <router-link to="/">首頁</router-link> |
    <router-link to="/about">關於</router-link>
  </div>
  <router-view></router-view>
</template>

代碼中的router-link和router-view就是由vue-router註冊的全局組件,router-link負責跳轉不同的頁面,相當於Vue世界中的超鏈接a標簽; router-view負責渲染路由匹配的組件,我們可以通過把router-view放在不同的地方,實現複雜項目的頁面佈局。

我們在瀏覽器中打開 http://localhost:3000/,就會看到下圖的頁面,點擊“關於”和“首頁”都會有頁面切換的效果。

image-20231012143145866

我們打開Chrome的調試窗,這也是我們以後常用的調試頁面,在Vue這個標簽頁中,能很清晰地看到組件的層級關係。

至此,一個多頁面的Vue開發項目雛形就完成了,頁面架構變成:

還不夠,實際項目開發中還有各種工具集成,如:

  • 寫CSS代碼時,要預處理工具stylus或sass

  • 組件庫開發中,我們需要Element3作為組件庫

  • 網路請求後端數據的時候,要Axios

對於團隊維護的項目,工具集成完畢後,還要有嚴格的代碼規範。我們需要Eslint和Prettier來規範代碼的格式,Eslint和Prettier可以規範項目中JavaScript代碼的可讀性和一致性。

代碼的管理還需要使用Git,我們預設使用GitHub來托管我們的代碼。此外,我們還會使用commitizen來規範Git的日誌信息。

對於我們項目的基礎組件,我們還會提供單元測試來確保代碼質量和可維護性,最後我們還會配置GitHub Action來實現自動化的部署。

最後項目架構:

項目雛形搭建完畢後,後面用到哪一塊就會把哪一塊加上,也就是用一個循序漸進的方式學習。 比如我們下一講完成一個獨立功能的時候,才會把Git規範加上。至此,項目搭建完畢,在下一講中,我們開啟下一步,也就是頁面的主體代碼編寫。

4 總結

環境準備階段,我們基於Vite 2和Vue 3搭建了我們項目的初始化框架,包含文件規範、工程化、路由和開發的基礎配置,後面我們所有的代碼都會在這個架構基礎之上進行添加。你可以理解環境準備階段是給Vue 3提供裝備的過程,vue-router提供路由的管理、Vuex管理數據流、VS Code+Chrome+Vite則提供了極致的開發調試體驗。

制定了代碼和文件夾規範。後續新增組件就要去src/components目錄,新增數據請求就去src/api目錄。並且main.js在項目入口對路由數據進行了註冊,這樣我們就能夠通過執行 npm run dev 啟動這個項目。之後,我們就能看到首頁和關於頁面,這樣項目的雛形我們就搭建完畢。

最後展示了一下整個項目架構的全景圖,你能看到,從環境的準備到項目的初始化,再到搭建完成項目雛形,整個項目架構的全景圖也在項目開發過程中逐漸完善。

本文由博客一文多發平臺 OpenWrite 發佈!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 什麼是Util應用框架? Util是一個.Net平臺下的應用框架,旨在提升中小團隊的開發能力,由工具類、分層架構基類、Ui組件,配套代碼生成模板,許可權等組成。 Util應用框架 7.x介紹 Util應用框架的最新版本是7.x,保持與.Net最新穩定版本同步更新。 與Util 1.x相比,最新版本代碼 ...
  • 訪問項 您無法通過引用索引或鍵來訪問集合中的項。但是,您可以使用for迴圈遍歷集合項,或者使用in關鍵字檢查集合中是否存在指定的值。 示例,遍歷集合併列印值: thisset = {"apple", "banana", "cherry"} for x in thisset: print(x) 示例, ...
  • 在日常生活和工作中,我們經常需要處理海量的數據,篩選出有用的信息。這個時候,布隆過濾器(Bloom Filter)就派上了用場 ...
  • 最近很多小伙伴說,不會用瀏覽器開發者工具,今天我們就一起來深入瞭解一下開發者工具。 以谷歌瀏覽器為例 谷歌瀏覽器開發者工具中的Network 是我們學習經常用到的,那麼你都知道他們每個功能的意義嗎? 因本人經常有360極速瀏覽器,谷歌內核,所以本文以360極速瀏覽器的開發者工具Network為例,基 ...
  • 本方法適用於Linux環境下: 1.安裝庫Cython pip3 install Cython==3.0.0a10 2.編寫待加密文件:hello.py import random def ac(): i = random.randint(0, 5) if i > 2: print('success ...
  • 在Redis和MySQL的實際應用過程中,如何保證Redis和MySQL雙寫時的數據一致性問題成為了開發者們面臨的重要挑戰 ...
  • 本文已收錄至GitHub,推薦閱讀 👉 Java隨想錄 微信公眾號:Java隨想錄 原創不易,註重版權。轉載請註明原作者和原文鏈接 目錄Pipeline介紹原生批命令(MSET, MGET) VS PipelinePipeline的優缺點一些疑問Pipeline代碼實現 當我們談論Redis數據處 ...
  • 基於java醫院管理系統設計與實現,可適用於醫院信息管理系統,醫院掛號系統,醫院醫生排班系統,醫院患者管理系統,醫院醫生預約系統,醫院預約系統,醫院藥物信息系統,醫院預約掛號系統,醫療管理系統,醫療系統等等; ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...