Apprenez à créer une application mobile en utilisant Vue, __CAPGO_KEEP_0__, et optionnellement améliorer __CAPGO_KEEP_1__ Navigation native, transitions et meilleures pratiques de mise en page iOS.
Langue de cible : français

Textes : ["Tutorial","June 23, 2026","Créer des applications mobiles avec Vue et Capacitor"]

Apprenez à créer une application mobile en utilisant Vue, Capacitor, et améliorez facultativement Capgo Navigation Native, Transitions et meilleures pratiques de mise en page iOS.

Martin Donadieu

Martin Donadieu

Spécialiste du contenu

Créer des applications mobiles avec Vue et Capacitor

Dans ce tutoriel, nous vous guiderons à travers le processus de conversion d'une application web Vue en application mobile native en utilisant Capacitor. Vous pouvez également ajouter Capgo Navigation Native et Transitions pour un sentiment mobile natif, et utiliser tailwind-capacitor pour les zones de sécurité.

À propos de Capacitor

Capacitor est un outil révolutionnaire qui vous permet d'intégrer facilement Capacitor dans tout projet web et de convertir votre application en application mobile native. Il génère des projets Xcode et Android Studio natifs pour vous et vous donne accès aux fonctionnalités de dispositif natif comme la caméra à travers un pont JavaScript.

Préparation de votre application Vue

Créez d'abord une nouvelle application Vue en exécutant la commande suivante :

vue create my-app
cd my-app
npm install

Pour préparer votre application Vue pour le déploiement mobile natif, vous aurez besoin d'exporter votre projet. Ajoutez un script dans votre fichier package.json pour construire et copier le projet Vue :

{
  "scripts": {
    // ...
    "build": "vue-cli-service build"
  }
}

Après avoir exécuté la build commande, vous devriez voir un nouveau dist folder in your project’s root directory. This folder will be used by Capacitor later.

Capacitor

__CAPGO_KEEP_2__

  1. Install the Capacitor CLI as a development dependency and set it up within your project. Accept the default values for name and bundle ID during the setup.

  2. __CAPGO_KEEP_0__

  3. Add the platforms, and Capacitor will create folders for each platform at the root of your project:

# Install the Capacitor CLI locally
npm install -D @capacitor/cli

# Initialize Capacitor in your Vue project
npx cap init

# Install the required packages
npm install @capacitor/core @capacitor/ios @capacitor/android

# Add the native platforms
npx cap add ios
npx cap add android

Vous devriez maintenant voir de nouveaux iOS et android dossiers dans votre projet Vue.

Mettez à jour le fichier capacitor.config.json pour pointer le répertoire web vers le résultat de votre commande de build : Maintenant, vous pouvez construire votre projet Vue et le synchroniser avec __CAPGO_KEEP_0__:

{
  "appId": "com.example.app",
  "appName": "my-app",
  "webDir": "dist"
}

Now, you can build your Vue project and sync it with Capacitor:

npm run build
npx cap sync

Maintenant, vous pouvez construire votre projet Vue et le synchroniser avec __CAPGO_KEEP_0__:

Pour développer des applications iOS, vous devez avoir Xcode installé, et pour les applications Android, vous devez avoir Android Studio installé. De plus, vous devez vous inscrire au programme Apple Developer pour les applications iOS et au Google Play Console pour les applications Android pour distribuer votre application sur l'App Store.

Utilisez les Capacitor CLI pour ouvrir les projets natifs :

npx cap open ios
npx cap open android

Déployez votre application sur un appareil connecté en utilisant Android Studio ou Xcode.

Capacitor Live Reload

Activer le rechargement en direct sur votre appareil mobile en faisant en sorte que l'application Capacitor charge le contenu à partir d'une URL spécifique sur votre réseau.

Trouvez votre adresse IP locale et mettez à jour le capacitor.config.ts fichier avec l'adresse IP et le port corrects :

import { CapacitorConfig } from '@capacitor/cli';

const config: CapacitorConfig = {
  appId: 'com.example.app',
  appName: 'my-app',
  webDir: 'dist',
  bundledWebRuntime: false,
  server: {
    url: 'http://192.168.x.xx:8080',
    cleartext: true
  }
};

export default config;

Appliquez ces modifications en les copiant vers votre projet natif :

npx cap copy

Maintenant, votre application se rechargera automatiquement et affichera les modifications lorsque vous mettez à jour votre application Vue.

En utilisant les Capacitor Plugins

Installez un plugin Capacitor, comme le plugin de partage, et utilisez-le dans votre application Vue :

npm i @capacitor/share

Importez le package et appelez la share() fonction dans votre application :

<template>
  <div>
    <h1>Welcome to Vue and Capacitor!</h1>
    <button @click="share">Share now!</button>
  </div>
</template>

