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 文档 中详细了解如何确定查看者的设备类型。
!注意
isWindows
和isMacOS
标志在 Amazon CloudFront 中不可用。
Cloudflare 支持
此模块会检查 CF-Device-Type
标头。
在 Cloudflare 文档 中详细了解设备类型检测。