跳到主要内容
版本:v4

PWA Elements

一些 Capacitor 插件,例如 CameraToast,在非原生环境下运行时提供了基于 Web 的用户界面。例如,在 Web 端调用 Camera.getPhoto() 时,会加载一个响应式的照片拍摄体验:

PWA Elements

这些用户界面是通过 Web 组件实现的。得益于 Shadow DOM 的特性,这些组件应该不会与你自己的用户界面产生冲突。

安装

要启用这些控件,你必须在你的应用中添加 @ionic/pwa-elements

典型的安装方式包括导入该包并注册元素,或者在应用的 index.html<head> 中添加脚本标签。

导入 PWA Elements

npm install @ionic/pwa-elements

然后,根据你选择的框架,导入元素加载器并在适当的时机调用它:

React

index.tsxindex.js

import { defineCustomElements } from '@ionic/pwa-elements/loader';

ReactDOM.render(<App />, document.getElementById('root'));

// 在应用首次渲染后调用元素加载器
defineCustomElements(window);

Angular

main.ts

import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';

import { AppModule } from './app/app.module';
import { environment } from './environments/environment';

import { defineCustomElements } from '@ionic/pwa-elements/loader';

if (environment.production) {
enableProdMode();
}

platformBrowserDynamic()
.bootstrapModule(AppModule)
.catch(err => console.log(err));

// 在平台初始化完成后调用元素加载器
defineCustomElements(window);

通过 Script 标签引入

PWA Elements 可以通过在 index.html 中添加 script 标签来引入。但请注意,这种方式在离线场景下将无法工作:

<script
type="module"
src="https://unpkg.com/@ionic/pwa-elements@latest/dist/ionicpwaelements/ionicpwaelements.esm.js"
></script>
<script
nomodule
src="https://unpkg.com/@ionic/pwa-elements@latest/dist/ionicpwaelements/ionicpwaelements.js"
></script>