Nuxt Nation 大会即将到来。加入我们,时间为 11 月 12-13 日。

@nuxtjs/device

Nuxt 的设备检测模块

Nuxt banner

Nuxt 设备

npm version npm downloads License Nuxt

在您的 Nuxt 应用程序中检测设备类型。

查看 CodeSandbox 上的演示

安装

npx nuxi@latest module add device

!注意 您可以在 2.x 分支 上找到该模块的 Nuxt 2 版本。

标志

您可以使用以下标志来检测设备类型

  • $device.isDesktop
  • $device.isMobile
  • $device.isTablet
  • $device.isMobileOrTablet
  • $device.isDesktopOrTablet
  • $device.isIos
  • $device.isWindows
  • $device.isMacOS
  • $device.isApple
  • $device.isAndroid
  • $device.isFirefox
  • $device.isEdge
  • $device.isChrome
  • $device.isSafari
  • $device.isSamsung
  • $device.isCrawler

用户代理也会被注入,并可以通过 $device.userAgent 访问。

爬虫检测由 crawler-user-agents 包提供支持。

用法

您可以在 script setup 中使用 useDevice() 组合式,或者直接在模板中使用 $device 助手

<template>
  <div>
    <div v-if="$device.isDesktop">Desktop</div>

    <div v-else-if="$device.isTablet">Tablet</div>

    <div v-else>Mobile</div>
  </div>
</template>

<script setup>
const { isMobile } = useDevice()
</script>

动态更改布局

<template>
  <div>
    <NuxtLayout :name="$device.isMobile ? 'mobile' : 'default'">
      <!-- page content -->
    </NuxtLayout>
  </div>
</template>

<script setup>
definePageMeta({
  layout: false
})
</script>

选项

defaultUserAgent

设置 user-agent 标头的默认值(在运行 npm run generate 时很有用)。

默认值:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.39 Safari/537.36

enabled

有条件地启用模块。

默认值:true

!警告 此选项已弃用。它将在下一个主要版本中删除。

refreshOnResize

在窗口调整大小时刷新标志。

默认值:false

!警告 此选项已弃用。它将在下一个主要版本中删除。

Amazon CloudFront 支持

如果用户代理是 Amazon CloudFront,则模块会检查以下标头

  • CloudFront-Is-Android-Viewer
  • CloudFront-Is-Desktop-Viewer
  • CloudFront-Is-IOS-Viewer
  • CloudFront-Is-Mobile-Viewer
  • CloudFront-Is-Tablet-Viewer

Amazon CloudFront 文档 中详细了解如何确定查看者的设备类型。

!注意 isWindowsisMacOS 标志在 Amazon CloudFront 中不可用。

Cloudflare 支持

此模块会检查 CF-Device-Type 标头。

Cloudflare 文档 中详细了解设备类型检测。

许可证

MIT 许可证