介绍
您有一个现有的 Nuxt 网站应用程序吗?本指南将教您如何将其转换为 native iOS 和 Android 移动应用程序,使用 Capacitor 8 — 性能更好、功能更新的最新版本。
Capacitor 将您的 web 应用程序包装在一个本机容器中,使您能够访问设备 API,如摄像头、文件系统和推送通知,而不改变您的现有 Vue 代码库。与 Flutter 或 React Native 不同,您不需要重写任何内容 ——您的 Nuxt code 将保持不变。
您将学到:
- 为您的现有 Nuxt 应用程序配置静态生成
- 添加 Capacitor 8 以便使用基本的原生插件
- 在 iOS 和 Android 模拟器上构建和测试
- 为更快的开发启用实时重载
- 可选添加 Konsta UI 以便使用原生样式的组件
想从头开始一个新项目?查看我们的指南 从头开始构建 Nuxt 移动应用.
使用 Nuxt 和 Capacitor 的好处
- Code 可重用性:将您的 Vue 组件和逻辑共享到 web 和移动应用
- :Nuxt 的静态生成创建了优化的包,适合移动设备查看我们的指南
- 原生功能: 通过 Capacitor 插件访问设备功能,如相机、地理位置和文件系统。
- 简化开发: 使用熟悉的 Vue/Nuxt 模式而无需学习原生开发。
先决条件
在开始之前,请确保您已安装:
- Node.js 18+ 已安装
- 一个现有的 Nuxt 4 应用程序
- Xcode (仅适用于 iOS 开发, macOS)
- Android Studio (仅适用于 Android 开发)
为 Nuxt 应用配置移动端
第一个步骤是配置 Nuxt 应用为静态生成。Capacitor 需要静态 HTML/JS/CSS 文件来打包到原生应用中。
确保你的 package.json 包含生成脚本:
{
"scripts": {
"dev": "nuxt dev",
"build": "nuxt build",
"generate": "nuxt generate",
"preview": "nuxt preview",
"mobile": "bun run generate && bunx cap sync",
"mobile:ios": "bun run mobile && bunx cap open ios",
"mobile:android": "bun run mobile && bunx cap open android"
}
}
重要提示: 如果你正在使用服务器端功能(API 路由, 服务器中间件等),你需要将这些功能重构为客户端替代品或外部 API。
通过运行来测试静态生成:
bun run generate
你应该看到一个 .output/public 文件夹包含静态文件。这就是 Capacitor 将打包到原生应用中的内容。
在您的项目中添加 Capacitor 8
将您的 Nuxt 应用程序打包到原生移动容器中,请遵循以下步骤:
- 安装 Capacitor 核心和 CLI:
bun add @capacitor/core
bun add -D @capacitor/cli
- 安装您可能需要的常见 Capacitor 插件:
bun add @capacitor/app @capacitor/keyboard @capacitor/splash-screen @capacitor/status-bar @capacitor/preferences
这些插件提供基本功能:
- @capacitor/app: 处理应用程序生命周期事件(前台/后台,深度链接)
- @capacitor/keyboard: 在移动设备上控制键盘行为
- @capacitor/splash-screen: 管理原生启动屏幕
- @capacitor/status-bar: 设定设备状态栏
- @capacitor/preferences: 本地存储 (类似 localStorage 但原生)
- 初始化 Capacitor 以及您的项目详细信息:
bunx cap init my-app com.example.myapp --web-dir .output/public
替换 my-app 为您的应用名称 com.example.myapp 为您的应用 ID (反向域名表示法)
- 创建或更新
capacitor.config.ts文件以获取正确的配置:
import type { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = {
appId: 'com.example.myapp',
appName: 'my-app',
webDir: '.output/public',
plugins: {
SplashScreen: {
launchShowDuration: 2000,
launchAutoHide: true,
androidScaleType: 'CENTER_CROP',
splashFullScreen: true,
splashImmersive: true,
},
Keyboard: {
resize: 'body',
resizeOnFullScreen: true,
},
StatusBar: {
style: 'dark',
},
},
};
export default config;
- 安装本机平台:
bun add @capacitor/ios @capacitor/android
- 添加本机平台文件夹:
bunx cap add ios
bunx cap add android
Capacitor 将创建 ios 和项目根目录下的文件夹,包含了native项目。 android 为了构建Android项目,您需要
Android Studio .对于iOS,您需要一台Mac电脑,Xcode 构建和同步您的项目:.
- 这将运行您的自定义脚本,生成静态Nuxt构建并同步文件到native平台。
bun run mobile
构建和部署native应用
为了构建和部署您的native移动应用,请遵循以下步骤:
为了开发iOS应用,您需要
Xcode Xcode 已安装,并且对于 Android 应用程序,您需要安装 Android Studio 已安装。另外,如果您计划将应用程序分发到应用商店,则需要为 iOS 和 Android 分别加入 Apple Developer Program 和 Google Play Console。
- 打开本机项目:
对于 iOS:
bun run mobile:ios
对于 Android:
bun run mobile:android
或者直接使用 Capacitor CLI:
bunx cap open ios
bunx cap open android
- 构建并运行应用程序:

- 在 Android Studio 中,等待项目准备好,然后单击“运行”按钮将应用程序部署到连接的设备或模拟器。

- 在 Xcode 中,设置您的签名账户以将应用程序部署到真实设备。如果您之前没有这样做过,Xcode 将指导您完成该过程(请注意,您需要加入 Apple Developer Program)。一旦设置好,单击“播放”按钮即可在连接的设备上运行应用程序。
恭喜! 您已经成功部署了 Nuxt 网站应用到移动设备。
但请稍等,开发期间还有更快的方法……
Capacitor 实时重载
在开发期间,您可以利用实时重载功能,立即在移动设备上看到更改。要启用此功能,请遵循以下步骤:
- 找到您的本地 IP 地址:
-
在 macOS 上,在终端中运行以下命令:
ipconfig getifaddr en0 -
在 Windows 上运行:
ipconfig在输出中查找 IPv4 地址:
- 更新您的
capacitor.config.ts指向开发服务器:
import type { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = {
appId: 'com.example.app',
appName: 'my-app',
webDir: '.output/public',
server: {
url: 'http://YOUR_IP_ADDRESS:3000',
cleartext: true,
},
plugins: {
// ... your plugin config
},
};
export default config;
替换 YOUR_IP_ADDRESS 使用您的本地 IP 地址(例如, 192.168.1.100).
- 将更改应用到您的原生项目:
bunx cap copy
The copy 命令将 web 文件夹和配置更改复制到原生项目中,而不更新整个项目。
- 启动 Nuxt 开发服务器并在 Xcode/Android Studio 中重建:
bun run dev
现在,每当您对 Nuxt 应用程序进行更改时,移动应用程序将自动重新加载以反映这些更改。
注意: 如果您安装新插件或更改原生文件,则需要重建原生项目,因为实时重新加载仅适用于 web code 更改。
使用 Capacitor 插件
Capacitor 插件使您能够从 Nuxt 应用程序访问本机设备功能。让我们通过使用 "Share" 插件作为示例来探索如何使用它们: 使用 __CAPGO_KEEP_0__ 插件 __CAPGO_KEEP_0__ 插件使您能够从 Nuxt 应用程序访问本机设备功能。让我们通过使用 "Share" 插件作为示例来探索如何使用它们:
- 安装分享插件:
bun add @capacitor/share
- 创建或更新一个页面来使用分享插件。在 Nuxt 4 中,页面位于
app/pages/:
<template>
<div class="p-6">
<h1 class="text-2xl font-bold mb-4">Welcome to Nuxt + Capacitor!</h1>
<button
@click="shareContent"
class="px-6 py-3 bg-blue-600 text-white rounded-lg font-semibold"
>
Share now!
</button>
</div>
</template>
<script setup lang="ts">
import { Share } from '@capacitor/share';
async function shareContent() {
await Share.share({
title: 'Check this out!',
text: 'Built with Nuxt and Capacitor',
url: 'https://capacitorjs.com',
dialogTitle: 'Share with friends',
});
}
</script>
- 同步更改到原生项目:
bun run mobile
或仅同步而不重建:
bunx cap sync
- 重建并在设备上运行应用程序。
现在,当您点击“立即分享!”按钮时,原生分享对话框将出现。
添加 Konsta UI v5 与 Tailwind CSS 4
为了使按钮看起来更像移动设备,
您需要 Tailwind CSS 4 已经安装.
- 安装所需的包:
bun add konsta
bun add tailwindcss @tailwindcss/vite
- 配置 Vite 插件
nuxt.config.ts:
import tailwindcss from '@tailwindcss/vite';
export default defineNuxtConfig({
compatibilityDate: '2025-01-15',
devtools: { enabled: true },
css: ['~/assets/css/main.css'],
vite: {
plugins: [tailwindcss()],
},
});
- 创建
app/assets/css/main.css:
@import 'tailwindcss';
@import 'konsta/theme.css';
- 将您的应用程序包装在 Konsta UI 中
App在app/app.vue:
<template>
<App theme="ios">
<NuxtPage />
</App>
</template>
<script setup>
import { App } from 'konsta/vue';
</script>
- 更新您的页面以使用 Konsta UI 组件:
<template>
<Page>
<Navbar title="My App" />
<Block strong>
<p>
Here is your Nuxt & Konsta UI app. Let's see what we have here.
</p>
</Block>
<BlockTitle>Navigation</BlockTitle>
<List>
<ListItem href="/about/" title="About" />
<ListItem href="/form/" title="Form" />
</List>
<Block strong class="flex space-x-4">
<Button>Button 1</Button>
<Button>Button 2</Button>
</Block>
</Page>
</template>
<script setup>
import {
Page,
Navbar,
Block,
Button,
List,
ListItem,
BlockTitle,
} from 'konsta/vue';
</script>
- 为 Material Design 主题添加 Roboto 字体在
nuxt.config.ts:
export default defineNuxtConfig({
app: {
head: {
link: [
{ rel: 'preconnect', href: 'https://fonts.googleapis.com' },
{ rel: 'preconnect', href: 'https://fonts.gstatic.com', crossorigin: '' },
{
rel: 'stylesheet',
href: 'https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap',
},
],
},
},
// ... rest of config
});
您的 Nuxt 应用程序现在应该具有原生看起来的移动 UI:
结论
您成功将现有的 Nuxt 网页应用程序转换为使用 Capacitor 8 的原生 iOS 和 Android 应用程序。您的 Vue 代码库现在可以在移动设备上以原生方式运行,具有对设备 API 的访问权。
您实现了什么:
- 配置 Nuxt 以进行静态生成
- 添加 Capacitor 8 以及必需的插件
- 在 iOS 和 Android 模拟器上构建和部署
- 为开发启用了实时重载
- 可选添加 Konsta UI 以获得原生样式的组件
下一步:
- 设置 Capgo 无需重新提交应用商店即可进行线上更新
- 添加更多原生插件,如摄像头、地理位置或推送通知
- 配置应用图标和启动屏幕以进行生产
- 为 App Store 和 Google Play 提交应用做好准备
开始一个全新的项目?请查看 从零开始构建 Nuxt 移动应用 了解如何使用Capgo。
资源
Learn how Capgo can help you build better apps faster, 注册免费账号 今天
Keep going from Convert Your Nuxt App to iOS & Android with Capacitor 8
如果您正在使用 Convert Your Nuxt App to iOS & Android with Capacitor 8 为native插件工作做好准备,连接它 Capgo 插件目录 Capgo 插件目录中的产品工作流程 Capacitor 插件,Capgo Capacitor 插件,Capgo 的实现细节 添加或更新插件 添加或更新插件的实现细节 Ionic企业插件替代品 Ionic企业插件替代品中的产品工作流程 Capgo 本机构建 Capgo 本机构建中的产品工作流程