<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
小夥伴們知道 TienChin 專案前端用的是 Vue3,當我們把 Vue3 官網刷了一遍之後回來看 TienChin 專案的前端,發現還是有很多不太一樣的地方,今天鬆哥就來和大家捋一捋 Vue3 中幾個好玩的外掛和設定,學完之後,相信大家對 TienChin 專案前端的很多寫法就明白了。
首先來給大家介紹一下 Vite,雖然這在 Vue3 中並不是必須的,但是考慮到 TienChin 專案前端用了這個,還是給大家稍微說兩句。
Vite(法語意為 "快速的",發音 /vit/,發音同 "veet")是一種新型前端構建工具,能夠顯著提升前端開發體驗。它主要由兩部分組成:
Vite 意在提供開箱即用的設定,同時它的外掛 API 和 JavaScript API 帶來了高度的可延伸性,並有完整的型別支援。
如果小夥伴們絕得陌生,那麼不妨回憶下我們之前在 vhr 中給大家介紹的 Webpack,其實這個 Vite 相當於就是 Webpack。相比於 Webpack 的傳統工具,Vite 最大的特點就是快。
Vite 通過在一開始將應用中的模組區分為依賴和原始碼兩類,改進了開發伺服器啟動時間,因為依賴變化小而原始碼才是經常會變的東西。
不知道小夥伴們看到這裡有沒有想到我們 Java 中也有一個類似的玩意,那就是 Spring Boot 熱載入。
Spring Boot 的熱載入中用到了兩個類載入器:一個是 base classloader,專門用來載入一些第三方的類;還有一個是 restart classloader,專門用來載入我們自己寫的類。熱載入的時候,只需要 restart classloader 工作即可。
好了,對於我們 Java 工程師來說,大家知道 Vite 是一個專案構建工具就可以了,接下來的例子我要通過 Vite 來和大家演示。
在 TienChin 專案中,小夥伴們看到,很多原本需要匯入之後才能用的方法,竟然都不需要匯入就可以使用。
我建立一個專案來給大家演示看下。
我們用 Vite 來構建一個專案。
如果你的 npm 版本是 6.x,那麼執行如下命令建立一個 Vue3 工程:
npm create vite@latest my-vue-app --template vue
如果你的 npm 版本是 7+,那麼執行如下命令建立一個 Vue3 工程:
npm create vite@latest my-vue-app -- --template vue
這個 Vue 工程建立成功之後,沒有 router 啥的,需要我們自己安裝上,這個常規操作我就不多說了。
現在我舉一個簡單的例子,比如說在 MyVue01 這個頁面上有一個按鈕,點選之後,可以跳轉到 MyVue02 這個頁面,那麼我們的點選事件可以按照如下的方式來寫:
<script setup> import {useRouter} from 'vue-router'; const router = useRouter(); function go() { router.push("/my02"); } </script>
首先我們需要從 vue-router 中匯入 useRouter 函數,然後呼叫該函數可以獲取到 router 物件,再呼叫 router 中的 push 方法就可以完成頁面跳轉了。
以前在 Vue2 中,我們一般都是通過 this.$router 來獲取到 router 物件,然後通過 router 物件來實現頁面導航操作。但是在 Vue3 中,沒有 this 了,不過 Vue3 中提供了一個 getCurrentInstance 方法來獲取當前 Vue 範例,所以頁面跳轉,我們也可以按照下面這種方式來寫:
<script setup> import {getCurrentInstance} from 'vue'; const {proxy} = getCurrentInstance(); function go() { proxy.$router.push("/my02"); } </script>
這裡的 proxy 就類似於以前 Vue2 中的 this。
鬆哥這裡是以 router 為例來和大家演示,如果是 Vuex/Pinia,也有類似的寫法,我就不挨個演示了。
無論是上面那種寫法,都需要首先匯入一個函數,然後才能開始使用。然而我們在 TienChin 專案的前端程式碼中,雖然也有匯入,但是像上面這兩個例子中匯入都是沒有的,那是怎麼回事?
這就藉助於一個自動匯入的工具了。
前端有一個工具外掛叫做 unplugin-auto-import,通過這個外掛可以實現一些方法的自動匯入。該方法的使用步驟如下:
(1) 安裝外掛:
npm i unplugin-auto-import -D
由於這個外掛只是一個開發輔助工具而已,所以安裝的時候加上 -D 引數,這樣就會安裝到 devDependencies 中了。
(2) 設定外掛:
外掛的設定是在專案根目錄下的 vite.config.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({ // 可以自定義檔案生成的位置,預設是根目錄下,使用ts的建議放src目錄下 // dts: 'src/auto-imports.d.ts', imports: ['vue','vue-router'] })] })
小夥伴們注意註釋掉的程式碼,這個外掛設定好之後,啟動專案,預設會在 node_modules/unplugin-auto-import/auto-imports.d.ts 位置生成一個檔案,但是設定 dts 屬性可以修改這個檔案生成的位置。
imports 則是指需要自動匯入的方法都是哪裡的方法,以我們前文中的兩個案例為例,useRouter 是 vue-router 中的方法,getCurrentInstance 方法則是 vue 中的,所以這裡匯入我選擇了 vue 和 vue-router,當然,小夥伴們在開發中,如果有需要,也可以匯入 Vuex/Pinia 等。
設定好了外掛之後,我們當我們再次需要使用上面那些方法的時候,就不需要匯入了,直接用即可:
<script setup> const {proxy} = getCurrentInstance(); function go() { proxy.$router.push("/my02"); } </script>
useRouter 也不需要匯入了。
<script setup> const router = useRouter(); function go() { router.push("/my02"); } </script>
以後,凡是 vue 和 vue-router 中的方法都是不需要匯入就可以使用了,其他元件中的方法則還是跟以前一樣,必須匯入之後才可以使用。
以前在 Vue2 中,我們匯入元件的時候,可能都習慣省略 .vue 字尾,畢竟用 WebStorm 開發的時候,系統自動匯入的時候也會幫我們省略掉這個字尾,寫法類似下面這樣:
import MyVue01 from "../views/MyVue01"; import MyVue02 from "../views/MyVue02";
但是現在在 Vite 中,如果還是這樣寫就會報錯,類似下面這樣:
現在必須要寫字尾了,但是有的人就是不習慣寫字尾,那怎麼辦?我們可以在 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({ // 可以自定義檔案生成的位置,預設是根目錄下,使用ts的建議放src目錄下 // dts: 'src/auto-imports.d.ts', imports: ['vue','vue-router'] })], resolve: { extensions: ['.js', '.ts', '.jsx', '.tsx', '.json', '.vue'] } })
好了,現在大家明白了為什麼 TienChin 專案前端都不寫 .vue 了吧。
以前在 Vue2 中,我們可以通過如下方式給一個 Vue 元件設定名稱:
<script> export default { name: "MyVue03", mounted() { console.log("MyVue03") } } </script>
在 Vue3 中,我們如果將 setup 寫到 script 節點中的話,就沒法定義 name 了,如果還需要使用 name 屬性的話,那麼可以再定義一個 script 節點,專門用來設定 name 屬性,如下:
<script setup> import {useRouter} from 'vue-router'; const router = useRouter(); function go() { router.push("/my02"); } </script> <script> export default { name: "JavaboyVue" } </script>
提示,我們在偵錯頁面中,就可以看到自定義的元件名了:
不過這種寫法多多少還是有點費事。
通過 vite-plugin-vue-setup-extend 外掛可以簡化在 Vue3 中設定 name 屬性,安裝該外掛之後,我們就可以直接在 script 節點中定義 name 屬性的值了,安裝方式如下:
npm install vite-plugin-vue-setup-extend -D
裝好之後,在 vite.config.js 中再進行設定一下,如下:
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({ // 可以自定義檔案生成的位置,預設是根目錄下,使用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>
到此這篇關於Vue3 中的外掛和設定推薦大全的文章就介紹到這了,更多相關Vue3外掛和設定內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45