乱七八糟 Nodejs 系列一:试水

看Nodejs比较舒服的人,个人认为主要是:

  • 以前是后端,转成前端的人;
  • 前端巨牛的人;
  • 后端巨牛的人;
  • 巨牛的人。。。

当然还有我这种,脑抽不止的人~~

不过学习的过程中发现,如果不是上来就用express来写服务器,老实从hello world一步一步来,会加深对服务器工作原理的认识。

安装配置环境,有很多文章了,各自搞定吧;nodejs版的hello world满互联网都是,这里稍微改造一下。

   1:  var http = require('http');
   2:  var server = http.createServer(function(req,res){
   3:      console.log(req.headers);
   4:      console.log(req.url);
   5:      console.log(req.method);
   6:      console.log('=============');
   7:      res.end("hello world");
   8:  });
   9:  server.listen(3000);

其实上面的代码也就多了点控制台输出,启动以后。在浏览器中输入localhost:3000 (本文只在chrome下进行了调试运行,IE有可能要加http://),可以看到控制台输出

乱七八糟 Nodejs 系列一:试水

在chrome下,按F12,在network一栏下可以看到(需要刷新页面)下图

乱七八糟 Nodejs 系列一:试水

从这里就能窥得一下http协议的内容。

浏览器发送请求,经过路由到达服务器后,其实就是这些字符串,然后解析这些字符串,知道浏览器想要什么,然后发过去就行了,这就是核心流程。

所以web服务器从功能上讲,没什么很神秘的东西,就是

1.起一个socket服务器

2.根据http协议解析字符串,构造诸如request和response这样的对象供后面开发使用

3.线程管理(Nodejs和浏览器javascript一样,都是单线程,所以和传统的不一样,这个后面有机会再说),链接管理之类的活动

4.做一些像缓存之类的优化

5.把结果发回浏览器

说完这些,我深刻的认识到,说着永远比做着简单~~。

Nodejs原生的,并没有把服务器功能做的很彻底,只是能来回发字符串,初步构造了request和response。。。

线程管理不用操心,进一步地解析字符串、处理响应等东西的还是需要我们。。使用别人已经写好的模块,然后实现自己的逻辑.

 

最后,可以小试一下,把上面代码的第7行变成下面两行代码

res.setHeader('holly','fuck');
res.end("hello world");
 
然后去network标签下看一下吧(希望浏览器不要生气。。)