Node.js初体验(1)


最近写的文章收到许多朋友的反馈,感谢大家的支持和建议,让我对坚持写博客充满热情,一个月一篇文章确实有点少,所以以后尽力多做分享,做好的分享,希望能对朋友们有用。


到新公司的这段时间学到了很多新东西,有好多东西需要去总结去探索,不过事情得一件一件来,今天咱们先从Node开始。注:以后出现的Node即node.js。


先搞点前戏热热场 - 为什么写这篇文章:


1.前段时间单位有新项目启动,服务端要做的工作不多也不算麻烦,就是处理一些中间层的服务,而且我们团队里面个个都会JavaScript,领导就决定试试服务器端的JavaScript,结果本人有幸被派去研究了几天Node,怀着鸡冻的心情开始了node.js的篇章,这篇文章也就是为这几天研究的总结。


2.一个JavaScript工程师如果没听过node.js那么我想你是不是错过了什么,每个优秀的前端工程师都有必要去了解后台处理流程,那么如果又能从JavaScript出发,岂不是一件很美妙的事么。


3.互联网的火热使得JavaScript风光无限,且服务端的JavaScript也并不是什么新技术了,相关的框架也有不少,只是node.js的成功让他爆发式的出现在我们的视线中,让很多前端工程师看到了从前端写到后端的另一种实现希望。注:node.js 是一个允许开发人员使用 JavaScript 语言编写服务器端代码的框架。


4.今年8月曾在某大公司最后一轮(第五轮)的面试被问到Node.js的问题,相对应的回答那是相当之糟糕,结果怎样你们懂的,感觉这个问题是导致没有通过的关键点之一...那家公司是我在读大学的时候就无比向往的公司,现在回想起那次经历和过程,谈不上惋惜,毕竟我真的尽力了 - 其实这篇文章更多的也是为了完成自己一个小小的心结...好吧,又扯远了。


5.欢迎各种转载,不过请注明出处,谢谢。


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写的软件包 。


安装Node


在这简单说说在window7和linux两种环境下安装Node。安装的时候一定要注意Python的版本,多次因为Python版本的问题安装失败,建议2.6+的版本,低版本会出现Node安装错误,查询Python版本可在终端中输入:pyhton -v


1.先介绍linux下的安装吧,Node在Linux环境下的安装和使用都非常方便,建议在Linux下运行Node,^_^...我使用的是Ubuntu11.04


a.安装依赖包:50-100kb/s大概每个包一分钟就能下载安装完成


  1.  sudo apt-get install g++ curl libssl-dev apache2-utils   
  2.  sudo apt-get install git-core 

b.在终端一步步运行一下命令:


  1. git clone git://github.com/joyent/node.git     
  2. cd node  
  3. ./configure  
  4. make     
  5. sudo make install 

安装顺利的话到这一步Node就算安装成功了,2M的网络用了共计12分钟。


注:如果不用git下载也可以直接下载源码,不过这样下载安装需要注意Node版本问题。使用git下载安装是最方便的,所以推荐之。


2.在Windows下使用Cygwin安装Node,这个方式不太推荐,因为真的需要较长时间和较好的人品。我的系统是 win7旗舰版


Cygwin是一个在windows平台上运行的unix模拟环境,下载地址:http://cygwin.com/setup.exe。


下载好Cygwin后开始安装,步骤:


a.选择下载的来源 - Install from Internet


b.选择下载安装的根目录


c.选择下载文件所存放的目录


d.选择连接的方式


e.选择下载的网站 - http://mirrors.163.com/cygwin


f.麻烦就麻烦在这步,考验人品的时候到了。需要的下载安装时间不确定,反正需要比较长的时间(超过20分钟),偶尔会出现安装失败的情况。单击一下各个程序包前面的旋转箭头图标选择你想要的版本,选中时会出现了"x"号表示已经选中了该程序包。选择需要下载的程序包:


  1. Devel包:  
  2. gcc-g++: C++ compiler  
  3. gcc-mingw-g++: Mingw32 support headers and libraries for GCC C++  
  4. gcc4-g++: G++ subpackage  
  5. git: Fast Version Control System – core files  
  6. make: The GNU version of the ‘make’ utility  
  7. openssl-devel: The OpenSSL development environment  
  8. pkg-config: A utility used to retrieve information about installed libraries  
  9. zlib-devel: The zlib compression/decompression library (development)  
  10. Editor包:vim: Vi IMproved – enhanced vi editor  
  11. Python包:把Default切换成install状态即可  
  12. Web包:  
  13. wget: Utility to retrieve files from the WWW via HTTP and FTP  
  14. curl: Multi-protocol file transfer command-line tool 

上个截图,以下载zlib-devel为例:



cygwin例子


其上几步走完才算把环境搭建完成,可是现在还没有到安装Node,还需要在Cywgin的ASH模式下执行rebaseall,步骤如下:


a. cmd命令行


b. 进入cygwin安装目录下的bin子目录


c. 运行ash进入shell模式


d. ./rebaseall -v


e. 没有错误就关闭命令行窗口


好了,现在到下载安装Node了,启动Cygwin.exe后输入:


  1. $ wget http://nodejs.org/dist/node-v0.4.12.tar.gz  
  2. $ tar xf node-v0.4.12.tar.gz  
  3. $ cd node-v0.4.12  
  4. $ ./configure  
  5. $ make  
  6. $ make install 

3.直接下载node.exe文件


nodejs.org下载较慢所以我在网盘上传了一个,下载地址:http://www.everbox.com/f/VhyL6EiGF5Lm3ZSRx85caFDIA5


听说有不太稳定的问题,不过你假如只是想先在windows下了解Node,个人感觉这个方法比你装个Cygwin好很多。


注:原本不太想写安装Node这段,可是为了这篇文章的全面性还是写了,没想到一写就是那么长一段了...茶几了


“Hello World” - 为什么每次见到这句心情都会小激动,不解...


首先,创建个hello.js的文件,在文件中copy如下代码:


  1.  var http = require('http');  
  2. http.createServer(function (req, res) {  
  3.   res.writeHead(200, {'Content-Type''text/plain'});  
  4.   res.end('Hello World\n');  
  5. }).listen(1337, "127.0.0.1");  
  6. 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()中的文本。有图有真相:











标签:
Warning: Invalid argument supplied for foreach() in C:\zl\webjia\view.php on line 50

友情链接
轻松育儿世界奇观
苏ICP备16066217号-2