一尘不染

使用Node.js建立网站的最佳做法

node.js

我想知道如何使用Node.js从头开始开发网站。我明白我怎么能 可能 做到这一点,但我感兴趣的是 最好的 设计实践。

我需要这个理论网站来:

  1. 做很多AJAX
  2. 非常简单
  3. 相对较小
  4. 连接到…假设一个MySQL服务器

在PHP中,构建一个非常小的网站非常简单-我在Apache和MySQL服务器上设置了PHP,然后执行以下操作:

  • includes/db/ 其中具有用于连接数据库的connect.php,具有常见数据库相关功能的文件等
  • includes/layout/ 其中包含footer.php,header.php和其他与布局相关的东西
  • includes/users/ 处理与用户相关的动作

然后,PHP仅允许您构建页面并将这些文件包含在一起以形成一个网站-我可以这样做:

<?php
   require_once('inclues/users/user_session.php');
   require_once('inclues/db/connect.php');
   require_once('inclues/design/header.php')
?>

// Other php or html or related content relating to the page

<?php
   require_once('inclues/.../footer.php');
?>

我想知道什么可能是Node.js的相似-我正在寻找一种方式来做到这一点是因为 简单快速简单 越好。

如果答案不简单,我会推荐书,我不介意阅读。

我喜欢基于事件的编程,我非常喜欢JavaScript的功能,并且对Node.js感到非常兴奋。我想学习如何从一开始就以正确的方式开发这类东西。


阅读 223

收藏
2020-07-07

共1个答案

一尘不染

首先,从坏消息开始:由于Node.js是一项非常年轻的技术,我想您会发现创建一个完整的网站以及对其进行维护/操作的过程将与您现在所习惯的完全不同。

Josh3736补充:一旦弄清了Node.js及其各种程序包(Connect,Express)如何工作,我发现您可以非常快速地开发新站点。

Node.js中当前存在的粗糙边缘,再加上其快速的开发速度以及所涉及的所有模块,可能会使事情变得复杂,并使事情变得不那么简单,快速和直接。

好了,这是个好消息:

节点包管理器,NPM有很多很好的工具和框架,扩大Node.js的裸露的骨头的功能,使其适合于创建一个Web服务器。

最值得注意的是Express
Framework
,其中包含运行网络服务器所需的几乎所有内容(包括cookie,会话和路径路由)。此外,Express还支持局部函数,它会处理您的页眉和页脚包含的内容。

Express建立在Sencha的Connect之上。Cookies和会话实际上由Connect提供支持。Express是简化您的路由并处理视图/部分的工具。因此,如果您不需要Express附带的所有功能,则可以选择Connect。

如果您想对这些局部使用模板,那么Jade Template Engine可以为您加快处理速度。尽管Josh3736指出Jade较慢且具有很大的空白。在此处可以找到更完整的概述,其中包括他的最爱doT。(我个人socket.io仅将Node.js用于基于基础的应用程序,因此在模板方面,他是比我更好的消息来源)。

可以 使用db-mysql模块从Node.js连接到MySQL
,但是如果您不需要它,因为您正在访问连接到已经存在的系统的数据,我建议您使用更多…’现代”方法,即使用大多数Node.js项目似乎使用的NoSQL数据库。通过Mongoose进行MongoDB是流行的方式。

或者,如果它只是存储您感兴趣的对象,则直接使用Redis(无论如何,您可能有时还是需要使用Redis)。

网站建成后,您将必须对其进行部署并确保其继续运行。有许多方法可以做到这一点,例如使用内置的群集支持或使用功能更友好的forevernpm模块。
结论

我想知道的是:

询问在Node.js中构建网站的最佳实践是什么,与询问在PHP中构建网站的最佳方法是什么相同:100个开发人员将为您提供100个不同的答案。

NPM拥有各种出色的框架,这些框架可以大大简化涉及的许多任务,但是这完全基于偏好,这才是真正的方法。

正如我已经说过的那样,Node.js仍然是一种很年轻的技术,因此还没有任何框架或其他工具成为“事实上的标准”。对于您尝试执行的大多数操作,可能会有多种选择,并且由于更新Node.js本身和大多数模块的速度很快,因此期望代码在更新期间使用它们时会中断。您必须跟上。

全部放在一起

就像我说过的那样,Node.js的主要生产用途是能够使用socket.io,因此我没有任何好的生产示例(而且,由于我打算休假,所以我没有。也没有时间将它们放在一起)。有一些很好的例子:

同样,前进的道路(以及随后的示例)在很大程度上取决于您的最终目标和选择的技术,但是幸运的是,对于所有可用选择,都有大量资源可用。大多数模块使用文档齐全的GitHub存储库,并包含与最受欢迎的模块结合使用的示例(请参阅/examples/大多数存储库中似乎存在的目录)。

祝好运!(并感谢[osh3736纠正了我的错误。)

2020-07-07