此问题的答案为community effort。编辑现有答案以改进此帖子。当前不接受新答案或互动。
我想知道如何用Node.js从头开始开发一个网站。我知道我怎么可能做到这一点,但我对最好的设计实践感兴趣。
我需要这个理论网站:
1.做了很多 AJAX
1.很直接
1.相对较小
1.连接到...比如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。我想学习如何从一开始就用它来开发这类东西。
1条答案
按热度按时间6tqwzwtp1#
先说坏消息:由于Node.js是一项相当年轻的技术,我想你会发现创建一个成熟的网站和维护/操作它的过程将与你目前所习惯的非常不同。
Josh3736添加:* 一旦你弄清楚Node.js和它的各种包(Connect、Express)是如何工作的,我发现你可以很快地开发新的站点。*
Node.js中目前存在的粗糙边缘,再加上其快速的开发速度和涉及的所有模块,可能会使事情变得复杂,并使事情变得不像您希望的那样简单、快速和直接。
抛开这些不说,好消息是:
Node Package Manager, NPM有很多很好的工具和框架来扩展Node.js的基本功能,使其适合创建Web服务器。
最值得注意的是Express Framework,它包含了运行Web服务器所需的几乎所有内容(包括cookie、会话和路径路由)。此外,Express支持partials,它负责页眉和页脚。
Express是建立在Sencha's Connect之上的。Cookie和会话实际上是由Connect提供的。Express简化了你的路由和处理视图/部分。所以如果你不需要Express附带的所有花里胡哨的功能,你可以选择Connect。
如果你喜欢用模板来处理这些片段,Jade Template Engine可以帮你加快速度。尽管Josh3736指出Jade很慢,而且空格很重要。更完整的概述可以在这里找到,其中包括他最喜欢的doT。(我个人只在基于
socket.io
的应用程序中使用Node.js,所以在模板方面,他比我更好)。您 * 可以 * 使用db-mysql模块从Node.js连接到MySQL,但如果您不需要,因为您正在访问连接到现有系统的数据,我建议使用一种更..."现代"的方法,即像大多数Node.js项目一样使用NoSQL数据库。MongoDB通过Mongoose是流行的方法。
或者,如果它只是存储您感兴趣的对象,那么就使用Redis(无论如何,您可能会在某个时候需要它)。
一旦你的网站完成了,你必须部署它并确保它继续运行。有很多方法可以做到这一点,比如使用内置的集群支持或使用功能更友好的
forever
npm模块。See this SO question of mine for more information.我想说的是:
询问用Node.js构建网站的最佳实践是什么,与询问用PHP构建网站的最佳方法是什么大致相同:100个开发人员会给你100个不同的答案。
NPM有幸拥有各种各样的优秀框架,这些框架极大地简化了所涉及的大量任务,但这一切都是基于偏好,哪一个是真正要走的路。
正如我所说的,Node.js仍然是一项相当年轻的技术,因此还没有任何框架或其他工具成为"事实上的标准";对于你尝试做的大多数事情来说,可能有各种各样的替代方法,在更新过程中使用其中的大多数方法时,你的代码可能会中断,因为Node.js本身和大多数模块的开发是快节奏的,你必须跟上。
正如我所说的,我对Node.js的主要生产用途是能够使用
socket.io
,所以我没有任何好的生产示例(由于我即将离开,开始一个当之无愧的假期,我也没有时间整理一个)。同样,具体的方法(以及接下来的例子)很大程度上取决于你的最终目标和所选择的技术,但幸运的是,有大量的资源可供选择。大多数模块都使用文档完备的GitHub仓库,并包括与最流行模块组合的例子(参见
/examples/
目录,似乎大多数仓库都有)。(感谢Josh3736纠正了我的错误。)