node.js 学习一 之 hello world

什么是node.js

  • 编写高性能网络服务器的JavaScript工具包
  • 单线程、异步、事件驱动
    (就是来1w个请求,来一个请求就给这个请求开辟一个内存块来处理?
    (事件驱动就是例如来一个事件,然后有一个回调,等事件(请求?)结束,处理回调?
  • 特点: 快,耗内存多
  • 异步消耗内存测试:网上一个百万级并发测试,未优化的情况下 1M的连接消耗了16G的内存

node.js 的劣势和解决方案

  • 默认不支持多核,可用cluster解决
  • 默认不支持服务器集群,node-http-proxy可解决
  • 使用nginx做负载均衡,静态由nginx处理,动态由node.js处理
  • forever或node-cluster实现灾难恢复
    (以上这一些名词还待详细学习)

安装

安装 node.js 官网下载
测试是否安装成功
npm -v
node -v

hello world

var  http  =  require('http');  
// http 创建一个服务
// request - 浏览器向服务器请求发出的对象
// response - 服务器向浏览器写回的对象
http.createServer(function  (request,  response)  {  
    response.writeHead(200,  {'Content-Type':  'text/html;  charset=utf-8'});  
    console.log('访问');  
    response.write('hello,world');  
}).listen(8000);  
console.log('Server  running  at  http://127.0.0.1:8000/');  
  
/*  
启动服务  
cmd下执行:  
node  n1_hello.js  
浏览器访问:http://localhost:8000  
*/    

浏览器:
可以看到虽然输出了文字,但是浏览器还一直在loading
因为缺少了一句response.end(),http协议实际还未结束

node.js 学习一 之 hello world_第1张图片
01_hello_loading.png

增加response.end

var  http  =  require('http');  
// http 创建一个服务
// request - 浏览器向服务器请求发出的对象
// response - 服务器向浏览器写回的对象
http.createServer(function  (request,  response)  {  
    response.writeHead(200,  {'Content-Type':  'text/html;  charset=utf-8'});  
    console.log('访问');  
    // write 输出但http协议未执行完毕
    response.write('hello,world');  
    response.end('hell,世界');//不写则没有http协议尾,但写了会产生两次访问  
}).listen(8000);  
console.log('Server  running  at  http://127.0.0.1:8000/'); 

response.end中也可以输入
然后从控制台中可以看到,输入了两次"访问"


01_hello_console.png

这是因为浏览器会再次访问 favicon 这个资源

node.js 学习一 之 hello world_第2张图片
01_hello_chrome.png

清除二次访问

var  http  =  require('http');  
// http 创建一个服务
// request - 浏览器向服务器请求发出的对象
// response - 服务器向浏览器写回的对象
http.createServer(function  (request,  response)  {  
    response.writeHead(200,  {'Content-Type':  'text/html;  charset=utf-8'});  
    if(request.url!=="/favicon.ico"){  //清除第2此访问  
        console.log('访问');  
        // write 输出但http协议未执行完毕
        response.write('hello,world');  
        response.end('hell,世界');//不写则没有http协议尾,但写了会产生两次访问  
    }  
}).listen(8000);  
console.log('Server  running  at  http://127.0.0.1:8000/');  

你可能感兴趣的:(node.js 学习一 之 hello world)