看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 系列一:试水的更多相关文章

  1. 乱七八糟Nodejs系列二:线程模型

    上一篇中说了这样一句话:Nodejs和浏览器javascript一样,都是单线程,所以和传统的不一样,这个后面有机会再说.挖了坑就得填,哎. 1.一个例子 来看一个例子,这个例子来自async jav ...

  2. NodeJS系列-部署

    NodeJS系列-部署 NodeJS我就不介绍了,被标题吸引进来的人可以看这个链接,了解NodeJS.下来就开始关于NodeJS开发的指南. NodeJS可以部署的平台有Windows,Unix,iO ...

  3. POJ 2502 - Subway Dijkstra堆优化试水

    做这道题的动机就是想练习一下堆的应用,顺便补一下好久没看的图论算法. Dijkstra算法概述 //从0出发的单源最短路 dis[][] = {INF} ReadMap(dis); for i = 0 ...

  4. NodeJS系列~目录

    回到占占推荐博客索引 Node.js官网对它的阐述 Node.js is a platform built on Chrome's JavaScript runtime for easily buil ...

  5. 大众点评试水O2O新模式:实体店试穿,扫描二维码付款 现场取货

    在餐饮美食行业取得不错的成绩之后,大众点评将触角延伸到了线下的传统商铺,开始涉足线下商品的 O2O 团购.和传统的线上下单,线下消费的 O2O 模式不同.大众点评的 O2O 团购用户,可在店内试穿后通 ...

  6. Json.Net6.0入门学习试水篇

    原文:Json.Net6.0入门学习试水篇 前言 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.简单地说,JSON 可以将 JavaScript 对象中 ...

  7. 第一回:Scrapy的试水

    前言:今天算是见到Scrapy的第二天,之前只是偶尔查了查,对于这个框架的各种解释,我-----都-----看------不------懂----,没办法,见面就是刚. 目的:如题,试水 目标:< ...

  8. CSharpGL(49)试水OpenGL软实现

    CSharpGL(49)试水OpenGL软实现 CSharpGL迎来了第49篇.本篇内容是用C#编写一个OpenGL的软实现.暂且将其命名为SoftGL. 目前已经实现了由Vertex Shader和 ...

  9. UITableView(自定义cell)试水心得

    初次试水自定义cell的UITableView 实现目标      最终实现结果   界面复原度:98% 未能完全复刻的地方:下半部分的tableview与头部的控件间距上的误差 原因:在做table ...

随机推荐

  1. Codeforces 704D Captain America

    题意:平面上有n个点,每个点必须涂成红色和蓝色中的一种,花费各为r和b(对所有的点花费都一样).m条限制,每条限制形如"y=b这条直线上两种颜色的点的数目之差的绝对值不能超过c"或 ...

  2. 针对苹果最新审核要求为应用兼容IPv6-备用

    在WWDC2015上苹果宣布iOS9将支持纯IPv6的网络服务.2016年初开始所有提交到App Store的应用必须支持IPv6.为确保现有的应用是兼容的,我们需要注意下面几点. 不建议使用底层的网 ...

  3. Recommending music on Spotify with deep learning 采用深度学习算法为Spotify做基于内容的音乐推荐

    本文参考http://blog.csdn.net/zdy0_2004/article/details/43896015译文以及原文file:///F:/%E6%9C%BA%E5%99%A8%E5%AD ...

  4. spark1.1.0源码阅读-executor

    1. executor上执行launchTask def launchTask( context: ExecutorBackend, taskId: Long, taskName: String, s ...

  5. DES加解密实现方式

    private static readonly byte[] _keys = { 0x22, 0x84, 0x56, 0x98, 0x90, 0xAB, 0xpD, 0xEF }; private s ...

  6. Linux下配置QT环境

    一.下载Qt源码包到本机,然后解压缩 #tar zxvf qt-x11-opensource-src-4.3.2.tar.gz -C /usr/local //将qt-x11-opensource-s ...

  7. 数字签名.sys文件的步骤

    ------------------------------------------------------------------------------ 1. 双击MSCrossCert.crt文 ...

  8. HDU_2016——数据的交换输出

    Problem Description 输入n(n<100)个数,找出其中最小的数,将它与最前面的数交换后输出这些数.   Input 输入数据有多组,每组占一行,每行的开始是一个整数n,表示这 ...

  9. JDBC编程之优化

    1.创建 dbconfig.properties driver=com.mysql.jdbc.Driver dburl=jdbc\:mysql\://localhost\:3306/mytest us ...

  10. Ajax解析

    1.Ajax Asynchronous(异步的) javascript and xml 技术组成: CSS + xml +JavaScript +DOM Ajax核心对象: XmlHttpReques ...