node.nodejs实战第二季 pdf教程视频一般要学习多久?

Sponsered by
使用 async 控制并发
建立一个 lesson5 项目,在其中编写代码。
代码的入口是 app.js,当调用 node app.js 时,它会输出 CNode( ) 社区首页的所有主题的标题,链接和第一条评论,以 json 的格式。
注意:与上节课不同,并发连接数需要控制在 5 个。
输出示例:
"title": "【公告】发招聘帖的同学留意一下这里",
"href": "http://cnodejs.org/topic/541ed2d05ea12",
"comment1": "呵呵呵呵"
"title": "发布一款 Sublime Text 下的 JavaScript 语法高亮插件",
"href": "http://cnodejs.org/topic/54207e2efffeb6de3d61f68f",
"comment1": "沙发!"
学习 async( ) 的使用。这里有个详细的 async demo 演示:
学习使用 async 来控制并发连接数。
lesson4 的代码其实是不完美的。为什么这么说,是因为在 lesson4 中,我们一次性发了 40 个并发请求出去,要知道,除去 CNode 的话,别的网站有可能会因为你发出的并发连接数太多而当你是在恶意请求,把你的 IP 封掉。
我们在写爬虫的时候,如果有 1000 个链接要去爬,那么不可能同时发出 1000 个并发链接出去对不对?我们需要控制一下并发的数量,比如并发 10 个就好,然后慢慢抓完这 1000 个链接。
用 async 来做这件事很简单。
这次我们要介绍的是 async 的 mapLimit(arr, limit, iterator, callback) 接口。另外,还有个常用的控制并发连接数的接口是 queue(worker, concurrency),大家可以去
看看说明。
这回我就不带大家爬网站了,我们来专注知识点:并发连接数控制。
对了,还有个问题是,什么时候用 eventproxy,什么时候使用 async 呢?它们不都是用来做异步流程控制的吗?
我的答案是:
当你需要去多个源(一般是小于 10 个)汇总数据的时候,用 eventproxy 方便;当你需要用到队列,需要控制并发数,或者你喜欢函数式编程思维时,使用 async。大部分场景是前者,所以我个人大部分时间是用 eventproxy 的。
正题开始。
首先,我们伪造一个 fetchUrl(url, callback) 函数,这个函数的作用就是,当你通过
fetchUrl('', function (err, content) {
// do something with `content`
调用它时,它会返回
的页面内容回来。
当然,我们这里的返回内容是假的,返回延时是随机的。并且在它被调用时,会告诉你它现在一共被多少个地方并发调用着。
// 并发连接数的计数器
var concurrencyCount = 0;
var fetchUrl = function (url, callback) {
// delay 的值在 2000 以内,是个随机的整数
var delay = parseInt((Math.random() * ) % 2000, 10);
concurrencyCount++;
console.log('现在的并发数是', concurrencyCount, ',正在抓取的是', url, ',耗时' + delay + '毫秒');
setTimeout(function () {
concurrencyCount--;
callback(null, url + ' html content');
}, delay);
我们接着来伪造一组链接
var urls = [];
for(var i = 0; i & 30; i++) {
urls.push('http://datasource_' + i);
这组链接的长这样:
接着,我们使用 async.mapLimit 来并发抓取,并获取结果。
async.mapLimit(urls, 5, function (url, callback) {
fetchUrl(url, callback);
}, function (err, result) {
console.log('final:');
console.log(result);
运行输出是这样的:
可以看到,一开始,并发链接数是从 1 开始增长的,增长到 5 时,就不再增加。当其中有任务完成时,再继续抓取。并发连接数始终控制在 5 个。
完整代码请参见 app.js 文件。人气:701262
访问用户量:2032
笔记经验:1294
总积分:1201
级别:普通会员
搜索本笔记
ta的交流分类
ta的全部笔记
浏览(5760)|(0)
&&交流分类:|笔记分类:
实际上在开始的时候我已经对NodeJS有了一定的了解。
比如我知道它是居于Javascript语言的服务器端web Server,比如我知道它的优势在于它的性能,而造成性能优异的原因在于高效的V8引擎,也就是编译器,以及其它一些语言层面的东东,无非就是JS一些语言的特点,函数,异步,回调之类的。
所以对于这样的一项技术我已经知道它的优点缺点以及技术的方向,也许有人会问我深入学习它的目的是什么?答案可能很搞笑,我想做个HTML5版本的三国杀,用来和同事无聊的时候娱乐用,或者其它一些简单点的支持socket的web游戏。而学习NodeJS的原因在于它支持websocket,就这么简单。虽然其它一些语言也可以轻松实现websocket server,甚至codeplex上就有开源的C#实现。但是程序员吗,如果不多折腾怎么进步,于是开始了我的NodeJS折腾之旅。
但是在具体学习的时候,我还是遇到了开始时候想象不到的很多困难,下面就是对学习过程的一个简单记录。
当然是Google开始,难道你还能找到其它途径吗?
第一条搜索记录显然就是www.NodeJS.org这个官方网站,很简洁的网站。
发现最中间好大的一个Download按钮,不管许多,下载之。发现是一个msi文件,那还考虑什么,安装吧。(Windows OS)
安装的过程很简单,以至于我连图都不愿意贴了,简单到隔壁的大妈肯定都能轻松的安装上的程度。:)
后来才发现,在Linux下和Mac下都要比Windows下折腾麻烦一些,Windows下的青年们果然都是小白。。。(本人从不认为Windows比Linux要差,甚至在易用性扩展性方面远远超过Linux,但是从程序员的角度来说,用Linux确实比windows要好,因为它总是强迫你折腾,而折腾正是程序员前进的保证)
OK,开始程序员的永远的第一步“Hello World”,这年头,学习一门新技术,如果你不弄个Hello World,你都不好意思出来混。
var http = require(&http&);
http.createServer(function(request, response) {
response.writeHead(200, {&Content-Type&: &text/plain&});
response.write(&Hello World&);
response.end();
}).listen(8080);
这样就完事了,将这几句话copy近一个server.js的文件中,然后你需要打开命令行(强烈推荐使用PowerShell,我现在都没有搞明白用CMD的话除了关掉窗口怎么停止或者Restart),运行
node server.js
接下来,打开浏览器访问http://localhost:8080/,你会看到一个写着“Hello World”的网页。
这几句话应该都能看明白,不解释了。
接下来自然而然的就想如何弄Web Socket的Server了,于是继续Google之,发现需要安装NodeJS的模块socket.io(这东西个人的理解就是类似于Java中的第三方库的意思)
安装模块的方式一般是通过NPM,对于NPM完全没有概念,于是继续Google之。
找到一篇文章介绍NPM的http://howtonode.org/introduction-to-npm,看了下,大概有了一些了解。(文章不错,推荐下)
NPM就是NodeJS Package Management的缩写。目前的NodeJS已经自带NPM了。
这里简单介绍几个npm 命令,
npm list – 查看当前安装的模块
npm version – 查看当前npm的版本
npm install – 安装新模块
npm update – 更新模块
npm help – 帮助(这个最重要)
其它命令可以去帮助文件中查询,或者敲击最上面的npm help命令
安装的命令很简单,你可以运行 npm help install获取更多帮助(发现npm的帮助文件做的相当的不错,例如运行上面的命令会自动打开一个htm帮助文件)
npm Install socket.io
npm install express
有些文章会提示这个命令可以加上-g或者-d,例如
npm install –g socket.io
搜索了下-g,-d是什么意思,没有什么好的答案,后来在config的帮助文件中找到了答案(有很多时候帮助文件比Google靠谱的多)
按照帮助文件的说法,-g,-d其实就是Shorthand(缩记),说白了就是缩记符,他们分别代表的是
g – global
d – log lever info
还有其它的一些缩记符,你可以在帮助文件中找到他们
于是开始安装模块,看起来很简单,但是这个时候问题出现了,我怎么都连接不上服务器
总是提示这个错误
npm http GET https://registry.npmjs.org/express
Error: failed to fetch from registry
看了下这个命令和执行过程,怀疑是下载一些包和文件之类的东东回来。
由于我是在单位折腾的,所以怀疑是网络环境的问题,因为没有办法通过服务器的审查,所以不允许下载。
(1) 最开始想到的办法是将https改为http,不使用ssl这样的https传输协议,于是找到了修改配置的命令
npm config set registry http://registry.npmjs.org/express
npm config set strict-ssl false
更改之后,发现无效
(2) 因为其实就是下载文件,所有有的网站提到了可以将默认的http://registry.npmjs.org/express更改为其它网站,并给了几个网址,可以通过上面的更改配置的方式更改,还是无效
(3) 最后无奈换了个网络环境之后,发现可以安装了,感觉应该是下载了安装包,不会有其它变化(比如写入注册表之类的),所以将整个目录copy了过来,并且进行了验证,发现是好用的,你可以通过如下语句验证
于是,环境终于算是搭建完成了,可以开始下面的工作了
几个注意事项及总结:
1. NodeJS的模块路径是nodejs的安装目录下面的node_modules子目录,例如我的是
C:\Program Files\nodejs\node_modules
2.很多命令都需要node执行,比如
node –help
node是一个命令行的执行程序,在NodeJS的根目录中能够找到
3.很多命令都需要npm的执行,你可以在NodeJS的根目录中找到npm.cmd这个文件
4.发现自己的命令行功底真的弱爆了,很多时候对于命令行都挺无奈的。。。
5.帮助文档很重要,有很多时候比Google定位问题要准确的多
6.有准备的去找答案和瞎碰完全就是两个概念
7.多折腾总归是有好处的,千万不要怕折腾
相关笔记推荐
精品视频课程推荐
创建规范的XML文档,DTD的作用,并且可以根据要求创建私用的DTD,通过JavaScript解析XML DOM
本视频课程是北京Java私塾原创精品书籍《研磨设计模式》一书的配套学习视频,由《研磨设计模式》的第一作者CC录制
课程目标:全面、系统的掌握GoF设计模式的知识,达到可以在实际项目开发中运用的能力
技术要点:如何实现可配置、如何实现缓存以及缓存的管理、如何实现用缓存来控制多实例的创建、如何实现参数化工厂、 如何实现可扩展工厂、如何实现原型管理器、如何实现Java的静态代理和动态代理、如何实现多线程处理队列请求、 如何实现命令的参数化配置、可撤销的操作、宏命令、队列请求和日志请求、如何实现翻页迭代、如何检测环状结构、 如何实现通用的增删改查、如何模拟工作流来处理流程、如何实现简单又通用的XML读取、如何实现模拟AOP的功能......
WebLogic基础知识:WebLogic基本概念、正确安装WebLogic、建域、应用部署于JDBC选择、对WebLogic的监控和日志查看、集群的高可用性;课程目标:彻底掌握WebLogic的基本概念,在理解基本概念的基础上做到正确的安装WebLogic,根据不同的需求创建域,合理选择应用部署和JDBC配置。熟练掌握WebLogic的console监控,了解各种性能和运行指标,以及对监控结果的分析,运用集群的高可用性,对集群架设。
本课程专注于数据结构和算法的内容,使用Java来进行代码示例,不空洞的讲解概念和理论,重点放在代码的实现和示例上。
从零开始、全面系统、成体系的讲解数据结构和基本算法,循序渐进的讲述构建软件系统所常见的数据结构和算法。
系统、完整的学习Spring Web MVC开发的知识。包括:Spring Web MVC入门;理解DispatcherServlet;注解式控制器开发详解;数据类型转换;数据格式化;数据验证; 拦截器;对Ajax的支持;文件上传下载;表单标签等内容;最后以一个综合的CRUD带翻页的应用示例来综合所学的知识
浏览(5760)|(0)
&&交流分类:|笔记分类:
版权所有 Copyright(C) 私塾在线学习网node.js入门教程
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了node.js入门教程,讲解了node.js在linux和windows下的安装,模块的概念,NPM的使用等等,是一篇不错的nodejs入门文章,需要的朋友可以参考下
Node是个啥?
  写个东西还是尽量面面俱到吧,所以有关基本概念的东西我也从网上选择性的拿了些下来,有些地方针对自己的理解有所改动,对这些概念性的东西有过了解的可选择跳过这段。
  1.Node 是一个服务器端 JavaScript 解释器,可是真的以为JavaScript不错的同学学习Node就能轻松拿下,那么你就错了,总结:水深不深我还不知道,不过确实不浅。
  2.Node 的目标是帮助程序员构建高度可伸缩的应用程序,编写能够处理数万条同时连接到一个物理机的连接代码。处理高并发和异步I/O是Node受到开发人员的关注的原因之一。
  3.Node 本身运行Google V8 JavaScript引擎,所以速度和性能非常好,看chrome就知道,而且Node对其封装的同时还改进了其处理二进制数据的能力。因此,Node不仅仅简单的使用了V8,还对其进行了优化,使其在各种环境下更加给力。(什么是V8 JavaScript 引擎?请“百度知道”)
  4.第三方的扩展和模块在Node的使用中起到重要的作用。下面也会介绍下载npm,npm就是模块的管理工具,用它安装各种 Node 的软件包(如express,redis等)并发布自己为Node写的软件包 。
  在这简单说说在window7和linux两种环境下安装Node。安装的时候一定要注意Python的版本,多次因为Python版本的问题安装失败,建议2.6+的版本,低版本会出现Node安装错误,查询Python版本可在终端中输入:pyhton -v
  1.先介绍linux下的安装吧,Node在Linux环境下的安装和使用都非常方便,建议在Linux下运行Node,^_^...我使用的是Ubuntu11.04
   a.安装依赖包:50-100kb/s大概每个包一分钟就能下载安装完成 代码如下:  sudo apt-get install g++ curl libssl-dev apache2-utils   sudo apt-get install git-core   b.在终端一步步运行一下命令: 代码如下:  git clone git:///joyent/node.git&&   cd node  ./configure  make&&   sudo make install  安装顺利的话到这一步Node就算安装成功了,2M的网络用了共计12分钟。
  注:如果不用git下载也可以直接下载源码,不过这样下载安装需要注意Node版本问题。使用git下载安装是最方便的,所以推荐之。
2.在Windows下使用Cygwin安装Node,这个方式不太推荐,因为真的需要较长时间和较好的人品。我的系统是 win7旗舰版
  Cygwin是一个在windows平台上运行的unix模拟环境,下载地址:/setup.exe。
  下载好Cygwin后开始安装,步骤:
   a.选择下载的来源 - Install from Internet
   b.选择下载安装的根目录
   c.选择下载文件所存放的目录
   d.选择连接的方式
   e.选择下载的网站 - /cygwin
   f.麻烦就麻烦在这步,考验人品的时候到了。需要的下载安装时间不确定,反正需要比较长的时间(超过20分钟),偶尔会出现安装失败的情况。单击一下各个程序包前面的旋转箭头图标选择你想要的版本,选中时会出现了"x"号表示已经选中了该程序包。选择需要下载的程序包: 代码如下:Devel包:    gcc-g++: C++ compiler    gcc-mingw-g++: Mingw32 support headers and libraries for GCC C++    gcc4-g++: G++ subpackage    git: Fast Version Control System – core files    make: The GNU version of the ‘make' utility    openssl-devel: The OpenSSL development environment    pkg-config: A utility used to retrieve information about installed libraries    zlib-devel: The zlib compression/decompression library (development)  Editor包:vim: Vi IMproved – enhanced vi editor  Python包:把Default切换成install状态即可  Web包:    wget: Utility to retrieve files from the WWW via HTTP and FTP    curl: Multi-protocol file transfer command-line tool上个截图,以下载zlib-devel为例:
上几步走完才算把环境搭建完成,可是现在还没有到安装Node,还需要在Cywgin的ASH模式下执行rebaseall,步骤如下:
   a. cmd命令行
   b. 进入cygwin安装目录下的bin子目录
   c. 运行ash进入shell模式
   d. ./rebaseall -v
   e. 没有错误就关闭命令行窗口  好了,现在到下载安装Node了,启动Cygwin.exe后输入: 代码如下:$ wget http://nodejs.org/dist/node-v0.4.12.tar.gz  $ tar xf node-v0.4.12.tar.gz  $ cd node-v0.4.12  $ ./configure  $ make  $ make install
3.直接下载node.exe文件
  直接去nodejs.org下载,听说有不太稳定的问题,不过你假如只是想先在windows下了解Node,个人感觉这个方法比你装个Cygwin好很多。
  注:原本不太想写安装Node这段,可是为了这篇文章的全面性还是写了,没想到一写就是那么长一段了...茶几了
“Hello World” - 为什么每次见到这句心情都会小激动,不解...
  首先,创建个hello.js的文件,在文件中copy如下代码: 代码如下:var http = require('http');  http.createServer(function (req, res) {  & res.writeHead(200, {'Content-Type': 'text/plain'});&   res.end('Hello World\n');  }).listen(1337, "127.0.0.1");  console.log('Server running at http://127.0.0.1:1337/');
代码逻辑:
   a. 全局方法require()是用来导入模块的,一般直接把 require() 方法的返回值赋值给一个变量,在 JavaScript 代码中直接使用此变量即可 。require("http") 就是加载系统预置的 http 模块
   b. http.createServer 是模块的方法,目的就是创建并返回一个新的web server对象,并且给服务绑定一个回调,用以处理请求。
   c. 通过 http.listen() 方法就可以让该 HTTP 服务器在特定端口监听。
   d. console.log就不用多说了,了解firebug的都应该知道,Node实现了这个方法。
    注: 想了解具体细节请查看文档 cnodejs.org/cman/all.html#http.createServer
  接着运行Node服务器,执行hello.js代码,成功启动会看见console.log()中的文本。有图有真相:
npm的下载和使用
  除Node本身提供的API外,现在有不少第三方模块可极大的提高开发效率,npm就是Node的软件包管理器,可以用它安装所需软件包并发布自己为nodejs写的软件包。官网地址:npmjs.org
  安装只需要在终端写入一行代码:     代码如下:  curl http://npmjs.org/install.sh | sh  npm安装node扩展包同样是一行代码:   代码如下:  npm install &包名&    //例:npm install express  注:如果安装模块的过程中报域名错误的话,请清空缓存 &npm cache clean 或重启计算机即可。
理解Node的模块概念
  在Node中,不同的功能组件被划分成不同的模块。应用可以根据自己的需要来选择使用合适的模块。每个模块都会暴露一些公共的方法或属性。模块的使用者直接使用这些方法或属性即可,对于内部的实现细节就可以不用了解。除了Node本身提供的API外,开发人员也可以利用这个机制来将应用拆分成多个模块,以提高代码的可复用性。
  1.如何使用模块?
  在Node中使用模块是非常方便的,在 JavaScript 代码中可以直接使用全局函数 require() 来加载一个模块。
  在刚刚”Hello World"的例子中,require("http") 可以加载系统预置的 http 模块;模块名称以 "./" 开始的,如 require("./myModule.js") 用来加载与当前 JavaScript 文件同一目录下的 myModule.js 模块。
  2.自己如何开发模块?
  刚刚介绍使用require()导入模块的时候,模块名称以 "./" 开始的这种,就是自己开发的模块文件。需要注意的就是JS文件的系统路径。
  代码中封装了模块的内部处理逻辑,一个模块一般都会暴露一些公开的方法或属性给其他的人使用。模块的内部代码需要把这些方法或属性给暴露出来。
  3.来一套简单的例子。先创建一个模块文件如myModule.js,就一行代码
  console.log('Hi Darren.')  然后创建一个test.js文件,导入这个JS文件,执行node看到结果
现在Node社区中已有不少第三方的模块,希望能有更多人通过学习Node,加入到这个大家庭中,为Node社区来添砖加瓦。先谢谢之,咱们继续。  
  4.来一个深点的例子。这个例子中将会针对 私有和共有 进行介绍。先创建一个myModule.js,代码如下: 代码如下:  var name = "Darren";  this.location = "Beijing";  this.showLog = function(){  &&& console.log('Hi Darren.')  };  代码中出现了三种类型,分别是: 私用属性,共有属性和共有方法,再创建一个test.js,执行Node结果高亮的地方很清楚的告诉我们,私有方法我们在模块以外是取不到的,所以是undefined。共有属性和共有方法的声明需要在前面加上 this 关键字。
Node能做什么和它的优势
  Node核心思想:  1.非阻塞;  2.单线程;  3.事件驱动。
  在目前的web应用中,客户端和服务器端之间有些交互可以认为是基于事件的,那么AJAX就是页面及时响应的关键。每次发送一个请求时(不管请求的数据多么小),都会在网络里走一个来回。服务器必须针对这个请求作出响应,通常是开辟一个新的进程。那么越多用户访问这个页面,所发起的请求个数就会越来越多,就会出现内存溢出、逻辑交错带来的冲突、网络瘫痪、系统崩溃这些问题。
  Node的目标是提供一种构建可伸缩的网络应用的方案,在hello world例子中,服务器可以同时处理很多客户端连接。
  Node和操作系统有一种约定,如果创建了新的链接,操作系统就将通知Node,然后进入休眠。如果有人创建了新的链接,那么它(Node)执行一个回调,每一个链接只占用了非常小的(内存)堆栈开销。   
  举一个简单的异步调用的例子,把test.js和myMydule.js准备好了,^_^。把以下代码拷贝到test.js中并执行: 代码如下:var fs = require('fs');  fs.readFile('./myModule.js', function (err, data) {    if (err)    console.log('successfully');  });  console.log('async');
所谓的异步,大家应该都能想得到运行时会先打先显示"async",再显示"successfully"。
  Node是无阻塞的,新请求到达服务器时,不需要为这个请求单独作什么事情。Node仅仅是在那里等待请求的发生,有请求就处理请求。
  Node更擅长处理体积小的请求以及基于事件的I/O。
  Node不仅仅是做一个Web服务的框架,它可以做更多,比如它可以做Socket服务,可以做比方说基于文件的,然后基于像一些比方说可以有子进程,然后内部的,它是一个很完整的事件机制,包括一些异步非注射的解决方案,而不仅仅局限在网络一层。同时它可能,即使作为一个Web服务来说,它也提供了更多可以深入这个服务内核、核心的一些功能,比方说Node使用的Http Agent,这块就是它可以更深入这个服务内核来去做一些功能。
Node事件流概念
  因为Node 采用的是事件驱动的模式,其中的很多模块都会产生各种不同的事件,可由模块来添加事件处理方法,所有能够产生事件的对象都是事件模块中的 EventEmitter 类的实例。代码是全世界通用的语言,所以我们还是用代码说话: 代码如下:var events = require("events");   var emitter = new events.EventEmitter();   emitter.on("myEvent", function(msg) {     console.log(msg);   });   emitter.emit("myEvent", "Hello World.");
简单的分析这段:
   1. 使用require()方法添加了events模块并把返回值赋给了一个变量
   2. new events.EventEmitter()这句创建了一个事件触发器,也就是所谓的事件模块中的 EventEmitter 类的实例
   3. on(event, listener)用来为某个事件 event 添加事件处理方法监听器
   4. emit(event, [arg1], [arg2], [...]) 方法用来产生事件。以提供的参数作为监听器函数的参数,顺序执行监听器列表中的每个监听器函数。
EventEmitter 类中的方法都与事件的产生和处理相关:
   1. addListener(event, listener) 和 on(event, listener) 这两个方法都是将一个监听器添加到指定事件的监听器数组的末尾
   2. once(event, listener) 这个方法为事件为添加一次性的监听器。该监听器在事件第一次触发时执行,过后将被移除
   3. removeListener(event, listener) 该方法用来将监听器从指定事件的监听器数组中移除出去
   4. emit(event, [arg1], [arg2], [...]) 刚刚提到过了。
  在Node中,存在各式各样不同的数据流,Stream(流)是一个由不同对象实现的抽象接口。例如请求HTTP服务器的request是一个流,类似于stdout(标准输出);包括文件系统、HTTP 请求和响应、以及 TCP/UDP 连接等。流可以是可读的,可写的,或者既可读又可写。所有流都是EventEmitter的实例,因此可以产生各种不同的事件。
可读流主要会产生以下事件:
1.data&& 当读取到流中的数据时,此事件被触发2.end&& 当流中没有数据可读时,此事件被触发3.error&& 当读取数据出现错误时,此事件被触发4.close&& 当流被关闭时,,此事件被触发,可是并不是所有流都会触发这个事件。(例如,一个连接进入的HTTP request流就不会触发'close'事件。)  还有一种比较特殊的 fd 事件,当在流中接收到一个文件描述符时触发此事件。只有UNIX流支持这个功能,其他类型的流均不会触发此事件。
  相关详细文档:http://cnodejs.org/cman/all.html#events_
强大的File System 文件系统模块
  Node 中的 fs 模块用来对本地文件系统进行操作。文件的I/O是由标准POSIX函数封装而成。需要使用require('fs')访问这个模块。所有的方法都提供了异步和同步两种方式。
  fs 模块中提供的方法可以用来执行基本的文件操作,包括读、写、重命名、创建和删除目录以及获取文件元数据等。每个操作文件的方法都有同步和异步两个版本。
  异步操作的版本都会使用一个回调方法作为最后一个参数。当操作完成的时候,该回调方法会被调用。而回调方法的第一个参数总是保留为操作时可能出现的异常。如果操作正确成功,则第一个参数的值是 null 或 undefined 。
  同步操作的版本的方法名称则是在对应的异步方法之后加上一个 Sync 作为后缀。比如异步的 rename() 方法的同步版本是 renameSync() 。下面列出来了 fs 模块中的一些常用方法,都只介绍异步操作的版本。
  test.js和myModule.js文件准备好了木?把下面这段代码copy到test.js中执行一次 代码如下: var fs = require('fs');  fs.unlink('./myModule.js', function (err) {    if (err)    console.log('successfully deleted myModule.js');  });  如果没有报error,那么myModule.js就被删除了,就是这么简单
这只是一个简单的例子,感兴趣的话自己去多多尝试,实践出真理。由于篇幅原因就不多举例了。^_^
学习Node的总结:
  1.对于一个linux的命令和shell知识几乎为零的我来说,这段时间又学到了不少关于linux知识;vim真是一个强大的编辑器,不用鼠标的感觉真的很好;而且有一点对我来说很重要,在linux下编程很cool,尤其是在团队中都是使用windows的,装装更健康^_^。
  2.理解了服务端JavaScript的一个成功框架-Node,以及它的一些优势和使用的方式,这篇文章就是最好的总结,当然,这只会是一个开始。
一些想对大伙说的话:
  1. 在这我得打击一部分人的积极性。假如你对后台技术不够了解或者没接触过服务端语言,不知道I/O这些知识,没有后台处理流程这种概念,那么......Node并不是一门适合入门的服务端技术。为什么这么说:
   a.重点就是中文实例少,文章少,想系统的学习会比较麻烦,所以在使用过程中总有一种不成熟的感觉,当然主要还是因为我对它不熟悉所造成的。国内使用Node的公司确实不多,当然国外还是有不少了,从cnodejs.org截了一个图:
  3.对于没有进入那么梦想的公司其实是有那么点遗憾,不过生活就应该要这样,有波折有起伏,这正是我需要并且期待的...那么新的生活还是要继续,做自己的舵手,把握好自己的方向,过去的就让它过去吧。
b.对没有经验的朋友来说node其实并不好上手,从最简单“Hello world”就可以看出来(各种运行环境和安装细节的了解都得费点功夫),不要以jQuery库为比较,所处理的事物不同,学习的成本也不同 - 所以不太建议作为新手入门的服务端技术,如果想学习一门服务端语言PHP和Python都是不错的选择,因为:书多 例子多 框架多 上手简单 容易理解 搭建方便...
   c.以上都是我个人善意的建议,由于水平有限,请大家多多指教,希望嘴下留情。
  2. 关于Node的书写规范和具体技巧本人就不献丑了,自己写Node的代码也不多,不过面向对象的编程思想在哪都是好使的。
  3. 希望这篇文章能对大家学习Node有用
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具}

我要回帖

更多关于 node.js实战 双色 pdf 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信