為什麼捐款
API 瀏覽器
升級指南
新功能!
quasar.config 檔案
轉換為使用 Webpack 的 CLI
瀏覽器相容性
支援 TypeScript
目錄結構
命令列表
CSS 預處理器
路由
延遲載入 - 程式碼分割
處理資源
啟動檔案
預取功能
API 代理
處理 Webpack
處理 process.env
使用 Pinia 進行狀態管理
使用 Vuex 進行狀態管理
Linter
測試與稽核
開發手機應用程式
Ajax 請求
開放開發伺服器給公眾
Quasar CLI with Webpack - @quasar/app-webpack
DOM Hooks

src-bex/js/dom-hooks.js 是一個 javascript 檔案,由 Quasar 自動注入到基礎網頁中,但與所有其他 hook 檔案一樣,可以透過以下方式存取橋樑:

import { bexDom } from 'quasar/wrappers'

export default bexDom((bridge) => {
  //
})

如果您發現自己需要將 JS 檔案注入到基礎網頁中,則可以使用 dom hooks 來代替,因為這表示您可以維護 BEX 中的通訊鏈。

例如,假設您想要編寫一個 BEX,以偵測頁面上是否正在執行 Quasar 應用程式,唯一的方法是在網頁的上下文中執行一些 javascript。

// detect-quasar.js:

function initQuasar (bridge, quasarInstance) {
  bridge.send('quasar.detect', {
    version: quasarInstance.version,
    dark: {
      isActive: quasarInstance.dark ? quasarInstance.dark.isActive : void 0
    },
    umd: quasarInstance.umd,
    iconSet: {
      name: quasarInstance.iconSet.name,
      __installed: quasarInstance.iconSet.__installed
    },
    lang: {
      rtl: quasarInstance.lang.rtl
    }
  })
  window.__QUASAR_DEVTOOLS__ = {
    Quasar: quasarInstance
  }
}

export default function detectQuasar (bridge) {
  if (window.Quasar) { // UMD
    initQuasar(bridge, {
      version: window.Quasar.version,
      dark: window.Quasar.Dark,
      ...window.Quasar,
      umd: true
    })
  }
  else { // CLI
    let isVue3 = false
    setTimeout(() => {
      const all = document.querySelectorAll('*')
      let el
      for (let i = 0; i < all.length; i++) {
        if (all[i].__vue__ || all[i].__vue_app__) {
          el = all[i]
          isVue3 = all[i].__vue_app__ !== void 0
          break
        }
      }

      if (el) {
        const Vue = isVue3 ? el.__vue_app__ : Object.getPrototypeOf(el.__vue__).constructor

        const quasar = isVue3 ? Vue.config.globalProperties.$q : Vue.prototype.$q
        if (quasar) {
          initQuasar(bridge, quasar, Vue)
        }
      }
    }, 100)
  }
}
在 dom-hooks.js 中

import { bexDom } from 'quasar/wrappers'
import detectQuasar from './dom/detect-quasar'

export default bexDom((bridge) => {
  detectQuasar(bridge)
})

上述橋樑將通知 BEX 中的所有監聽器,已找到 Quasar,並隨之傳送實例資訊。