【问题标题】:Ionic 5, different files for PWA and native buildsIonic 5,PWA 和原生构建的不同文件
【发布时间】:2021-09-01 23:17:10
【问题描述】:

我想为我的网站和本地移动应用程序使用相同的代码库。我正在使用ionic cordova build <platform> 构建本机应用程序,并在docker 内使用ionic serve --external --prod 部署网站。我需要将我的应用程序上的底部标签导航栏转换为我网站上的侧边栏。这将需要更改路由和 HTML 文件。但是我们显示的所有其他文件保持不变。那么,如何在每个版本上为我的网站部署不同的文件,并为我的原生应用部署不同的文件?

【问题讨论】:

    标签: angularjs ionic-framework angular-routing ionic-native ionic5


    【解决方案1】:

    离子平台服务

    • 您可以使用Ionic Platform service 来 确定用户当前设备​​的平台,然后根据 不同的平台,使用 *ngIf 显示您想要的模板 指令

    TS 文件

    import { Platform } from '@ionic/angular';
    @Component({...})
    export class MyPage {
      is_native: boolean;
      is_pwa: boolean;
      constructor(public platform: Platform) {
         this.is_native = this.platform.is('hybrid');
         this.is_pwa = this.platform.is('pwa');
      }
    }
    

    HTML 模板

        <div #sideMenu *ngIf="is_pwa">...
        </div>
        <div #navBar *ngIf="is_native">...
        </div>
    

    更新:Shell 脚本

    另一种方法是使用 shell 脚本将模板文件替换为不同的文件。

    cp src/app/componenets/template.pwa.html src/app/componenets/template.html
    
    ionic serve --external --prod
    

    【讨论】:

    • 我尝试了angular.json 方法,但没有任何东西被替换。我只是收到一个错误String does not match the pattern of "\.(([cm]?j|t)sx?|json)$". 我不认为 Angular 构建配置用于替换 html 页面。这里说github.com/angular/angular-cli/issues/19621“文件替换的目的是在 TypeScript 编译器级别替换文件。”
    • 那么您可以尝试使用 shell 脚本自己实现文件替换
    • 是的,对于路由模块更改,我实现了 angular.json 方法并在我的自定义配置中替换它们,对于 HTML 更改,我正在检查平台。非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-19
    • 2016-02-04
    • 2019-01-07
    • 2019-03-13
    • 2021-11-30
    • 1970-01-01
    • 2023-03-21
    相关资源
    最近更新 更多