构建客户端第一Web应用程序的情况(2020)

2021-03-07 11:01:13

现在2020年在这里,让我们来看看我们在未来十年中可以获得的软件。作为Web开发人员,我们的解决方案可以帮助塑造我们为之工作的组织。我们构建的工具和建筑决定我们为大大的社会带来了复杂的影响。新趋势是什么,他们会帮助授权或奴役人吗?

过去10 - 20年的趋势导致了越来越多的网络集中化,在最大的服务中巩固权力(Facebook,谷歌,亚马逊,雷迪特)及其扩展生态系统。在这些和大型出版物之间,“独立网络”遭遇了巨大的挫折。大多数人和组织都信任大型企业与专有算法来管理他们的数据,身份和品牌。这导致个人和社会的巨大问题,涉及政府和公司,以及我们所有人如何彼此相关。尝试解决这些问题的产生了一些项目来分散网络。

当Web出生时,浏览器呈现HTML文档,并且对客户端编程很少支持。无论在未来十年内推出什么JavaScript支持,因为浏览器战争都不一致,并导致JavaScript库桥接差距,其中jQuery作为获胜者出现。过去10年的角度和反应的兴起,新版本的JavaScript和HTML5 Web API,最终使前端网络编程成为世界上最广泛部署的平台的强大主张。

正如JavaScript正在成熟的那样,传统的智慧在大多数Web开发人员之间发展,您应该在客户端呈现HTML,然后通过JavaScript逐步增强它。这被认为是最佳实践,并在2009年至2018年的每个权威机构推荐。

在这十年中,Web开发人员将在其头上转动这种传统智慧,并开始考虑进步的增强,以其他方式:

以下是为什么这是更好的方法的多种原因。这在我们如何接近Web开发将如何具有深远的技术和社会影响。

1.关注的分离。将接口的渲染从交付的代码/标记中解脱出来支付。这样,我们没有与一种类型的应用程序传递联系在于,Web上的服务器发送我们的可执行代码。我们能够使用Sideload应用程序,从App Stores下载它们,并在更改时更新特定文件。我们也为每个任务使用一种语言:JS是代码。 HTML / SWUNCBARS /等可用于模板/标记。 CSS用于演示。 JSON或XML用于数据。完成此操作后,如果要在服务器上渲染HTML以进行AJAX,则可以启动“脏”,因为您将再次不必要地耦合事情。随着无头CMSES的外观,事情正在这种方式发生,而科尔多瓦,离子和反应本地代表其他方式通过应用商店提供代码。

Warning: Can only detect less than 5000 characters

因此,现在,您可能相信“客户端第一”是一个很好的设计模式,并且可以通过“加快”第一个渲染,并通过使其可用于“愚蠢”的爬行者和用户代理人来实现逐步的设计模式和逐步增强't执行了2020年的JavaScript。以下是其实际外观的方式,可在可操作的条件下:

9.预装。好吧,现在您正在呈现客户端的所有内容,您可以实现从服务器预加载数据的机制。也许将所有JSON放入一个文件中并在第一个渲染中发送。哪个 - 请记住 - 只有在使用Web浏览器直接访问页面时,才会发生才会发生非常特定的方案。除此之外,还请求包括来自Web浏览器的后续请求,不需要此预装。它是一个额外的光彩,您可以为该特定用例添加。因此,预加载的数据来源,您的JavaScript将拥有它,并将同步呈现HTML。

10.静态站点。今天最受欢迎的静态站点发电机在其用例中仍然非常狭窄。他们帮助博客和出版,例如jekyll,hugo等,但如果您已经有一个动态站点,则可以通过使用服务器端脚本请求某些(动态指定)一组页面将其转换为静态站点。将它们渲染到某些相关的静态HTML文档,然后开始在动态页面上发送301重定向以永久地告诉浏览器将来转到静态页面。 (因为重写您网站中的所有链接可能是不可行的)。这种方法始终陷入了第5点中描述的问题 - 因此,天真的方法仅适用于某人登录时不会改变的公开访问页面。您仍然需要将客户端JS添加到“修复”登录用户的基本带来。

11.缓存,节流,批处理。可以更智能地阐述发出到服务器的每个功能,以考虑到acching,限制和批量请求。在QBIX平台中,我们有类似Q.getter和Q.batcher的中间件方法,其中占用任何吸气剂函数并将它们转换为执行上述事物的功能。它们与Q.Cache类的实例一起使用,该类具有在当前文档中缓存的适配器,在SessionStorage或LocalStorage中。 (并且后来可能在IndexedDB等中。)它们在序列化和卸种物体等时具有额外步骤的钩子。

12.部署。我们在QBIX平台中建立了各种脚本,以帮助不仅仅是QBIX应用程序,而且还可以部署普通网站,包括:

combine.php(修复CSS文件具有绝对URL,缩小,组合等您告诉它的所有脚本和样式表,而Qbix平台在添加脚本和样式表时重写链接)

URLS.php(它遍历公开访问的Web目录中的所有静态文件,检查其修改时间并在PHP和JSON中构建索引,以自行运行以来的发生变化...允许客户端以例如下载什么自上次版本以来更改了文件。如果还计算SRIS和QBIX应用程序的哈希,在渲染某些标签时自动追加正确的SRI信息,以及用于缓存破坏的正确时间戳。)

Static.php遍及您的网站,无论它是什么,都会生成您可以服务的静态版本,而且为其余的301重定向。它有助于将很多公共页面转换为静态站点。

Bundle.php(它为Cordova应用程序部署构建了一套捆绑。来自QBIX的客户端Cordova插件拦截请求并查看如果捆绑包中已有本地版本,并且如果需要,则服务器也适用于HTTPS。一个在许多客户端CORDOVA功能中,允许我们将网站转向本机社交应用程序。可悲的是,Apple不支持WebView的服务工作者或AppCache。)

这些PHP脚本是我们开发的更大开源生态系统的一部分,我们开发出帮助Web开发人员利用现代安全实践,并为Andrew Yang建立一个像这样的高级社交网络/本机应用程序。

该平台是免费的和开源的,有教程和关于如何使用它的指南。如果您有兴趣了解有关QBIX平台的更多信息,请访问我们。如果您有一个您希望我们出席并回答问题的聚会或群体,请告诉我们。