【问题标题】:Is it posible to convert Svelte/Sapper application to Cordova是否可以将 Svelte/Sapper 应用程序转换为 Cordova
【发布时间】:2019-10-24 08:28:08
【问题描述】:

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

  • 在 Android 上的情况很简单。我们将使用 Google TWA,一切都会很好。
  • 在 Apple iOS 上我觉得很难。没有适用于 iOS 的 Google TWA 之类的东西。而且苹果商店的大量要求也会很痛苦。

小提示:我们不需要移动平台上的任何原生 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 中使用一些隐藏的 localhost 服务器来提供文件,但这会带来问题并且非常讨厌。

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

【问题讨论】:

  • 我们在使用 Flutter 转换 sapper 应用时遇到了哪些挑战?
  • 下载 PDF 文件、身份验证屏幕(使用指纹扫描仪)、由于异步操作导致 JS 和 Flutter 代码之间的同步问题。但我不认为我们确实发现了任何无法解决的重大问题。

标签: ios cordova svelte sapper


【解决方案1】:

您需要在 cordova 应用程序中使用节点来运行节点(工兵)应用程序。

所以,

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-15
    • 1970-01-01
    • 2019-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-28
    • 2011-05-20
    相关资源
    最近更新 更多