使用Cordova服务于本地静态网站?

时间:2019-01-31 13:44:50

标签: android ios cordova cross-platform windows-10-mobile

我们目前正在开始一个项目,该项目包括一个网站,以及适用于Android,iOS和(是)Windows Phone的Apps。

至少在理论上,这些应用在所有三个平台上都是相同的,并且相对简单。

  1. 他们需要提供对网站内容的脱机访问。这是静态内容,一组.html页面和资产(图像,css,javascript等)也是如此。
  2. 当互联网连接可用时,他们需要能够定期自动更新内容。
  3. 任何外部链接都应该在用户的互联网浏览器中打开,而不是在应用程序中打开。
  4. 该应用程序不应显示任何浏览器“ chrome”(例如地址栏等)。

Cordova似乎是解决此问题的好方法(尽管我愿意接受其他建议)。但是,我很难找到有关如何进行的任何信息。

对于第1点,我可以想象它的工作方式是该应用程序加载某种形式的Web视图,指向文件://path/to/site/index.html。假设该站点对所有内部链接和资产都使用相对URL,则这应该足以提供该站点的完全可浏览的脱机版本。该应用将附带当前网站的静态导出。

对于第2点,我认为Cordova应用程序偶尔会运行同步化过程,该过程本质上是向网站API发送大量Web请求,以查找是否有新内容。然后它将下载所有新文件,并将它们放置在第1点所指的文件结构中,覆盖现有文件。 (出于这个问题的目的,我不在乎这是否会使网站暂时处于不一致状态。)

第3点听起来很小,但我不确定是否如此。 target =“ _ blank”就足够了吗?还是单击链接时会触发一些JavaScript触发一些Cordova操作?我们控制HTML的生成方式,因此如有必要,我们可以插入其他标记以供离线使用。

任何人都可以提供有关如何以这种方式处理自动更新的本地静态站点的任何建议吗?甚至有可能吗?

1 个答案:

答案 0 :(得分:0)

Cordova通常确实将html文件存储在应用程序中,并在WebView中显示index.html(如果定义,则显示其他页面)。 这里很酷的一点是,Cordova还将提供一个API来从JS调用设备API。

Cordova不会自动将html文件和资产重新加载到应用程序中。为此,您将需要发布一个新的应用程序,或者仅重新加载应用程序中的数据,然后使用JavaScript控制所有这些操作。

如果不需要任何设备API,建议您看一下ServiceWorkers来缓存和重新加载文件。 使用某些HTML标签,您还可以在按“添加到主屏幕”后创建一个类似于App的行为。

最佳问候 马克