有没有什么好的资源可以开始使用Node.JS?任何好的教程,博客或书籍?
当然,我访问了它的官方网站http://nodejs.org/,但我不认为他们的文档是一个很好的起点.
我们目前正在为一个客户开发一个网站(Apache下的TYPO3),该网站由node.js/socket.io应用程序提供支持,该应用程序为CMS提供的内容提供实时更新.
由于这是我们的第一个node.js项目,因此我在"完美设置"方面没有任何最佳实践,因此我花了一些时间研究部署技术.
我仍然有几个问题可以实现一个良好的设置:
易于部署客户.这一点非常重要,因为我们的网站将整合到他们的"实时"TYPO3安装中,该安装服务于大量网站,并且运行在不是由客户管理的服务器上,而是另一个(集中式)组织,它支持呼叫和服务器更改.进程缓慢.
应该很容易更新.如上所述,请求重新启动并进行服务器更改是一个缓慢的过程,因此理想情况下,节点安装应该在收到推送到实时安装的更改时重新启动/更新git.
部署
在普遍的共识似乎是使用forever,当涉及到部署节点的应用程序,防止他们逃跑.我已经测试了forever,并且在npm install forever -g(全局)安装时似乎工作正常.这需要外部协助来全局安装在实时环境中,所以我更喜欢从应用程序的node_modules目录运行它,但是我无法创建一个可靠的包装器来执行此操作.
此外,forever工作正常,但必须手动启动.什么是确保它在服务器启动时启动并保持运行的最佳方法?
init.d脚本?forever状态? 快速开发/重新启动更新
我们目前仍处于项目的开发阶段,每次我对node.js应用程序进行更改时,我都会手动重启node或forever.这有效,但远非理想.有几个较小的npm模块可以检查文件修改并node在检测到的更改时重新启动,例如:
有没有人有这些经验?
更新:你为什么不只使用群集?
该集群模块通过提供类似的功能重载机制,但不与节点0.5+工作.替换它的核心群集模块(节点0.6+)没有所有这些功能,只提供群集.而这反过来又不适合socket.io.至少没有使用Redis(这对我们来说是一个问题,因为我们不能强迫客户使用另一个先决条件服务).
-
显然,我正在尝试找到最稳定的解决方案,它将更新重启器与forever将项目交给客户之前结合起来,我真的希望有人能够生成经过验证的技术组合.
我正在考虑使用nodejs来制作非实时应用.例如,博客,论坛或图像板等网站.
我已经读过nodejs在用于异步作业时很好.所以我想知道当用于提供大量静态文件时会有什么结果,比如大图像,css和js文件等.
发送文件(假设它是2-3MB)是否正确,整个服务器将被阻止,直到传输完成?我还读到可以使用操作系统的sendfile()系统调用来完成这项工作.在这种情况下,Express是否支持此功能?
我正在写一个简单的Helloworld示例,可以在互联网上随处可见:
[nodejs.php] [位置:localhost/nodejs.php]
<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript">
var http = require('http');
var server = http.createServer(function (request, response) {
response.writeHead(200, {"Content-Type": "text/plain"});
response.end("Hello World\n");
}).listen(8000);
console.log("Server running at http://127.0.0.1:8000/");
</script>
</head>
</html>
Run Code Online (Sandbox Code Playgroud)
代码非常简单易懂.但是,当我尝试运行代码时,出现以下错误:
Uncaught ReferenceError: require is not defined
Run Code Online (Sandbox Code Playgroud)
我理解这条消息意味着require()我的页面中没有任何功能.当然没有.我再次浏览Google并尝试了不同的教程,以确定我是否需要nodejs.js在网页中嵌入任何类型的文件,但所有教程似乎都没有提到这一点,我尝试进入Nodejs文件夹.我发现很多文件一样edit.js,adduser.js,bin.js...,我正式卡.我一遍又一遍地看看Nodejs究竟是什么,为什么这个例子不起作用,但Google没有太多的支持.到目前为止,据我所知:
如果我错了,请纠正我,我真的很感激.我需要有更多关于这个主题的知识,而那里的资源并不多.
我的问题是:
谢谢大家,
蒂姆.