使用Node.js构build网站的最佳实践

我想知道如何用Node.js从零开始开发一个网站。 我明白我该怎么做,但我对最好的devise实践感兴趣。

我需要这个理论网站来:

  1. 做了很多的AJAX
  2. 非常简单
  3. 比较小
  4. 连接到…让我们说一个MySQL服务器

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

  • includes/db/其中有connect.php连接到数据库,具有共同的数据库相关的function的文件等等
  • includes/layout/其中有像footer.php,header.php和其他布局相关的东西
  • includes/users/处理用户相关的操作

然后PHP只是让你build立网页,并将这些文件包括在一起形成一个网站 – 我可以像这样:

 <?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 – 我正在寻找一种方法来完成这是尽可能简单快速直接

如果答案不简单,我会喜欢一本书的build议,我不介意阅读。

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

从坏消息开始:由于Node.js是一个相当年轻的技术,我认为你会发现创build一个完整的网站和维护/操作它的过程将会和你现在习惯的非常不同。

Josh3736补充说: 一旦你弄清楚Node.js及其各种包(Connect,Express)是如何工作的,我发现你可以很快开发新的网站。

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

有了这个,这里有个好消息:

节点包pipe理器NPM有很多很好的工具和框架来扩展Node.js的裸机function,因此适合创build一个web服务器。

最值得注意的是Express框架 ,其中包含几乎所有你需要运行一个networking服务器(包括cookies,会议和path路由)。 另外Express支持部分,照顾您的页眉和页脚包括。

Express是build立在Sencha的Connect之上的。 Cookie和会话实际上由Connect提供支持。 快递是简化您的路由和处理意见/部分。 所以,如果你不需要所有Express和Express来的话,你可以直接使用Connect。

如果您喜欢使用这些部分的模板 , Jade模板引擎可以为您加快速度。 虽然Josh3736指出,玉慢,空白显着。 可以在这里find更完整的概述,其中包括他最喜欢的doT 。 (我个人只使用基于socket.io的Node.js应用程序,所以在模板方面他比我更好)。

可以使用db-mysql模块从Node.js连接到MySQL,但如果您不需要,因为您正在访问连接到已经存在的系统的数据,我build议使用更多……“现代'的方法,就是像大多数Node.js项目似的那样使用NoSQL数据库。 通过Mongoose的 MongoDB是最stream行的方式。

或者,如果只是存储你感兴趣的对象,那就去Redis吧 (无论如何你可能会需要这个)。

一旦你的网站完成,你将不得不部署它,并确保它保持运行。 有很多方法可以做到这一点,比如使用内置的集群支持,或者使用更加function友好的forever npm模块。 看到我的这个问题,我的更多信息。

结论

我试图得到的是这样的:

询问在Node.js中构build网站的最佳做法与问在PHP中构build网站的最佳方式大致相同:100位开发人员会给你100个不同的答案。

NPM拥有各种优秀的框架,大大简化了很多涉及的任务,但都是基于偏好哪一个才是真正的走向。

正如我所说,Node.js仍然是一个相当年轻的技术,所以没有任何框架或附加工具已经成为“事实标准”。 对于大多数你正在尝试做的事情,可能有各种各样的select,并且期望你的代码在更新期间使用大部分代码时会中断,因为Node.js本身和大多数模块的开发是快节奏的。 你必须跟上。

把它放在一起

正如我所说,我的Node.js的主要生产用途是能够使用socket.io ,所以我没有任何好的生产实例(因为我即将离开一个当之无愧的假期我没有时间把它们放在一起)。 虽然有一些很好的例子:

  • 使用Express和Jade进行安装部署
  • 一个非常完整的博客使用Express,Jade和MongoDB的例子
  • 结合Restify(Express的扩展),Backbone.js和Mongoose

再次,走的路(以及后面的例子)很大程度上取决于您的最终目标和所select的技术,但幸运的是,有大量资源可用于所有可用的select。 大多数模块使用良好的文档GitHub存储库,包括与最stream行的模块相结合的例子(请参阅似乎在大多数存储库中存在的/examples/ dir)。

祝你好运! (感谢Josh3736纠正我的错误。)