自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

種草 Vue3 中幾個好玩的插件和配置

開發(fā) 前端
今天松哥就來和大家捋一捋 Vue3 中幾個好玩的插件和配置,學(xué)完之后,相信大家對 TienChin 項(xiàng)目前端的很多寫法就明白了。

小伙伴們知道 TienChin 項(xiàng)目前端用的是 Vue3,當(dāng)我們把 Vue3 官網(wǎng)刷了一遍之后回來看 TienChin 項(xiàng)目的前端,發(fā)現(xiàn)還是有很多不太一樣的地方,今天松哥就來和大家捋一捋 Vue3 中幾個好玩的插件和配置,學(xué)完之后,相信大家對 TienChin 項(xiàng)目前端的很多寫法就明白了。

1. Vite

首先來給大家介紹一下 Vite,雖然這在 Vue3 中并不是必須的,但是考慮到 TienChin 項(xiàng)目前端用了這個,還是給大家稍微說兩句。

Vite(法語意為 "快速的",發(fā)音 /vit/,發(fā)音同 "veet")是一種新型前端構(gòu)建工具,能夠顯著提升前端開發(fā)體驗(yàn)。它主要由兩部分組成:

  • 一個開發(fā)服務(wù)器,它基于 原生 ES 模塊 提供了 豐富的內(nèi)建功能,如速度快到驚人的 模塊熱更新(HMR)。
  • 一套構(gòu)建指令,它使用 Rollup 打包你的代碼,并且它是預(yù)配置的,可輸出用于生產(chǎn)環(huán)境的高度優(yōu)化過的靜態(tài)資源。

Vite 意在提供開箱即用的配置,同時它的插件 API 和 JavaScript API 帶來了高度的可擴(kuò)展性,并有完整的類型支持。

如果小伙伴們絕得陌生,那么不妨回憶下我們之前在 vhr 中給大家介紹的 Webpack,其實(shí)這個 Vite 相當(dāng)于就是 Webpack。相比于 Webpack 的傳統(tǒng)工具,Vite 最大的特點(diǎn)就是快。

Vite 通過在一開始將應(yīng)用中的模塊區(qū)分為依賴和源碼兩類,改進(jìn)了開發(fā)服務(wù)器啟動時間,因?yàn)橐蕾囎兓《创a才是經(jīng)常會變的東西。

不知道小伙伴們看到這里有沒有想到我們 Java 中也有一個類似的玩意,那就是 Spring Boot 熱加載。

Spring Boot 的熱加載中用到了兩個類加載器:一個是 base classloader,專門用來加載一些第三方的類;還有一個是 restart classloader,專門用來加載我們自己寫的類。熱加載的時候,只需要 restart classloader 工作即可。

好了,對于我們 Java 工程師來說,大家知道 Vite 是一個項(xiàng)目構(gòu)建工具就可以了,接下來的例子我要通過 Vite 來和大家演示。

2. 自動導(dǎo)入常見方法

在 TienChin 項(xiàng)目中,小伙伴們看到,很多原本需要導(dǎo)入之后才能用的方法,竟然都不需要導(dǎo)入就可以使用。

我創(chuàng)建一個項(xiàng)目來給大家演示看下。

我們用 Vite 來構(gòu)建一個項(xiàng)目。

如果你的 npm 版本是 6.x,那么執(zhí)行如下命令創(chuàng)建一個 Vue3 工程:

npm create vite@latest my-vue-app --template vue

如果你的 npm 版本是 7+,那么執(zhí)行如下命令創(chuàng)建一個 Vue3 工程:

npm create vite@latest my-vue-app -- --template vue

這個 Vue 工程創(chuàng)建成功之后,沒有 router 啥的,需要我們自己安裝上,這個常規(guī)操作我就不多說了。

2.1 傳統(tǒng)寫法

現(xiàn)在我舉一個簡單的例子,比如說在 MyVue01 這個頁面上有一個按鈕,點(diǎn)擊之后,可以跳轉(zhuǎn)到 MyVue02 這個頁面,那么我們的點(diǎn)擊事件可以按照如下的方式來寫:

<script setup>
import {useRouter} from 'vue-router';
const router = useRouter();
function go() {
router.push("/my02");
}
</script>

首先我們需要從 vue-router 中導(dǎo)入 useRouter 函數(shù),然后調(diào)用該函數(shù)可以獲取到 router 對象,再調(diào)用 router 中的 push 方法就可以完成頁面跳轉(zhuǎn)了。

