说来也是惭愧,从大一暑假接触到第一门Web后端语言——PHP之后,自己对Web应用程序的认识却一直没有多大改变,对整个Web服务器的运行也没有清晰的概念。不过,这个大二的寒假里面,由于需要架设一个Web多人协作编辑平台,我接触到了这个非常热门尽管国内应用不多的后端架设方式——Node.js
说到Node.js,其实很多人也都知道,一个JavaScript在本地的运行时,基于Google的V8引擎。很可惜,由于自己当时学习Web主要走的后端路线,自己对JavaScript的认识也就靠的是w3school的简单说明和了解以及简单的jQuery用法罢了。学Node.js对我印象最大的,就是事件驱动的回调函数。(其实还是与自己并未真正接触到函数式编程有关)
举个例子,就是最简单的Hello World Web应用程序。
1 2 3 4 5 6 7
| var http = require("http");
http.createServer(function(request, response) { response.writeHead(200, {"Content-Type": "text/plain"}); response.write("Hello World"); response.end(); }).listen(8888);
|
在JavaScript里面,函数是和变量同地位的一等公民,它可以被传递进当为参数,这种写法初次接触JavaScript的人肯定感觉非常不适应(尤其从Java,PHP转来的),不过习惯之后便发现这样带来了不错的易读性。这里面,那个匿名函数function(request,response)就是一个回调函数,Node.js内置的http对象通过listen进行8888端口的监听,一旦有任何访问便会调用这个回调函数,执行那三行来发送一个Hello World的HTML文本回去
Node.js编写Web程序的体验绝对是Java和PHP很难达到的,因为你不仅要写一个Web应用程序,必须自己写一个HTTP服务器程序。不过这也意味着你可以干更多的事而不用局限于PHP这种解释器一样执行的代码,很多人甚至不知道在一行简单的echo “Hello World!” 的背后的Web应用程序究竟是怎样工作的,你也可以不用再和Apache,Nginx这种Web应用程序的使用打交道,你可以自己写一个类似的出来,定制化更高。 上面关于Node.js的简单认识也就先这样,下面我想说说关于Web应用程序的非常简单的架构组织。