<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          編寫一個 Vue 插件

          共 1673字,需瀏覽 4分鐘

           ·

          2024-06-25 10:25


          插件 (Plugins) 是一種能為 Vue 添加全局功能的工具代碼。下面是如何安裝一個插件的示例:

          import { createApp } from 'vue'
          const app = createApp({})
          app.use(myPlugin, { /* 可選的選項 */})


          一個插件可以是一個擁有 install() 方法的對象,也可以直接是一個安裝函數(shù)本身。安裝函數(shù)會接收到安裝它的應(yīng)用實例和傳遞給 app.use() 的額外選項作為參數(shù):

          const myPlugin = {  install(app, options) {    // 配置此應(yīng)用  }}


          為了更好地理解如何構(gòu)建 Vue.js 插件,我們可以試著寫一個簡單的 i18n 國際化插件。


          讓我們從設(shè)置插件對象開始。建議在一個單獨的文件中創(chuàng)建并導(dǎo)出它,以保證更好地管理邏輯,如下所示:

          // plugins/i18n.jsexport default {  install: (app, options) => {    // 在這里編寫插件代碼  }}


          我們希望有一個翻譯函數(shù),這個函數(shù)接收一個以 . 作為分隔符的 key 字符串,用來在用戶提供的翻譯字典中查找對應(yīng)語言的文本。期望的使用方式如下:

          <h1>{{ $translate('greetings.hello') }}</h1>


          這個函數(shù)應(yīng)當(dāng)能夠在任意模板中被全局調(diào)用。這一點可以通過在插件中將它添加到 app.config.globalProperties 上來實現(xiàn):

          // plugins/i18n.jsexport default {  install: (app, options) => {    // 注入一個全局可用的 $translate() 方法    app.config.globalProperties.$translate = (key) => {      // 獲取 `options` 對象的深層屬性      // 使用 `key` 作為索引      return key.split('.').reduce((o, i) => {        if (o) return o[i]      }, options)    }  }}


          我們的 $translate 函數(shù)會接收一個例如 greetings.hello 的字符串,在用戶提供的翻譯字典中查找,并返回翻譯得到的值。


          用于查找的翻譯字典對象則應(yīng)當(dāng)在插件被安裝時作為 app.use() 的額外參數(shù)被傳入:

          import i18nPlugin from './plugins/i18n'
          app.use(i18nPlugin, { greetings: { hello: '你好' }})


          這樣,我們一開始的表達式 $translate('greetings.hello') 就會在運行時被替換為 '你好' 了。

          請謹(jǐn)慎使用全局屬性,如果在整個應(yīng)用中使用不同插件注入的太多全局屬性,很容易讓應(yīng)用變得難以理解和維護。


          瀏覽 36
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  成人蘑菇视频 | 请立即播放黑人大黑吊日白人小嫩逼视频 | 人人靠人人操人人摸 | 青草视频网 | 天天日天天干天天撸 |