Node.jshtml
http://www.nodebeginner.org/index-zh-cn.htmlnode
服务器端JavaScript
要实如今后台运行JavaScript代码,代码须要先被解释而后正确的执行,这是Node.js的原理,它使用Google的V8虚拟机来解释和执行JavaScript代码,此外,Node.js还有许多有用的模块,它们能够简化不少重复的劳做,好比向终端输出字符串。
所以,Node.js事实上既是一个运行时环境,同时又是一个库
应用目标:
(1)用户能够经过浏览器使用咱们的应用。
(2)当用户请求http://domain/start时,能够看到一个欢迎页面,页面上有一个文件上传的表单。
(3)用户能够选择一个图片并提交表单,随后文件将被上传到http://domain/upload,该页面完成上传后会把图片显示
应用模块:
1)须要提供Web页面,所以须要一个HTTP服务器
2)对于不一样的请求,根据请求的URL,咱们的服务器须要给予不一样的响应,所以咱们须要一个路由,用于把请求对应到请求处理程序(request handler)
3)当请求被服务器接收并经过路由传递以后,须要能够对其进行处理,所以咱们须要最终的请求处理程序
4)路由还应该能处理POST数据,而且把数据封装成更友好的格式传递给请求处理入程序,所以须要请求数据处理功能
5)咱们不单单要处理URL对应的请求,还要把内容显示出来,这意味着咱们须要一些视图逻辑供请求处理程序使用,以便将内容发送给用户的浏览器
6)最后,用户须要上传图片,因此咱们须要上传处理功能来处理这方面的细节
1.var http = require("http"); //请求Node.js自带的http模块,并赋值给变量http
http.createServer(function(request, response) {
console.log("Request received");
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("Hello World");
response.end();
}).listen(8888);
/*调用http模块提供的函数:createServer,这个函数会返回一个对象,该对象有一个listen方法,此方法有一个数值参数指定这个HTTP服务器监听的端口号
当回调启动,匿名函数被触发的时候,有两个参数被传入:request和response,它们是对象,可使用它们的方法来处理HTTP请求的细节,而且响应请求(好比向发出请求的浏览器发回一些东西),具体的处理是:当收到请求时,使用response.writeHead()函数发送一个HTTP状态200和HTTP头的内容类型(content-type),使用response.write()函数在HTTP相应主体中发送文本“Hello Wrold”,最后调用response.end()完成响应。目前并没使用request对象。*/
console.log("Server has started");
把服务器脚本放到一个叫作start的函数里,而后导出这个函数
var http = require("http");
function start() {
function onRequest(request, response) {
console.log("Request received.");
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("Hello World");
response.end();
}
http.createServer(onRequest).listen(8888);
console.log("Server has started.");
}
exports.start = start;
建立index.js文件并写入:
var server = require("./server");
server.start();
//能够像使用任何其余的内置模块同样使用server模块:请求这个文件并把它指向一个变量,其中已导出的函数就可使用了
2.处理不一样的HTTP请求,即路由模块,对应模块第三点
须要为路由提供请求的URL和其它须要的GET及POST参数,随后路由须要根据这些数据来执行相应的代码,所以须要查看HTTP请求,从中提取出请求的URL以及GET/POST参数。须要的全部数据都会包含在request对象中,该对象做为onRequest()回调函数的第一个参数传递,为了解析这些数据,须要额外的url和querystring Node.js模块
以非阻塞方式操做进行请求响应
Node.js的实现方案为 函数传递,到目前为止,咱们的应用
已经能够经过应用各层间传递值的方式将请求处理程序返回的内容传递给HTTP服务器。相对将内容传递给服务器的方式,此处采用将服务器“传递”给内容的方式。就是将response对象(从服务器的回调函数onRequest()获取)经过请求路由传递给请求处理程序。随后,处理程序就能够采用该对象上的函数来对请求做出响应。
为应用添加实际用途:
用户选择一个文件,上传给文件,而后在浏览器中看到上传的文件。
实现此功能分为以下两步:1.处理post请求,2使用node.js的一个用于文件上传的外部模块
安装外部Node.js模块并应用到应用中
Node.js有本身的包管理器,叫NPM,经过命令
npm install formidable 安装模块
将文件读取到服务器中,使用fs模块
npm