尽管有各种编程语言、成千上万的库以及网络生态系统中数百万(或者看起来是这样)的 JavaScript 库,但构建现代 Web 应用程序仍然只有一条路:将所有内容存储在服务器上,当用户打开 Web 浏览器时,“客户端”——在浏览器内部运行的代码——显示数据并接收发送回服务器的用户输入。
这就是“笨客户端,智能服务器,无权客户端,全能服务器” 的方法。
在过去的几年中,Web 开发已经开始朝着新的方向发展:将越来越多的处理转移到客户端,通常由服务器运行的代码现在正在 Web 浏览器内部运行。但是,大部分的变动都集中在将渲染转移到客户端。“业务逻辑”——例如将数据存储在数据库中或跟踪用户的朋友——在很大程度上仍然保留在服务器端。
我们三个人——Brian Chu、Jake Seip 和 Brandon Salazar——决定通过我们的第一个开源项目 Nodetron(在 GitHub 上 这里)合作,以实验性模型构建 Web 应用程序。
以下是我们面临的一些独特的挑战——这些挑战通常在开发副项目应用程序时不会遇到。
记录一切
当我们制作开源项目时,我们意识到必须开始详细说明每个项目的功能、假设、要求和指南——无论是口头的还是不成文的。我们必须明确我们希望贡献的代码风格。我们必须列出编码工作流程中涉及的所有步骤——运行语法检查器、运行测试、运行预览以及整个“构建”步骤。我们必须编写许可证以发布我们的项目,然后我们必须提及我们项目所基于的所有其他开源项目的许可证。如果只是构建一个普通的应用程序,我们就不必做任何这些事情。
测试和工作流程
由于我们知道这将发布供其他开发人员使用,因此我们必须设定高标准来找出代码中的错误并建立一个简单的工作流程。这意味着我们必须编写测试以确保我们认为已实现的功能实际上可以工作。我们必须构建一个测试框架以在我们的工作流程中高效地运行测试,然后我们必须构建自动化任务,以便外部开发人员可以清楚地了解如何加入并开始工作。
我们为什么要开源这个项目?
1. 我们自己做不完所有工作。
目前,我们的库更像是一个技术演示。它仍然是一个正在进行中的项目。 为了将我们的项目变成一个真正功能齐全的 Web 应用程序框架,我们希望其他开发人员会对我们的想法感到兴奋,并积极参与贡献。当人们尝试将我们的库用于他们自己的应用程序时,他们不可避免地会遇到错误或想到他们想要贡献回我们的开源项目的新功能。我们库的长期目标——构建去中心化 Web 应用程序的可行方法——足够雄心勃勃,仍然需要完成大量工作。我们希望其他开发人员能够加入并开始修复错误或从事一些需要新功能的领域:添加密码学、实现高级对等功能(如分布式哈希表)、集成其他后备对等技术(如 Flash)……等等。
2. 验证我们的实验。
唯一使用我们库的项目是我们构建的演示应用程序,用于展示库的基本功能。在其他人开始使用我们的库构建外部应用程序之前,我们永远不会知道这种 Web 应用程序架构模型是否真的可以工作——是否可以使用 WebRTC 构建真正的标准 Web 应用程序——以及我们的库是否具有足够的功能和优于中心化 Web 开发模式的优势,从而真正成为构建 Web 应用程序的另一种方式。
3 条评论