乱七八糟 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://),可以看到控制台输出

在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标签下看一下吧(希望浏览器不要生气。。)
乱七八糟 Nodejs 系列一:试水的更多相关文章
- 乱七八糟Nodejs系列二:线程模型
上一篇中说了这样一句话:Nodejs和浏览器javascript一样,都是单线程,所以和传统的不一样,这个后面有机会再说.挖了坑就得填,哎. 1.一个例子 来看一个例子,这个例子来自async jav ...
- NodeJS系列-部署
NodeJS系列-部署 NodeJS我就不介绍了,被标题吸引进来的人可以看这个链接,了解NodeJS.下来就开始关于NodeJS开发的指南. NodeJS可以部署的平台有Windows,Unix,iO ...
- POJ 2502 - Subway Dijkstra堆优化试水
做这道题的动机就是想练习一下堆的应用,顺便补一下好久没看的图论算法. Dijkstra算法概述 //从0出发的单源最短路 dis[][] = {INF} ReadMap(dis); for i = 0 ...
- NodeJS系列~目录
回到占占推荐博客索引 Node.js官网对它的阐述 Node.js is a platform built on Chrome's JavaScript runtime for easily buil ...
- 大众点评试水O2O新模式:实体店试穿,扫描二维码付款 现场取货
在餐饮美食行业取得不错的成绩之后,大众点评将触角延伸到了线下的传统商铺,开始涉足线下商品的 O2O 团购.和传统的线上下单,线下消费的 O2O 模式不同.大众点评的 O2O 团购用户,可在店内试穿后通 ...
- Json.Net6.0入门学习试水篇
原文:Json.Net6.0入门学习试水篇 前言 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.简单地说,JSON 可以将 JavaScript 对象中 ...
- 第一回:Scrapy的试水
前言:今天算是见到Scrapy的第二天,之前只是偶尔查了查,对于这个框架的各种解释,我-----都-----看------不------懂----,没办法,见面就是刚. 目的:如题,试水 目标:< ...
- CSharpGL(49)试水OpenGL软实现
CSharpGL(49)试水OpenGL软实现 CSharpGL迎来了第49篇.本篇内容是用C#编写一个OpenGL的软实现.暂且将其命名为SoftGL. 目前已经实现了由Vertex Shader和 ...
- UITableView(自定义cell)试水心得
初次试水自定义cell的UITableView 实现目标 最终实现结果 界面复原度:98% 未能完全复刻的地方:下半部分的tableview与头部的控件间距上的误差 原因:在做table ...
随机推荐
- 关于Cococs中的CCActionEase
尊重作者劳动,转载时请标明文章出处.作者:Bugs Bunny地址:http://www.cnblogs.com/cocos2d-x/archive/2012/03/13/2393898.html 本 ...
- MyEclipse 点击 部署 按钮 无效的解决办法
问题描述 1 通常情况下,当我们点击MyEclipse任务栏上的部署按钮时,会弹出项目部署框,如下图: 2 但我们有时也会遇到点击部署按钮怎么也弹不出项目部署框的问题. END 解决方法一: 1 ...
- NUnit+mock+moq单元测试
[TestFixture] public class InstantBatchBuyTest { private string _mallAbc; private string _itemCode; ...
- PHP Java
http://my.oschina.net/lajp/blog/5121 http://blog.163.com/lijianwei_123/blog/static/18489289120115244 ...
- CentOS 6.5 + Nginx 1.8.0 + PHP 5.6(with PHP-FPM) 负载均衡源码安装 之 (三)Nginx负载均衡配置
Nginx反向代理到单个PHP-FPM(PHP-FPM可位于不同机器) 0.首先,创建我们的网站根目录[注:须在PHP-FPM所在的那台机器创建](以后网站的代码放到此目录下): mkdir /opt ...
- 介绍PS大局观很不错的转文
http://blog.chinaunix.net/uid-20535506-id-1931615.html PowerShell初探 PowerShell的一些特点: ü 内含上百种 ...
- 自定义事件实现不同窗体间的通讯Delphi篇
要实现子窗体与父窗体之间的通讯,有多种方法(比如:重载子窗体的构造函数,将父窗体的引用作为参数传递给子窗体).下面我要介绍的是利用自定义事件的方法,它能够最大程度的避免模块之间的耦合,充分体现面向对象 ...
- 【转】Win8/8.1/Win7小技巧:揪出C盘空间占用的真凶
原文网址:http://www.ithome.com/html/win8/55496.htm 不少使用Win8.Win8.1的用户不难发现,原先只占用20G大小的系统盘,随着使用时间的增加,C盘的磁盘 ...
- 【转】Android 带checkbox的listView 实现多选,全选,反选----解决checkbox错位问题
原文网址:http://blog.csdn.net/onlyonecoder/article/details/8687811 Demo地址(0分资源):http://download.csdn.net ...
- 如何在Excel中启用宏?
OFFICE2003版本中启用宏的方法: 1.首先打开EXCEL应用程序. 2.点击上方的"工具"--"宏"--"安全性" 3.在" ...