跳过主要内容
简体中文

Offline Screen in Vue, Angular, React with Capacitor

使用网络API和Capacitor来学习如何在Vue、Angular或React应用中实现离线屏幕。通过有效地处理离线场景来改善用户体验。

马丁·多纳迪厄

马丁·多纳迪厄

内容营销

Offline Screen in Vue, Angular, React with Capacitor

在Vue 3、Angular 14或React中创建离线屏幕

在本教程中,我们将学习如何使用网络API在Vue 3、Angular 14和React应用中创建离线屏幕。网络API提供网络和连接信息,使我们能够处理离线场景并提供更好的用户体验。

先决条件

在开始之前,请确保您已安装以下内容:

Setting Up the Project

首先,让我们使用各个框架的构建工具来创建一个新的项目。

Vue 3

打开终端并运行以下命令来创建一个新的 Vue 3 项目:

vue create offline-screen-vue3

选择默认预设并等待项目创建完成。

Angular 14

打开终端并运行以下命令来创建一个新的 Angular 14 项目:

ng new offline-screen-angular14

按照提示操作,到时被要求额外功能时,请选择“路由”并按空格键。等待项目创建完成。 等待项目创建完成。 React

打开你的终端并运行以下命令来创建一个新的React项目:

等待项目创建完成。

npx create-react-app offline-screen-react

正在安装网络__CAPGO_KEEP_0__

现在,让我们安装提供网络API功能的包。

打开你的终端并进入项目目录。然后,运行以下命令来安装包: @capacitor/network 对于API项目,还需要运行以下命令来同步原生项目文件:

确保你已经全局安装了__CAPGO_KEEP_0__的__CAPGO_KEEP_1__,通过运行以下命令来检查:

npm install @capacitor/network

确保你已经全局安装了Capacitor的__CAPGO_KEEP_1__,通过运行以下命令来检查:

npx cap sync

确保你已经全局安装了Capacitor的CLI,通过运行以下命令来检查:

npm install -g @capacitor/cli

实现离线屏幕

接下来,我们将在每个框架中实现离线屏幕功能。我们将在用户脱机时显示一个简单的消息。

Vue 3

在您的 Vue 3 项目中,打开 src/main.js 文件并导入 Network 模块从 @capacitor/network:

import { createApp } from 'vue';
import { Network } from '@capacitor/network';

const app = createApp(App);

// Your application setup

app.mount('#app');

Network.addListener('networkStatusChange', status => {
  if (status.connected) {
    // User is back online
    // Hide the offline screen
    document.getElementById('offline-screen').style.display = 'none';
  } else {
    // User is offline
    // Display the offline screen
    document.getElementById('offline-screen').style.display = 'block';
  }
});

const logCurrentNetworkStatus = async () => {
  const status = await Network.getStatus();
  console.log('Network status:', status);
};

在您的应用程序模板(App.vue)中添加一个 <div> 元素,id 为 offline-screen 以显示离线屏幕消息:

<template>
  <div id="app">
    <div id="offline-screen">
      <h1>You are offline</h1>
      <p>Please check your internet connection and try again.</p>
    </div>
    <!-- Your application content -->
  </div>
</template>

<style>
#offline-screen {
  display: none;
  text-align: center;
  padding: 20px;
  background-color: #f2f2f2;
}

#offline-screen h1 {
  font-size: 24px;
}

#offline-screen p {
  font-size: 16px;
}
</style>

现在,当用户脱机时,离线屏幕将被显示。用户回线时,离线屏幕将被隐藏。

Angular 14

在您的Angular 14项目中,打开 src/app/app.component.ts 文件并导入 Network 模块 @capacitor/network:

import { Component } from '@angular/core';
import { Network } from '@capacitor/network';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {

  constructor() {
    Network.addListener('networkStatusChange', status => {
      if (status.connected) {
        // User is back online
        // Hide the offline screen
        document.getElementById('offline-screen').style.display = 'none';
      } else {
        // User is offline
        // Display the offline screen
        document.getElementById('offline-screen').style.display = 'block';
      }
    });
  }

  logCurrentNetworkStatus = async () => {
    const status = await Network.getStatus();
    console.log('Network status:', status);
  };

}

在您的应用程序模板(app.component.html)中添加一个 <div> 元素,id为 offline-screen 以显示离线屏幕消息:

<div id="offline-screen">
  <h1>You are offline</h1>
  <p>Please check your internet connection and try again.</p>
</div>

<!-- Your application content -->

将以下样式添加到 app.component.css 文件中:

#offline-screen {
  display: none;
  text-align: center;
  padding: 20px;
  background-color: #f2f2f2;
}

#offline-screen h1 {
  font-size: 24px;
}

#offline-screen p {
  font-size: 16px;
}

现在,当用户脱机时,离线屏幕将被显示。当用户重新上线时,离线屏幕将被隐藏。

React

在您的React项目中,打开 src/App.js 文件和导入 Network __CAPGO_KEEP_0__ 模块 @capacitor/network:

import React, { useEffect } from 'react'
import { Network } from '@capacitor/network'

function App() {

  useEffect(() => {
    Network.addListener('networkStatusChange', (status) => {
      if (status.connected) {
        // User is back online
        // Hide the offline screen
        document.getElementById('offline-screen').style.display = 'none'
      }
      else {
        // User is offline
        // Display the offline screen
        document.getElementById('offline-screen').style.display = 'block'
      }
    })
  }, [])

  const logCurrentNetworkStatus = async () => {
    const status = await Network.getStatus()
    console.log('Network status:', status)
  }

  return (
    <div id="app">
      <div id='offline-screen'>
        <h1>You are offline</h1>
        <p>Please check your internet connection and try again.</p>
      </div>
      {/* Your application content */}
    </div>
  )

}

export default App

添加以下样式到文件: App.css 文件:

#offline-screen {
  display: none;
  text-align: center;
  padding: 20px;
  background-color: #f2f2f2;
}

#offline-screen h1 {
  font-size: 24px;
}

#offline-screen p {
  font-size: 16px;
}

现在,当用户脱离网络时,会显示离线屏幕。当用户重新上线时,离线屏幕会被隐藏。

支持的方法和接口

网络 API 提供了几个方法和接口来帮助您处理网络连接。以下是其中一些关键的:

为Capacitor应用实时更新

当web层bug处于活跃状态时,通过Capgo将修复推送到用户,而不是等待几天的应用商店审批。用户在后台接收更新,而原生变化仍在正常审批路径中。

立即开始

最新博客文章

Capgo为您提供创建真正专业的移动应用所需的最佳见解。