<script setup lang="ts">
import { Share } from '@capacitor/share';

async function share() {
  await Share.share({
    title: 'Open Youtube',
    text: 'Check new video on youtube',
    url: 'https://www.youtube.com',
    dialogTitle: 'Share with friends'
  });
}
</script>

Après l'installation de nouveaux plugins, exécutez la sync commande et redéployez l'application sur votre appareil :

npx cap sync

Ensuite, vous pouvez rendre l'application plus native sur iOS et Android avec Capgo navigation et transitions, et corriger les problèmes de mise en page iOS courants qui entraînent un débordement horizontal ou des zones de sécurité coupées.

Interface utilisateur ressemblant à une application native avec Capgo Navigation et Transitions Native

J'ai travaillé pendant des années avec Ionic pour construire des applications cross-plateformes, mais l'intégration avec Vue est hacky et rarement justifiée lorsque vous avez déjà Tailwind CSS.

Pour un sentiment de mobilité natif dans une application Vue + Capacitor , utilisez les Capgo plugins au lieu des kits UI web uniquement comme Konsta UI :

  • @capgo/capacitor-navigation-native — barre de navigation native, Liquid Glass barre de tabs sur iOS, et un style de barre de tabs flou sur Android. Le routeur Vue conserve l'état des routes ; le plugin gère la barre de chrome native.
  • @capgo/capacitor-transitions — Les transitions de page Ionic-style et le balayage arrière sur l'iPhone avec le geste de swipe, sans adopter l'interface utilisateur Ionic.

Installez les deux :

bun add @capgo/capacitor-native-navigation @capgo/capacitor-transitions
bunx cap sync

Configurez la navigation native avec le mode d'insertion CSS pour que le contenu web respecte les barres natives :

import { NativeNavigation } from '@capgo/capacitor-native-navigation';

await NativeNavigation.configure({
  contentInsetMode: 'css',
  animationDuration: 360,
  glass: {
    effect: 'liquidGlass',
  },
});

Affichez une barre de tabs en verre liquide (iOS utilise la mise en page système ; Android utilise un arrière-plan flou de WebView) :

await NativeNavigation.setTabbar({
  selectedId: 'home',
  labelVisibilityMode: 'labeled',
  icons: true,
  colors: { dynamic: true },
  tabs: [
    { id: 'home', title: 'Home', icon: { svg: '...' } },
    { id: 'settings', title: 'Settings', icon: { svg: '...' } },
  ],
});

await NativeNavigation.addListener('tabSelect', ({ id }) => {
  router.push(`/${id}`);
});

Ajoutez les transitions de page natives dans votre coquille d'application :

<script setup>
import { ref, onMounted } from 'vue';
import { useRouter } from 'vue-router';
import '@capgo/capacitor-transitions';
import { initTransitions, setDirection, setupRouterOutlet } from '@capgo/capacitor-transitions/vue';

initTransitions({ platform: 'auto' });

const router = useRouter();
const outletRef = ref(null);

onMounted(() => {
  if (outletRef.value) {
    setupRouterOutlet(outletRef.value, { platform: 'auto', swipeGesture: 'auto' });
  }
});

const openSettings = () => {
  setDirection('forward');
  router.push('/settings');
};
</script>

<template>
  <cap-router-outlet ref="outletRef">
    <router-view />
  </cap-router-outlet>
</template>

Enveloppez les pages routées dans <ion-router-outlet> et <ion-nav-bar> et appelez <ion-nav-push> ou <ion-nav-pop> avant de naviguer. cap-router-outlet, cap-pageN'ajoutez pas les en-têtes ou les pieds de page web lorsque la navigation native possède ces surfaces. cap-contentConsultez les guides complets : setDirection('forward') https://__CAPGO_KEEP_0__ setDirection('back') https://__CAPGO_KEEP_1__

https://__CAPGO_KEEP_2__ En utilisant @capgo/capacitor-native-navigation et En utilisant @capgo/capacitor-transitions.

Aires sûres avec Tailwind

Pour les zones sûres des appareils dans Tailwind CSS, utilisez @capgo/tailwind-capacitor (publié sous tailwind-capacitor le npm). Il fournit safe-areas des utilitaires et d'autres plugins de Tailwind compatibles avec Capacitor:

bun add -D tailwind-capacitor

En src/assets/main.css:

@import 'tailwindcss';
@plugin "@capgo/tailwind-capacitor/platform";
@plugin "@capgo/tailwind-capacitor/safe-areas";

Utilisez des utilitaires comme pt-safe, pb-safe, et px-safe au lieu de les répandre env(safe-area-inset-*) par manque de temps. Le projet est actuellement développé — si quelque chose manque pour votre configuration Vue, ouvre une PR sur GitHub.

Résoudre les problèmes de mise en page iOS (Vueport, Zone de sécurité et Débordement horizontal)

