【读书笔记-nodejs权威指南】初识nodejs

目录

nodejs是什么

nodejs和其他服务端语言的不同

非阻塞型IO及事件循环

nodejs中的模块

一个简单的示例


nodejs是什么

        nodejs是美国人Ryan Dahl推出的一个遵循CommonJS标准的服务端Javascript脚本语言开发框架。nodejs内部运行的是Google开发的高性能V8 Javascript脚本语言。

 

nodejs和其他服务端语言的不同

       在Java,PHP或者ASP.NET等服务端语言中,为每一个客户端连接一个新的线程,而每个线程需要消耗大约2MB,所以要支持更多用户就需要增加服务器的数量,也就是增加硬件成本。不仅如此,用户不同的请求可能会被不同的服务器处理,因此各个服务器不要资源共享。

        nodejs修改了客户端到服务器端的连接方法,它并没有为每个客户端创建线程,而是为每个客户端连接触发一个在nodejs内部进行处理的事件,因此nodejs可以同时处理多达几万个用户的客户端连接。

 

非阻塞型IO及事件循环

为了实现高性能,Nodejs中采用了一下两种机制:

  • 非阻塞型IO
  • 事件环

Javascript脚本语言的一个特征是它只支持单线程,V8 Javascript脚本语言也是如此,因此不需要担心他会造成死锁问题,但是与客户端脚本不同的是:Nodejs中为V8 Javascript脚本语言提供了非阻塞型IO机制。这个很好理解,就是在访问数据库这种操作时候,线程会去处理别的请求,而将搜索数据库结果放在回调函数中。

nodejs中,在一个时刻只能执行一个事件回调函数,但是在执行一个回调的时候可以中断去执行另一个事件,然后再返回继续执行原事件回调函数,这种机制称为事件环机制。

 

nodejs中的模块

     nodejs通过模块划分功能,模块的变量和方法只能在模块内访问。如果要在模块A中访问模块B的方法或变量,那么需要通过exports对象将模块B暴露出来,然后在模块A中通过require引入模块B,在利用模块B对象访问其方法和变量。

//模块B
var str;
function bob(){
    return 'bob'
}
exports.bob;

//模块A
var b = require('./b.js')
console.log(b.bob());

当然可以自己开发具有制定功能的模块,然而nodejs提供了一些直接可用的核心模块,并且可以引入第三方模块,下面是一些常用内置模块:

 

一个简单的示例

var http = require('http')                              //引用http模块
http.createServer(function(req,res){                    //创建服务器
    res.writeHead(200,('Content-Type':'text/html'));    //设置响应头
    res.write('<head><meta charset="utf-8"/></head>');  //书写html代码
    res.end('你好\n');                                   //end输出一行html并结束响应流
}).listen(1337,"127.0.0.1");                            //指定服务器使用的地址和端口
console.log('sever running at http://127.0.0.1:1337')   //控制台出书提示

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值