以前在 Vue2 中,我們一般都是通過 this.$router 來獲取到 router 對象,然后通過 router 對象來實(shí)現(xiàn)頁面導(dǎo)航操作。但是在 Vue3 中,沒有 this 了,不過 Vue3 中提供了一個 getCurrentInstance 方法來獲取當(dāng)前 Vue 實(shí)例,所以頁面跳轉(zhuǎn),我們也可以按照下面這種方式來寫:

<script setup>
import {getCurrentInstance} from 'vue';

const {proxy} = getCurrentInstance();

function go() {
proxy.$router.push("/my02");
}
</script>

這里的 proxy 就類似于以前 Vue2 中的 this。

松哥這里是以 router 為例來和大家演示,如果是 Vuex/Pinia,也有類似的寫法,我就不挨個演示了。

無論是上面那種寫法,都需要首先導(dǎo)入一個函數(shù),然后才能開始使用。然而我們在 TienChin 項(xiàng)目的前端代碼中,雖然也有導(dǎo)入,但是像上面這兩個例子中導(dǎo)入都是沒有的,那是怎么回事?

這就借助于一個自動導(dǎo)入的工具了。

2.2 自動導(dǎo)入

前端有一個工具插件叫做 unplugin-auto-import,通過這個插件可以實(shí)現(xiàn)一些方法的自動導(dǎo)入。該方法的使用步驟如下:

(1) 安裝插件:

npm i unplugin-auto-import -D

由于這個插件只是一個開發(fā)輔助工具而已,所以安裝的時候加上 -D 參數(shù),這樣就會安裝到 devDependencies 中了。

(2) 配置插件:

插件的配置是在項(xiàng)目根目錄下的 vite.config.js 文件中進(jìn)行配置的,內(nèi)容如下:

import {defineConfig} from 'vite'
import vue from '@vitejs/plugin-vue'
import AutoImport from 'unplugin-auto-import/vite'

// https://vitejs.dev/config/
export default defineConfig({
plugins: [vue(), AutoImport({
// 可以自定義文件生成的位置,默認(rèn)是根目錄下,使用ts的建議放src目錄下
// dts: 'src/auto-imports.d.ts',
imports: ['vue','vue-router']
})]
})

小伙伴們注意注釋掉的代碼,這個插件配置好之后,啟動項(xiàng)目,默認(rèn)會在 node_modules/unplugin-auto-import/auto-imports.d.ts 位置生成一個文件,但是配置 dts 屬性可以修改這個文件生成的位置。

imports 則是指需要自動導(dǎo)入的方法都是哪里的方法,以我們前文中的兩個案例為例,useRouter 是 vue-router 中的方法,getCurrentInstance 方法則是 vue 中的,所以這里導(dǎo)入我選擇了 vue 和 vue-router,當(dāng)然,小伙伴們在開發(fā)中,如果有需要,也可以導(dǎo)入 Vuex/Pinia 等。

配置好了插件之后,我們當(dāng)我們再次需要使用上面那些方法的時候,就不需要導(dǎo)入了,直接用即可:

<script setup>

const {proxy} = getCurrentInstance();

function go() {
proxy.$router.push("/my02");
}
</script>

useRouter 也不需要導(dǎo)入了。

<script setup>

const router = useRouter();
function go() {
router.push("/my02");
}
</script>

以后,凡是 vue 和 vue-router 中的方法都是不需要導(dǎo)入就可以使用了,其他組件中的方法則還是跟以前一樣,必須導(dǎo)入之后才可以使用。

3. 組件去后綴

以前在 Vue2 中,我們導(dǎo)入組件的時候,可能都習(xí)慣省略 .vue 后綴,畢竟用 WebStorm 開發(fā)的時候,系統(tǒng)自動導(dǎo)入的時候也會幫我們省略掉這個后綴,寫法類似下面這樣:

import MyVue01 from "../views/MyVue01";
import MyVue02 from "../views/MyVue02";

但是現(xiàn)在在 Vite 中,如果還是這樣寫就會報錯,類似下面這樣:

圖片

現(xiàn)在必須要寫后綴了,但是有的人就是不習(xí)慣寫后綴,那怎么辦?我們可以在 vite.config.js 中添加如下配置,這樣就可以不用寫 .vue?、.js 等后綴了。

