我想知道如何用Node从头开始开发一个网站.js.

我需要这个理论网站:

  1. 大量使用AJAX
  2. 直截了当
  3. 相对较小
  4. 连接到比如说MySQL服务器

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

  • includes/db/个连接.用于连接数据库的php,一个包含与数据库相关的常用函数等的文件
  • includes/layout/个有页脚之类的东西.php,标题.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-我正在寻找一种方法来实现这一点,这是尽可能的simplefaststraightforward.

如果答案不简单,我想推荐一本书,我不介意阅读.

我喜欢基于事件的编程,我非常喜欢JavaScript的能力,我对Node非常兴奋.js.我想学习如何从一开始就用它来开发这类东西.

推荐答案

首先是坏消息:由于Node.js是一项非常年轻的技术,我认为你会发现创建一个成熟的网站和维护/操作它的过程将与你目前习惯的非常不同.

Josh3736加:Once you figure out how Node.js and its various packages (Connect, Express) work, I found that you can develop new sites very quickly.

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

有了这些,好消息是:

Node Package Manager, NPM有很多很好的工具和框架来扩展 node .js的基本功能,使其适合创建Web服务器.

最值得注意的是Express Framework,它包含运行Web服务器所需的几乎所有内容(包括cookie、会话和路径路由).此外,Express还支持partials,它可以处理您的页眉和页脚.

快车是建在Sencha's Connect辆车之上的.Cookie和会话实际上是由Connect提供动力的.Express可以简化您的路由并处理视图/分区.所以,如果你不需要Express附带的所有铃声和口哨,你可以 Select Connect.

如果你喜欢为这些部分使用模板,Jade Template Engine可以为你加快速度.尽管Josh3736指出Jade的速度很慢,而且空格很重要.更完整的概览可以在here中找到,其中包括他最喜欢的doT.(我个人只在基于socket.io的应用程序中使用Node.js,所以在模板制作方面,他比我更好).

您可以从 node 连接到MySQL.js正在使用db-mysql模块,但如果您不需要它,因为您正在访问连接到现有系统的数据,我建议您使用更"现代"方法,即使用NoSQL数据库作为大多数 node .js项目似乎可以.MongoDBMongoose是最流行的方式.

或者,如果它只是存储你感兴趣的对象,那就 Select Redis(无论如何,你可能会在某个时候需要它).

确保你的网站能够持续运行.有很多方法可以做到这一点,比如使用内置的集群支持或使用功能更友好的foreverNPM模块.See this SO question of mine for more information.

Conclusion:

我想说的是:

询问在Node中构建网站的最佳实践是什么.js和用PHP建立网站的最佳方式差不多:100个开发者会给你100个不同的答案.

NPM拥有各种优秀的框架,可以极大地简化所涉及的许多任务,但这一切都取决于 Select 哪一种方法.

正如我所说, node .js仍然是一种非常年轻的技术,因此没有任何框架或附加工具成为"事实上的标准";对于您试图做的大多数事情,可能有各种替代方案,并且在更新过程中使用大多数替代方案时,您的代码可能会中断,因为 node 的开发.js本身和大多数模块都是快节奏的.你得跟上.

Putting it all together:

正如我所说,我的主要产品用于Node.js能够使用socket.io,所以我现在没有任何好的生产示例(因为我将要go 一个应得的假期,所以我也没有时间把它们放在一起).不过也有一些很好的例子:

同样,方法(以及随后的例子)在很大程度上取决于你的最终目标和所 Select 的技术,但幸运的是,所有可用的 Select 都有足够的资源.大多数模块都使用有良好文档记录的GitHub存储库,并包含与最流行的模块相结合的示例(请参阅大多数存储库中出现的/examples/ dir).

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

Node.js相关问答推荐

NodeJS缓冲区大小逻辑:为什么默认是8KB,而不仅仅是数据大小?

如何在Node.js 中设置图表js的背景色

如果非SQL函数在事务内部运行失败,PG-Promise事务会回滚吗?

对于具有重叠列的组合键,在冲突&q;上没有唯一或排除约束匹配错误

在Docker容器404页面中找不到服务器(提供静态reactjs文件)

使用 Google Drive API 按文件夹 ID 检索文件夹的内容

结合后端(Express)和前端(Angular)路由

MongoDB Aggregate - 如何使用前一阶段的值作为下一阶段的字段名称?

在数组的另一个对象中获取数组的mongoose 对象

如何在 mongoDB 中进行全动态搜索?

无服务器无法获取所有记录事件对象验证失败?

提供静态文件到底是什么意思?

在多个文件 node.js 之间共享和修改变量

Express.js:没有这样的文件或目录

nodejs - 如何读取和输出 jpg 图像?

Meteor - collection.find() 总是返回所有字段

如何忽略文件 grunt uglify

如何从 find 方法返回 Mongoose 结果?

从 node.js 连接到 mongodb 时出现 ECONNREFUSED 错误

Mongoose:模式与模型?