ios - 是否可以将 Svelte/Sapper 应用程序转换为 Cordova

标签 ios cordova svelte sapper

我们有用 Svelte/Sapper 编写的 PWA 应用程序,我们希望在移动平台上转换此应用程序。由于某些业务原因,我们需要在 Android 和 iOS 商店中明确应用程序。

  • 在 Android 上情况很简单。我们将使用 Google TWA,一切都会很棒。
  • 在 Apple iOS 上我发现这相当困难。不存在适用于 iOS 的 Google TWA 这样的东西。而且苹果商店的大量要求将是相当痛苦的。

小提示:我们不需要移动平台上的任何 native API。纯 JavaScript 浏览器 API 对我们来说就足够了。

所以我找到了我认为最适合我们问题的 Apache Cordova 项目,并且我找到了 Svelte syonip/svelte-cordova-template 的模板。但这还不够。模板正在解决 Svelte 但不是 Sapper。

最好的情况是我下载一些 Cordova/Svelte/Sapper 模板,复制现有源代码,解决一些问题,将应用程序导出到 xCode 项目,构建它,它将在 iOS 上运行,没有任何重大问题(但当然我期望一些代码更改,但不是整个应用程序重写)。

您是否有一些 Svelte/Sapper -> Cordova 迁移经验?

Edit1:我认为可以使用 Sapper export 功能并将构建的文件传递给 Cordova。当用户手动更改 URL 地址时,它会出现一些问题,例如无法正常运行路由(但对于这个特定的用例 - 移动应用程序 - 这不是问题,因为用户将无法编辑 URL)。服务器端渲染、预加载和预取也将不再是问题。

Edit2:经过一番挖掘,我认为不可能将 Sapper 应用程序转换为 Cordova。 Sapper 中的代码分割存在很多问题。最大的问题发生在 CORS 策略上,而且事实上 Sapper 应用程序被设计为与服务器和域一起工作,而不是与文件系统一起工作。也许可以在 Cordova 中使用一些隐藏的本地主机服务器来提供文件,但这会出现问题并且非常令人讨厌。

Edit3:我们将现有的 Svelte/Sapper 代码库与 Flutter 和 Google TWA 结合使用。 Flutter 应用程序包含引用前端应用程序公共(public) URL 地址的 webview。

最佳答案

您需要cordova应用程序中的节点才能运行节点(sapper)应用程序。

所以,

  1. 在 cordova 应用程序中包含节点: https://www.npmjs.com/package/nodejs-mobile-cordova

  2. 在您的应用程序中通过运行启动节点 nodejs.start

  3. 使用运行的脚本启动您的 sapper 应用程序 npm 启动

  4. 打开您的 webview 到 sapper 索引路由。

顺便说一句,我还没有尝试过,这只是一种预感:)

关于ios - 是否可以将 Svelte/Sapper 应用程序转换为 Cordova,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58537225/

相关文章:

ios - 在哪里更改自动布局约束的 "installed"?

ios - 无法更改使用 xib 文件 Swift 创建的按钮中的字体

javascript - Svelte Tabs - 不要重新加载/销毁数据

svelte - 如何在 Svelte 中订阅的商店中发生值更改时触发功能?

javascript - Tailwind 类在 Svelte 应用程序中不起作用

ios - Facebook iOS SDK 3.5.1 : openActiveSessionWithReadPermissions - completion handler called twice

ios - 在 Cordova 配置中访问 xcode 变量

javascript - 使用 Angular/Cordova 上传文件

html - 如何在我的元素中只导入一次 JS 和 CSS 文件?

android - 将我的 Swift 应用程序转换为 Phonegap 的最佳方式?