import {defineConfig} from 'vite'
import vue from '@vitejs/plugin-vue'
import AutoImport from 'unplugin-auto-import/vite'

// https://vitejs.dev/config/
export default defineConfig({
plugins: [vue(), AutoImport({
// 可以自定義文件生成的位置,默認(rèn)是根目錄下,使用ts的建議放src目錄下
// dts: 'src/auto-imports.d.ts',
imports: ['vue','vue-router']
})],
resolve: {
extensions: ['.js', '.ts', '.jsx', '.tsx', '.json', '.vue']
}
})

好了,現(xiàn)在大家明白了為什么 TienChin 項(xiàng)目前端都不寫 .vue 了吧。

4. name 屬性問題

以前在 Vue2 中,我們可以通過如下方式給一個 Vue 組件設(shè)置名稱:

<script>
export default {
name: "MyVue03",
mounted() {
console.log("MyVue03")
}
}
</script>

在 Vue3 中,我們?nèi)绻麑?setup 寫到 script 節(jié)點(diǎn)中的話,就沒法定義 name 了,如果還需要使用 name 屬性的話,那么可以再定義一個 script 節(jié)點(diǎn),專門用來配置 name 屬性,如下:

<script setup>

import {useRouter} from 'vue-router';

const router = useRouter();

function go() {
router.push("/my02");
}
</script>

<script>
export default {
name: "JavaboyVue"
}
</script>

提示,我們在調(diào)試頁面中,就可以看到自定義的組件名了:

圖片

不過這種寫法多多少還是有點(diǎn)費(fèi)事。

通過 vite-plugin-vue-setup-extend 插件可以簡化在 Vue3 中設(shè)置 name 屬性,安裝該插件之后,我們就可以直接在 script 節(jié)點(diǎn)中定義 name 屬性的值了,安裝方式如下:

npm install vite-plugin-vue-setup-extend -D

裝好之后,在 vite.config.js 中再進(jìn)行配置一下,如下:

import {defineConfig} from 'vite'
import vue from '@vitejs/plugin-vue'
import AutoImport from 'unplugin-auto-import/vite'
import VueSetupExtend from 'vite-plugin-vue-setup-extend'

// https://vitejs.dev/config/
export default defineConfig({
plugins: [
vue(),
AutoImport({
// 可以自定義文件生成的位置,默認(rèn)是根目錄下,使用ts的建議放src目錄下
// dts: 'src/auto-imports.d.ts',
imports: ['vue', 'vue-router']
}),
VueSetupExtend()
],
resolve: {
extensions: ['.js', '.ts', '.jsx', '.tsx', '.json', '.vue']
}
})

VueSetupExtend 就是 vite-plugin-vue-setup-extend 插件的配置。

配置完成后,我們就可以通過如下方式來定義 name 屬性了:

<script setup name="JavaboyVue">

import {useRouter} from 'vue-router';

const router = useRouter();

function go() {
router.push("/my02");
}
</script>

直接在 script 節(jié)點(diǎn)中加一個 name 屬性就行了。?

責(zé)任編輯:趙寧寧 來源: 江南一點(diǎn)雨
相關(guān)推薦

2021-05-27 10:36:34

ProvideInjectVue3

2022-06-13 08:39:21

Vue3API

2021-12-08 09:09:33

Vue 3 Computed Vue2

2021-12-01 08:11:44

Vue3 插件Vue應(yīng)用

2022-08-01 11:41:00

Vue插件

2020-03-25 18:23:07

Vue2Vue3組件

2022-08-10 10:57:35

Vue3開發(fā)插件

2021-11-30 08:19:43

Vue3 插件Vue應(yīng)用

2023-11-28 09:03:59

Vue.jsJavaScript

2022-07-20 11:13:05

前端JSONVue3

2021-12-02 05:50:35

Vue3 插件Vue應(yīng)用

2024-03-21 08:34:49

Vue3WebSocketHTTP

2020-09-19 21:15:26

Composition

2022-03-24 15:28:43

Vue開發(fā)框架

2022-11-01 11:55:27

ReactVue3

2024-03-22 08:57:04

Vue3Emoji表情符號

2023-08-24 08:37:50

VueCSS

2024-04-08 07:28:27

PiniaVue3狀態(tài)管理庫

2021-07-29 12:05:18

Vue3Api前端

2024-04-10 08:27:32

PiniaVue3持久化插件
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號