之前看了Js的一些基础的东西,正好看到了Node.js,所以入个门先,至于高端的东西等以后再学,毕竟基础还不够。
因为装过了Node,所以直接可以用了,没装的童鞋可以看这里。然后一个网页需要一个web页面吧,所以要HTTP的服务器吧,可以直接创建一个最简单的http服务器(貌似所有的初学者都看的是这个例子嘛= =):
var http = require('http'); http.createServer(function(req, res) { res.writeHead(200, {'Content-Type': 'text/html'}); res.write('Node.js'); res.end('Hello World'); }).listen(3000);
上面例子中用到了var http = require('http'),其中http是 Node.js 的一个核心模块。我们通过require 函数获取了这个模块,然后才能使用其中的对象。然后用到了里面的createServer函数,返回一个对象,这个对象有listen的方法,方法里的参数就是http服务器的端口号。看一下函数里面的东西,当收到请求时,使用 res.writeHead() 函数发送一个HTTP状态200和HTTP头的内容类型(content-type),使用 res.write() 函数在HTTP相应主体中发送文本“Hello World"。 最后,我们调用 res.end() 完成响应。
Node.js最大的特点是异步式I/O与事件紧密结合的编程模式。具体的那些概念撒的就不说了~比较重要的是事件驱动的回调,首先来看下例子:
var fs=require("fs"); fs.readFile("app.js","utf-8",function(err,data){ if(err){ console.log(err); } else{ console.log(data); //app.js中是"abc" } }); console.log("jk"); 结果: jk abc
在上面的例子中fs.readFile中有三个参数,第一个是文件名,第二个是编码方式,第三个是一个函数,这个函数就是回调函数,fs.readFile 调用时所做的工作只是将异步式 I/O 请求发送给了操作系统,然后立即返回并执行后面的语句,执行完以后进入事件循环监听事件。当 fs 接收到 I/O 请求完成的事件时,事件循环会主动调用回调函数以完成后续工作。因此我们会先看到 end,再看到文件中的内容。
Node.js在开发过程中,不可能只有一个文件的,通常需要把各个功能通过拆分、封装、然后组合起来,模块(Module)和包(Package)就是这个的重要支柱。Node.js 提供了 require 函数来调用其他模块。举个例子:
//module.js function Hello(){ this.sayHello=function(){ console.log("Hello World"); } } module.exports=Hello;
//gethello.js var hello=require("./module"); hello=new hello(); hello.sayHello(); //输出Hello World
如上面的例子创建了一个module.js的文件,在Module中通过module.exports可以导出,然后在另一个js中通过 require('./module') 加载这个模块,然后就可以直接访问 module.js 中 exports 对象的成员函数了。
想再深入了解的话可以看下面PDF学习继续深入的学习一下: