之前早听过Node.js,但是一直不明白是干什么的,但是在印象中带js的都是小儿科的脚本,而且我本人也不是做互联网开发的,特别是对前端开发也不了解,思维有点定势了,觉得这东西只是个前端的框架,周末无意中看到一篇文章(Node.js入门),这玩意居然是做服务器端开发的。我去。。去卡卡下了本书研究了一下。。发现我错了。。。并且对JavaScript这个语言的三观也全毁了,是谁TM跟这语言想了个Java + Script的名字啊?和Java貌似毛关系都没有。
不多说了,开始正题吧。
1.安装。
推荐linux或者mac os,我是这两个系统的,安装起来都非常方便,就是下面几个命令
git clone git
:
//github.com/joyent/node.git
cd node
./
configure
make
sudo make install
没有安装git的先安装git,然后在./configure阶段,显示缺什么组建就apt-get install那个组件,然后接着./configure,一路向西就完成了,速度取决于你的网速。
安装完后,node命令就有了,此时node.js就装完了,你就可以开始开发了,不用装阿帕奇之类的服务器,node.js本身就可以做个http服务器
2.JavaScript
首先来说说JavaScript,各种历史我就不说了,谷歌百度上都有,并且我之前也没用过,说不出个所以然来,但是,和我用过的其他语言比较(C/C++/Obj-C Python C# Lua 本人几乎只用过C/C++/Obj-C和Python,除了大学上课的时候,没用过Java),特点是:自由,上手快,非常高级,有函数式编程的思想和组件,速度上配合上google的V8引擎,也不错。我觉得它应该定义成一个完整编程语言而不仅仅是脚本,当然,Node.js就是把它当成一门完整的编程语言来弄的。
3.设计思想
我只看了一点点的教程,可能说的不完整,但是node.js我觉得最核心的思想就是回调,这点特性其实在C语言中已经大量应用,但是大家写C语言可能也不太习惯用回调函数,由于Node.js是单进程处理,所以回调函数显得尤为重要了,另外,插一句,闭包也是js的重要特性,有兴趣的同学可以看看这里
4.开始吧
前面废话了很多,我们开始吧,还是从hello world开始?别,我们直接来点高深的,搭个简单得不能再简单的框架吧。
一个基本的web应用包括三个部分
1.服务器部分,负责监听端口,建立连接,接收请求。
2.路由部分,负责将接收到的请求和数据路由到相应的处理模块。
3.处理模块部分,负责处理具体的请求业务,这一部分才是web应该的关键,这一部分也是我们开发一个web应用主要进行的编程的地方。
我们一个一个来。
首先,建立一个服务器部分,负责监听端口,接收请求,在Node.js中建立一个Http服务器很简单,两句代码(先建个文件web.js):
//添加http库(系统自带)
var http = require("http");
/*监听8888端口,onRequest是回调函数,原型是onRequest(req,rsp)就是说有连接上来以后会调用这个函数来处理,req是请求数据,rsp是服务器
回复的数据http.createServer(onRequest).listen(8888); */
//这样就完成了,在写个回调函数在上面:
function onRequest(req,rsp){
rsp.writeHead(200, {"Content-Type": "text/html"});
rsp.write("index page");
rsp.end();
}
哦了,在命令行 node web.js,回车
然后用浏览器访问 http://localhost:8888
看到index page了么?太简单了。
接下来,我们需要把这个东东封装一下
//启动应用程序的入口函数
function startServer(port)
{
//端口,默认8888
port= (typeof(port)=="undefined")?8888:port;
//服务器响应回调函数
function onRequest(req,rsp){
rsp.writeHead(200, {"Content-Type": "text/html"}); rsp.write("index page"); rsp.end();
}
var http = require("http");
http.createServer(onRequest).listen(port);
console.log("申请端口成功,服务器正常运行");
}
//导出一下
exports.Start=startServer;
这个web.js就是我们的框架程序了,后面的东西都在这上面改
好了,我们新建一个Application.js文件
里面只有两句话:
//导入web.js
var Server = require("./web");
//启动服务
Server.Start();
好了,在命令行运行 node Application.js
哦了~~~~以后做了修改,只要不停的运行这一句就行了,这个就是我们程序的入口了。
但是现在无论访问
http://localhost:8888 还是
http://localhost:8888/abc 或者其他什么的,都是返回的index page 几个字,因为还没有路由,下一个我们加一下路由,加了路由,框架就基本完成了,^__^,极简框架就是这样的,只是让大家了解一下Node.js