最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

一個(gè)基于vite構(gòu)建的vue3+pinia+ts+elementUI plus的初始化開箱即用的項(xiàng)目模版

2022-07-17 16:15 作者:前端少年汪  | 我要投稿

前言

vue3如今已經(jīng)成為默認(rèn)版本了,相信大多數(shù)公司已經(jīng)全面擁抱vue3了。

而Vite作為新一代的新型前端構(gòu)建工具,使用它能夠顯著提升前端開發(fā)體驗(yàn)。

什么是Vite

這里借用官方的介紹:

  • 一個(gè)開發(fā)服務(wù)器,它基于 原生 ES 模塊 提供了 豐富的內(nèi)建功能,如速度快到驚人的 模塊熱更新(HMR)。

  • 一套構(gòu)建指令,它使用 Rollup 打包你的代碼,并且它是預(yù)配置的,可輸出用于生產(chǎn)環(huán)境的高度優(yōu)化過的靜態(tài)資源。

Vite的優(yōu)勢

  • 開箱即用

  • 具備插件API和JS API

  • 高度的可擴(kuò)展性

  • 熱更新

  • 高效,快速

搭建第一個(gè) Vite 項(xiàng)目

兼容性注意

Vite 需要 Node.js 版本 >= 12.0.0。然而,有些模板需要依賴更高的 Node 版本才能正常運(yùn)行,當(dāng)你的包管理器發(fā)出警告時(shí),請(qǐng)注意升級(jí)你的 Node 版本。

NPM:


Yarn:


創(chuàng)建Vite項(xiàng)目的命令有很多,大同小異,但是我推薦使用 yarn的方式,誰用誰知道,命令簡潔,速度更快,當(dāng)然也有其它的方式,可以看一下官網(wǎng)的推薦方式,這個(gè)選擇自己喜歡的就好了

初始化好之后的目錄:

執(zhí)行:npm i或者yarn安裝依賴,再執(zhí)行?npm run dev?或者?yarn dev?打開瀏覽器輸入http://localhost:3000

即可看到

這樣一個(gè)vue3+vite+ts的項(xiàng)目初始化就完成了

運(yùn)行項(xiàng)目不會(huì)默認(rèn)打開瀏覽器,需要在package.json里面 ,在vite 后面加上--open

安裝vue全家桶

Pinia狀態(tài)管理

由于 vuex 4 對(duì) typescript 的支持讓人感到難過,所以狀態(tài)管理?xiàng)売昧?vuex 而采取了 pinia. pinia 的作者是 Vue 核心團(tuán)隊(duì)成員

尤大好像說 pinia 可能會(huì)代替 vuex,所以請(qǐng)放心使用。

Pinia 與 Vuex 的區(qū)別:

  • id 是必要的,它將所使用 store 連接到 devtools。

  • 創(chuàng)建方式:new Vuex.Store(...)(vuex3),createStore(...)(vuex4)。

  • 對(duì)比于 vuex3 ,state 現(xiàn)在是一個(gè)函數(shù)返回對(duì)象。

  • 沒有 mutations,不用擔(dān)心,state 的變化依然記錄在 devtools 中。

安裝 pinia

main.ts

新建store文件夾,新建index.ts

組件內(nèi)使用

getters 用法介紹

Pinia 中的 getter 與 Vuex 中的 getter 、組件中的計(jì)算屬性具有相同的功能


actions

這里與 Vuex 有極大的不同,Pinia 僅提供了一種方法來定義如何更改狀態(tài)的規(guī)則,放棄 mutations 只依靠 Actions,這是一項(xiàng)重大的改變。

Pinia 讓 Actions 更加的靈活:

  • 可以通過組件或其他 action 調(diào)用

  • 可以從其他 store 的 action 中調(diào)用

  • 直接在 store 實(shí)例上調(diào)用

  • 支持同步或異步

  • 有任意數(shù)量的參數(shù)

  • 可以包含有關(guān)如何更改狀態(tài)的邏輯(也就是 vuex 的 mutations 的作用)

  • 可以 $patch 方法直接更改狀態(tài)屬性

VueRouter

yarn add vue-router@4
在 src 文件下新增 router 文件夾 => router.ts 文件,內(nèi)容如下:

修改入口文件 mian.ts :

到這里路由的基礎(chǔ)配置已經(jīng)完成了,更多配置信息可以查看 vue-router 官方文檔:

vue-router: next.router.vuejs.org/zh/guide/

vue-router4.x 支持 typescript,配置路由的類型是 RouteRecordRaw,這里 meta 可以讓我們有更多的發(fā)揮空間,這里提供一些參考

  • title:string; 頁面標(biāo)題,通常必選。

  • icon?:string; 圖標(biāo),一般配合菜單使用。

  • auth?:boolean; 是否需要登錄權(quán)限。

  • ignoreAuth?:boolean; 是否忽略權(quán)限。

  • roles?:RoleEnum[]; 可以訪問的角色

  • keepAlive?:boolean; 是否開啟頁面緩存

  • hideMenu?:boolean; 有些路由我們并不想在菜單中顯示,比如某些編輯頁面。

  • order?:number; 菜單排序。

  • frameUrl?:string; 嵌套外鏈。

Element-ui plus

Element Plus 目前還處于快速開發(fā)迭代中。目前使用2.0.1版可以結(jié)合vite-plugin-style-import插件按需加載樣式。 unplugin-vue-components 按需自動(dòng)導(dǎo)入組件 使用 Element Plus組件時(shí)可以直接使用

main.ts

Axios封裝

實(shí)際使用中可以根據(jù)項(xiàng)目修改,比如RESTful api中可以自行添加put和delete請(qǐng)求,ResType也可以根據(jù)后端的通用返回值動(dòng)態(tài)的去修改

新增 http文件夾,http下新增 Http.ts 文件以及 api 文件夾:

http.ts

在http文件夾下創(chuàng)建api文件夾用于統(tǒng)一存放接口文件,統(tǒng)一管理api

http/api/login.ts


至此,一個(gè)簡單地請(qǐng)求封裝完成了!!!!

除了自己手動(dòng)封裝 axios ,這里還推薦一個(gè) vue3 的請(qǐng)求庫: VueRequest,非常好用,下面來看看 VueRequest有哪些比較好用的功能吧!!!

  • 所有數(shù)據(jù)都具有響應(yīng)式

  • 輪詢請(qǐng)求

  • 自動(dòng)處理錯(cuò)誤重試

  • 內(nèi)置請(qǐng)求緩存

  • 節(jié)流請(qǐng)求與防抖請(qǐng)求

  • 聚焦頁面時(shí)自動(dòng)重新請(qǐng)求

  • ?? 強(qiáng)大的分頁擴(kuò)展以及加載更多擴(kuò)展

  • 完全使用 Typescript 編寫,具有強(qiáng)大的類型提示

  • ?? 兼容 Vite

  • 輕量化

  • 開箱即用

tsx支持

首先需要安裝官方維護(hù)的vite插件@vitejs/plugin-vue-jsx,這個(gè)插件其實(shí)核心還是@vue/babel-plugin-jsx,只是在這個(gè)插件上封裝了一層供vite插件調(diào)用。所以關(guān)于vue的jsx語法規(guī)范可以直接參看@vue/babel-plugin-jsx,文檔鏈接如下,建議大家可以先讀一遍語法規(guī)范。官方寫得比較詳細(xì),后續(xù)我也會(huì)結(jié)合實(shí)際講解一下大部分規(guī)范的用法,vue jsx語法規(guī)范。

安裝完之后在vite.config.ts進(jìn)行插件使用,代碼如下:

環(huán)境變量配置

vite 提供了兩種模式:具有開發(fā)服務(wù)器的開發(fā)模式(development)和生產(chǎn)模式(production)

項(xiàng)目根目錄新建: .env.development

NODE_ENV=development VITE_APP_WEB_URL= 'YOUR WEB URL'

項(xiàng)目根目錄新建: .env.production

NODE_ENV=production VITE_APP_WEB_URL= 'YOUR WEB URL'

組件中使用:

console.log(import.meta.env.VITE_APP_WEB_URL)

配置 package.json:

打包區(qū)分開發(fā)環(huán)境和生產(chǎn)環(huán)境

"build:dev": "vite build --mode development",

"build:pro": "vite build --mode production",

Vite 常用基礎(chǔ)配置

基礎(chǔ)配置

運(yùn)行 代理 和 打包 配置

生產(chǎn)環(huán)境生成 .gz 文件

開啟 gzip 可以極大的壓縮靜態(tài)資源,對(duì)頁面加載的速度起到了顯著的作用。\

使用 vite-plugin-compression 可以 gzip 或 brotli 的方式來壓縮資源,這一步需要服務(wù)器端的配合,vite 只能幫你打包出 .gz 文件。此插件使用簡單,你甚至無需配置參數(shù),引入即可。

# 安裝 yarn add --dev vite-plugin-compression

plugins 中添加:


最終 vite.config.ts

常用插件

可以查看官方文檔:vitejs.cn/plugins/\

  • @vitejs/plugin-vue 提供 Vue 3 單文件組件支持

  • @vitejs/plugin-vue-jsx 提供 Vue 3 JSX 支持(通過 專用的 Babel 轉(zhuǎn)換插件)

  • @vitejs/plugin-legacy 為打包后的文件提供傳統(tǒng)瀏覽器兼容性支持

  • unplugin-vue-components 組件的按需自動(dòng)導(dǎo)入

  • vite-plugin-compression 使用 gzip 或者 brotli 來壓縮資源

非常推薦使用的 hooks 庫

因?yàn)関ue3.x和react hooks真的很像,所以就稱為 hooks\

VueUse:vueuse.org/

看到這個(gè)庫的第一眼,讓我立馬想到了 react 的 ahooks

VueUse 是一個(gè)基于 Composition API 的實(shí)用函數(shù)集合。通俗的來說,這就是一個(gè)工具函數(shù)包,它可以幫助你快速實(shí)現(xiàn)一些常見的功能,免得你自己去寫,解決重復(fù)的工作內(nèi)容。以及進(jìn)行了基于 Composition API 的封裝。讓你在 vue3 中更加得心應(yīng)手。

想要入手 vue3 的小伙伴,趕快學(xué)習(xí)起來吧?。?!

最后給大家奉上倉庫地址吧:gitee.com/frontendBoy…

寫在最后

公眾號(hào):前端少年汪

專注分享 web 前端相關(guān)技術(shù)文章、視頻教程資源、熱點(diǎn)資訊等,如果喜歡我的分享,給 點(diǎn)一個(gè)贊 或者 ?關(guān)注 都是對(duì)我最大的支持。

一個(gè)基于vite構(gòu)建的vue3+pinia+ts+elementUI plus的初始化開箱即用的項(xiàng)目模版的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
扎鲁特旗| 东城区| 故城县| 南川市| 兰坪| 永川市| 阿瓦提县| 通山县| 大厂| 塔河县| 安阳市| 黄梅县| 晋中市| 九龙县| 增城市| 吕梁市| 梁河县| 鹤壁市| 江都市| 台州市| 金溪县| 郸城县| 龙里县| 汤原县| 桦南县| 新营市| 平罗县| 女性| 永嘉县| 镇康县| 溧阳市| 佛山市| 邵阳县| 文成县| 囊谦县| 平江县| 教育| 白山市| 阿瓦提县| 扶余县| 石嘴山市|