PWA 元素组件
部分 Capacitor 插件(如 Camera
或 Toast
)在非原生环境下运行时提供了基于网页的 UI 界面。例如,调用 Camera.getPhoto()
方法时,在网页端会加载一个响应式的拍照界面:
这些界面是通过 Web 组件技术实现的。得益于 Shadow DOM 的特性,这些组件不会与您自己的 UI 产生冲突。
安装步骤
要启用这些控件,您需要将 @ionic/pwa-elements
添加到应用中。
常见安装方式有两种:通过导入包并注册组件,或在应用的 index.html
文件头部添加 script 标签:
导入 PWA 元素组件
npm install @ionic/pwa-elements
根据您使用的前端框架,在适当的位置导入组件加载器并调用:
React
index.tsx
或 index.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 标签引入
您也可以在 index.html
中添加 script 标签来引入 PWA 元素组件,但请注意这种方式不支持离线场景:
<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>