中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Vue3中的插件和配置實例分析

發布時間:2022-08-18 09:22:11 來源:億速云 閱讀:257 作者:iii 欄目:開發技術

本篇內容介紹了“Vue3中的插件和配置實例分析”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

    1. Vite

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

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

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

    • 一套構建指令,它使用 Rollup 打包你的代碼,并且它是預配置的,可輸出用于生產環境的高度優化過的靜態資源。

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

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

    Vite 通過在一開始將應用中的模塊區分為依賴和源碼兩類,改進了開發服務器啟動時間,因為依賴變化小而源碼才是經常會變的東西。

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

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

    2. 自動導入常見方法

    在 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 啥的,需要我們自己安裝上,這個常規操作我就不多說了。

    2.1 傳統寫法

    現在我舉一個簡單的例子,比如說在 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 項目的前端代碼中,雖然也有導入,但是像上面這兩個例子中導入都是沒有的,那是怎么回事?

    這就借助于一個自動導入的工具了。

    2.2 自動導入

    前端有一個工具插件叫做 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 中的方法都是不需要導入就可以使用了,其他組件中的方法則還是跟以前一樣,必須導入之后才可以使用。

    3. 組件去后綴

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

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

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

    Vue3中的插件和配置實例分析

    現在必須要寫后綴了,但是有的人就是不習慣寫后綴,那怎么辦?我們可以在 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 了吧。

    4. name 屬性問題

    以前在 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>

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

    Vue3中的插件和配置實例分析

    不過這種寫法多多少還是有點費事。

    通過 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中的插件和配置實例分析”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    泾阳县| 化德县| 卓资县| 广西| 巴青县| 丰原市| 昌平区| 城口县| 大邑县| 金湖县| 松原市| 家居| 汉寿县| 元江| 临桂县| 永年县| 扎囊县| 驻马店市| 徐汇区| 绥德县| 焦作市| 沙田区| 永济市| 保山市| 万全县| 乐安县| 文昌市| 陆良县| 西吉县| 且末县| 苍山县| 铁岭县| 阜阳市| 林西县| 新竹县| 德格县| 来凤县| 永安市| 南宫市| 龙里县| 连云港市|