看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://),可以看到控制台输出
在chrome下,按F12,在network一栏下可以看到(需要刷新页面)下图
从这里就能窥得一下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标签下看一下吧(希望浏览器不要生气。。)