为什么捐赠
API 浏览器
升级指南
NEW!
创建新项目
quasar.config 配置文件
从 Webpack 项目转换
浏览器兼容性
TypeScript 支持
目录结构
命令列表
CSS 预处理器
使用 VueRouter 进行页面路由
懒加载 - 代码分割
资源处理
Boot 文件
预取特性
API 代理
配置 Vite
处理 import.meta.env
使用 Pinia 管理状态
代码检查与格式化
测试与审计
开发移动应用
Ajax 请求
开放开发服务器到公网
联系站长
Quasar CLI with Vite - @quasar/app-vite
Cordova 插件

您可以使用 Cordova 插件 访问设备的原生 API。

Cordova 插件

一些示例插件:

  • 电池状态
  • 相机
  • 联系人
  • 设备
  • 设备运动
  • 地理位置
  • 媒体
  • 媒体捕捉
  • 网络信息
  • 启动画面
  • 振动
  • 状态栏

Deviceready 事件

您会注意到一些 Cordova 插件只有在 deviceready 事件被触发后才可用。我们不需要担心太多,Quasar 监听这个事件被触发之后才会挂载们的 Vue 根组件。但是如果您需要一些插件自己的变量并且在 deviceready 之后初始化您可以按照下面使用插件设备的例子

注意事项

使用一个 vue 文件来做示例:

<template> ... 我们确信'deviceready'已经触发了 ... </template>

<script>
  // 在 export default 之外,我们需要为自己临听事件:
  document.addEventListener(
    "deviceready",
    () => {
      // 只有现在我们确信事件已触发
    },
    false,
  );

  export default {
    // ... 我们确信'deviceready'已经触发了 ...
  };
</script>

原因很简单。Quasar 监听到 deviceready 事件之后挂载根 Vue 组件。但在此之前,Vue 文件被导入到 /src/router/routes.js 文件中,因此 export default 之外的代码会被提前执行。

使用一个 Cordova 插件

让我们通过一些例子来学习,假设您已经为 Quasar 项目添加了 Cordova 模式并已经安装了一个平台(android,ios,…)。

示例:电池管理

第一步是阅读我们想要使用的 Cordova 插件的文档。 我们看 Cordova 插件列表 并点击 Battery Status doc page

我们看到有关如何安装此插件的说明。它总是一个 Cordova 的命令。因此,我们将 “cd” 进入/src-cordova(这是 Cordova 生成的文件夹)并在那里运行安装命令

# 在/src-cordova 中:
cordova plugin add cordova-plugin-battery-status

现在让我们把这个插件用起来。在您的 Quasar 项目中 pages/layouts/components 目录下的一个 Vue 文件中,我们编写:

// 某个 Vue 文件 // 记住这只是一个例子; // 仅查看我们如何使用插件页面中描述的 API; //
这里其余的东西并不重要
<template>
  <div>Battery status is: <strong>{{ batteryStatus }}</strong></div>
</template>

<script setup>
  import { ref, onBeforeUnmount } from 'vue'

  const batteryStatus = ref('determining...')

  function updateBatteryStatus(status) {
    batteryStatus.value = `Level: ${status.level}, plugged: ${status.isPlugged}`
  }

  // 我们需要注册事件, 参考插件的文档页面
  window.addEventListener('batterystatus', updateBatteryStatus, false)

  onBeforeUnmount(() => {
    // 我们做一些清理工作;
    // 我们需要删除事件监听器
    window.removeEventListener('batterystatus', updateBatteryStatus, false)
  })
</script>

示例:相机

第一步是阅读我们想要使用的 Cordova 插件的文档。 我们看 Cordova 插件列表 并点击 Camera doc page

有提及 deviceready 事件。 但是我们已经从前面的章节中知道如何处理它。

我们看到有关如何安装此插件的说明。它总是一个 Cordova 的命令。因此,我们将 “cd” 进入/src-cordova(这是 Cordova 生成的文件夹)并在那里运行安装命令

# 在/src-cordova 中:
cordova plugin add cordova-plugin-camera

现在让我们把这个插件用起来。在您的 Quasar 项目中 pages/layouts/components 目录下的一个 Vue 文件中,我们编写:

// 某个 Vue 文件 // 记住这只是一个例子; // 仅查看我们如何使用插件页面中描述的 API; //
这里其余的东西并不重要
<template>
  <div>
    <q-btn color="primary" label="Get Picture" @click="captureImage" />

    <img :src="imageSrc" />
  </div>
</template>

<script setup>
  import { useQuasar } from 'quasar'
  import { ref } from 'vue'

  const $q = useQuasar()
  const imageSrc = ref('')

  function captureImage() {
    navigator.camera.getPicture(
      data => {
        // on success
        imageSrc.value = `data:image/jpeg;base64,${data}`
      },
      () => {
        // on fail
        $q.notify('Could not access device camera.')
      },
      {
        // camera options
      }
    )
  }
</script>

示例:设备

第一步是阅读我们想要使用的 Cordova 插件的文档。 我们看 Cordova 插件列表 并点击 Device doc page

这个插件初始化了一个名为 device 的全局变量,它描述了设备的硬件和软件信息。因此可以使用 window.device 访问它。

我们看到有关如何安装此插件的说明。它总是一个 Cordova 的命令。因此,我们将 “cd” 进入/src-cordova(这是 Cordova 生成的文件夹)并在那里运行安装命令

# 在/src-cordova 中:
cordova plugin add cordova-plugin-device

现在让我们把这个插件用起来。在您的 Quasar 项目中 pages/layouts/components 目录下的一个 Vue 文件中,我们编写:

// 某个 Vue 文件 // 记住这只是一个例子; // 仅查看我们如何使用插件页面中描述的 API; //
这里其余的东西并不重要
<template>
  <div>
    <q-page class="flex flex-center">
      <div>IMEI: {{ imei }}</div>
    </q-page>
  </div>
</template>

<script setup>
  import { ref } from 'vue'

  const imei = ref(
    window.device === void 0
      ? 'Run this on a mobile/tablet device'
      : window.device
  )
</script>