海量数据大行其道的今天 node.js 在IO方面如何异步非阻塞

以其高性能,异步IO著称,当然node.js 在 stream 上的异步也非常到位. 我们一般理解的异步请求是这样的: 同时处理多件件事件 A,B,C,D,E,F,G .... 如果用.net语言去处理这些事情可能有2钟情况 (1) A,B ..... G 按照顺序一件一件处理,最后得到返回值. (2)开启多线程去同时执行多个事件. 而node是单线程处理语言,天生就不是富二代,资源还有限......上帝造物的时候是公平,当你发现关上一扇门的话,同时肯定会为你开一扇窗.所以node 有了异步回调. 所以node.js下的处理可能是这样的: A,B ...... G 依然是按照这个顺序处理,但是

node.js events 使用方法 - 事件触发器 - 观察者模式

这还要从node.js 本身的特性说起,这是一门服务器端脚本语言,其特性是单线程异步非阻塞基于事件驱动的脚本语言.今天要说的是node.js 下如何绑定事件,创建事件触发函数.什么是事件? 个人通俗理解,当一件事情由于一个或多个诱因而引发的事情,同时牵扯到其他事情的发生及连锁反应,叫做一个事件.比如:过马路,稍后程序中描述的也是此事例.事件主体是 红绿灯,诱发外因是 由红灯变成绿灯导致结果是 同向等待的行人马上通行,同向等待的车辆马上通行.如何在node.js中使用?首先了解此模块是一个核心模块,直接引用 var events = require('events');任何类型如

node.js 中的魔术变量

魔术变量一词应该出自php语言,或者是本人第一次听说魔术变量是从php得知的.因为它是随系统运行环境变化而变化的,因此得名.node.js 下也有环境变量,最常见的有获取当前运行的脚本文件,获取当前运行脚本文件所在的目录.使用方法非常简单://魔术变量 //获取当前运行脚本文件的文件名 console.log(__filename); //获取当前运行脚本文件所在的目录 console.log(__dirname);执行效果:

node.js 的定时器 setTimeout 和 setInterval

node.js 下的定时器setTimeout(匿名函数,毫秒数) 表示多少毫秒后触发一次此匿名函数.setInterval(匿名函数,毫秒数) 表示多少毫秒后重复触发此匿名函数.了解javascript 的人都应该非常熟悉这两个函数,但是这些定时器却不是 ECMAScript 标准里所包含的函数,起码不是现在标准里的.node.js 是运行的google V8环境下的服务器端javascript 脚本,当然V8是严格按照 EMCAScript 标准来实现的.但是,V8 也实现了这些定时器函数 .因为它们好用,功能强大,已经广泛被浏览器厂商默认支持.可以说已经是深入人心.据说 ECMAScri

node.js require 相对路径 or 绝对路径

node.js 加载其他模块时要使用require(路径) ,路过路径加载的一般都是文件模块,程序首先会加上.js扩展名尝试去搜索,如果找不到,就尝试用 .json 格式扩展名去搜索加载,还找不到,就加上扩展名 .node 去搜索加载.但是这里的路径也有些说道的!常见的格式:require('./lib/util');上面的加载路径是一个相对路径,程序会去所在目录上一层找到lib 文件目录,然后目录下找到 util.js 文件并加载.如何辩别相对/绝对路径,相对路径以 . 开始绝对路径以 / 开始require('/home/zhangzhi/code/test/tes

node.js 中的核心模块 Core Modules 加载顺序及规则

何为核心? 重要的/不可缺的!node.js作为一门跨平台服务器端编程语言,必然也有它的核心.node.js继承了javascript 客户端语言该有的优势,同时摒弃了客户端javascript的一些缺点,比如在客户端javascript环境下,全局变量可以到处被定义,随意被覆盖,代码污染严重,所以node.js有了模块的概念,在模块里定义的全局变量如果没有被export ,那么此变量是私有的,只能在定义的模块是使用.不用提醒我,我并没有跑题,正因为模块机制,导致node.js的一些核心模块也编译成各自独立的二进制文件,他们就放在 node 源代码中 lib 文件夹下.为啥是二进制文件?你不用

node.js 下 express 框架如何获取参数

web下的提交数据的方法有2种,GET,POST,不明白的可以直接去面壁了.到底采用哪种方式提交,取决与form 的 method 值.作为node.js下大名鼎鼎的express框架,如何获取这2中参数呢(1) 先看路由规则app.get(‘/group/:groupID’,function(request,response,error){response.render(‘group’,{title:‘分组管理’,userList:[]};});上面的路由规则让我们不仅想起了MVC模式, 如: localhost:9210/group/1008这里要访问groupID 为 1008 的分组信

回到顶部