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

Ben*_*aum 79 javascript model-view-controller 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');
?>
Run Code Online (Sandbox Code Playgroud)

我想知道Node.js中可能有什么相似之处 - 我正在寻找一种方法来实现这一点,尽可能简单,快速直接.

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

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

Rem*_*.co 184

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

Josh3736补充说:一旦你弄清楚Node.js及其各种软件包(Connect,Express)如何工作,我发现你可以非常快速地开发新网站.

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

把它排除在外,这是个好消息:

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

最值得注意的是Express Framework,其中包含运行Web服务器所需的几乎所有内容(包括cookie,会话和路径路由).另外Express支持partials,它负责你的页眉和页脚包含.

Express建立在Sencha的Connect之上.Cookie和会话实际上由Connect提供支持.Express可以简化您的路由并处理视图/部分.因此,如果你不需要Express附带的所有铃声和口哨,你可以选择Connect.

如果您想为这些局部使用模板,Jade模板引擎可以为您加速.虽然Josh3736指出翡翠很慢而且空白很重要.可以在这里找到更完整的概述,其中包括他最喜欢的,doT.(我个人只使用Node.js作为socket.io基础应用程序,所以在模板方面他比我更好.)

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

或者,如果它只是存储您感兴趣的对象,那么只需选择Redis(无论如何您可能需要它).

一旦您的网站完成,您将必须部署它并确保它继续运行.有很多方法可以实现,例如使用内置集群支持或使用功能更友好的forevernpm模块.有关更多信息,请参阅我的这个问题.

结论:

我想要的是这个:

询问在Node.js中构建网站的最佳实践是什么,与询问在PHP中构建网站的最佳方式是一样的:100位开发人员会给出100个不同的答案.

NPM拥有各种优秀的框架,可以大大简化所涉及的许多任务,但这一切都基于偏好,哪一个是真正的方法.

正如我所说,Node.js仍然是一种非常年轻的技术,因此没有任何框架或其他工具已经成为"事实上的标准"; 对于你想要做的大多数事情,可能有各种各样的选择,并期望你的代码在更新过程中使用大部分代码时会中断,因为Node.js本身和大多数模块的开发都是快节奏的.你必须跟上.

把它们放在一起:

正如我所说,我对Node.js的主要生产用途是能够使用socket.io,因此我没有任何好的生产示例(而且我将要度过一个当之无愧的假期,我不会有时间把一个放在一起).虽然有一些很好的例子:

同样,前进的方式(以及随后的示例)在很大程度上取决于您的最终目标和所选择的技术,但幸运的是,有足够的资源可用于所有可用的选择.大多数模块使用记录良好的GitHub存储库,并包含与最流行模块组合的示例(请参阅/examples/大多数存储库中似乎存在的目录).

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

  • 这是一个很好的答案,但有几点:Express实际上是在Connect*的顶部构建*.Cookie和会话实际上由Connect提供支持.Express可以简化您的路由并处理视图/部分.玉非常*非常慢*(在个人方面)我讨厌空白重要的语言.看一下[其他一些模板引擎](https://github.com/joyent/node/wiki/Modules#wiki-templating) - 我最喜欢的是doT,这是[fast](http:// jsperf.com/dom-vs-innerhtml-based-templating/53). (6认同)
  • 最后,我不会说使用Node是"一切都简单,快速,直接" - 它与你现在习惯的完全不同.一旦你弄清楚Node及其各种软件包(Connect,Express)是如何工作的,我发现你可以非常快*地开发新网站.是的,仍有粗糙的边缘,但总的来说,你可以简单快速地做事. (4认同)
  • 我已经把这个端到端的例子放在一起,如何使用MEAN堆栈(MongoDb,Express,Angular和Node)完成一个完整的堆栈网站.您可以用您熟悉的任何内容替换Angular或客户端.我被告知这是最好的介绍视频,所以也许它会帮助其他人开始使用https://www.youtube.com/watch?v=AEE7DY2AYvI (3认同)
  • 非常感谢,正是我所寻找的!还有一个简短的事情,我想知道一些类似于我在标题中描述的代码的代码可能在node.js中看起来如何?逻辑分离将如何运作?假设我使用express和jade和railyway.js.我仍然在努力理解我的程序是什么样的.如果对于(一个简单的)示例我有一个index.php文件,该文件从数据库加载并显示基本数据并包含页脚/头文件,那么这类代码将如何(最佳)?再次,非常感谢 (2认同)
  • Remco,我也喜欢参考我的上一条评论,如果你解释我将如何实现所述的使用节点(使用好的,即使不是最好的练习)我会标记这个答案.这是最后一点困扰我,我在最后阶段挣扎,再次,谢谢. (2认同)
  • 关于数据库选择,假设您有选择,我建议您在使用MongoDB或其他NoSQL数据库之前对相应的解决方案进行研究.每个数据库都会为您做出某些决定和权衡,您通常需要了解这些权衡以做出明智的选择.请记住,SQL可以很好地完成它的工作,虽然它有它的缺点,但它是一个ACID数据库,这意味着你通常可以依赖于一致性 - 当我开始使用MongoDB时,这让我感到惊讶. (2认同)
  • +1.你的答案很好.但是,我发现的所有示例都以'open http:// localhost/some_port'开头,但它们从未解释如何实现类似'http://www.example.com'的内容,其中用户未启动节点服务器终奌站. (2认同)