Si le contenu semble coupé, décalé ou scrollable horizontalement sur iOS, ajouter plus overflow-x: hidden ou ajuster seul le tag de vueport ne suffit généralement pas. Travaille à travers ces vérifications dans l'ordre.

Assure-toi que le tag meta de vueport est appliqué correctement

Ajoute le tag meta de vueport dans index.html à l'intérieur <head>:

<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />

Gère la zone de sécurité iOS à partir d'un seul wrapper racine

Crée une coquille d'application unique et applique la mise en page de la zone de sécurité là-bas — et non dans plusieurs composants imbriqués :

html,
body,
#app {
  width: 100%;
  min-height: 100%;
  margin: 0;
  padding: 0;
  overflow-x: hidden;
}

* {
  box-sizing: border-box;
}

.app-shell {
  min-height: 100dvh;
  width: 100%;
  padding-top: env(safe-area-inset-top);
  padding-right: env(safe-area-inset-right);
  padding-bottom: env(safe-area-inset-bottom);
  padding-left: env(safe-area-inset-left);
}

Enveloppe tout le contenu de la page à l'intérieur .app-shellLes marge de sécurité dupliquées dans les en-têtes, les modaux et les enveloppes de mise en page rendent souvent l'interface utilisateur coupée ou trop grande.

Avec @capgo/tailwind-capacitor, vous pouvez exprimer la même marge avec des utilitaires comme pt-safe pb-safe px-safe sur cette seule coquille.

Définissez Capacitor iOS contentInset sur never premier

En capacitor.config.ts, préférez l'inset de contenu natif désactivé et laissez CSS (ou la navigation native) gérer l'aire de sécurité : contentInsetMode: 'css'Mélanger les inset de contenu automatique de __CAPGO_KEEP_0__ avec CSS

const config: CapacitorConfig = {
  appId: 'com.example.myapp',
  appName: 'my-app',
  webDir: 'dist',
  ios: {
    contentInset: 'never',
  },
};

Mélangez les inset de contenu automatique de Capacitor avec CSS env(safe-area-inset-*) les espaces doubles sont souvent causés par un padding.

Trouvez l'élément qui déborde vraiment

Le coupable habituel est un élément utilisant 100vw, Tailwind w-screen, une largeur fixe en pixels, ou une min-width.

Dans l'inspecteur Web de Safari, exécutez:

[...document.querySelectorAll('*')]
  .filter(el => el.scrollWidth > document.documentElement.clientWidth)
  .map(el => ({
    el,
    tag: el.tagName,
    class: el.className,
    scrollWidth: el.scrollWidth,
    clientWidth: document.documentElement.clientWidth,
  }));

Avec Tailwind, remplacez w-screen par w-full lorsque possible. De nombreux problèmes de débordement horizontal proviennent de 100vw / w-screen, de la duplication de la marge de sécurité, ou d'un conteneur à largeur fixe — pas de la balise meta de la zone de vue elle-même.

Conclusion

Capacitor est une excellente option pour créer des applications natives basées sur un projet web existant. Avec l'ajout de Capgo, il est encore plus facile d'ajouter des mises à jour en temps réel à votre application, vous assurant que vos utilisateurs aient toujours accès aux dernières fonctionnalités et corrections de bogues.

Apprenez comment Capgo peut vous aider à créer des applications meilleures et plus rapides, s'inscrire à un compte gratuit aujourd'hui.

Continuez à partir de Building Mobile Apps with Vue et Capacitor

Si vous utilisez Building Mobile Apps with Vue et Capacitor pour planifier le comportement des médias et de l'interface native, connectez-le avec Utiliser @capgo/capacitor-activités-en-vivre pour la capacité native dans Utiliser @capgo/capacitor-activités-en-vivre, @capgo/capacitor-activités-en-vivre pour le détail d'implémentation dans @capgo/capacitor-activités-en-vivre, Utiliser @capgo/capacitor-joueur-de-videos pour la capacité native dans l'utilisation de @capgo/capacitor-video-player, @capgo/capacitor-video-player pour le détail d'implémentation dans @capgo/capacitor-video-player, et En utilisant @capgo/capacitor-native-navigation pour la capacité native dans l'utilisation de @capgo/capacitor-native-navigation.

Mises à jour en temps réel pour les applications Capacitor

Lorsqu'un bug de la couche web est en ligne, expédiez la correction par Capgo au lieu d'attendre des jours pour l'approbation de la boutique d'applications. Les utilisateurs reçoivent la mise à jour en arrière-plan tandis que les modifications natives restent dans la voie de revue normale.

Commencez dès maintenant

Dernières actualités de notre Blog

Capgo vous donne les meilleures informations dont vous avez besoin pour créer une application mobile véritablement professionnelle.