node.js一日游
公司近日招一个从深圳归来的“前端大神”。刚来不久,大神是一个爱折腾的人。我与他聊过几句,聊到js,他极力向我推荐node.js。
node.js的大名我也曾经听说过,一个粗浅的印象,这就是个javascript的后端解释器。javascript都可以做后端,那的确是掉炸天的事情。举个栗子,json他呀的就不用再使用什么解析的工具类了吧。这不得不说是javascript这个反人类(我一直认为javascript的语法反人类)语言,又焕发了第二春啊。
不过,最近再忙着公司的开发计划。一直都没有静下心来仔细了解过node.js。今天难得落了空闲,便搞了搞js。
第一步:安装
千里之行,始于足下。要想搞好node,先得会安装node。我用的系统是ubuntu linux ,先用apt-get 搜索了一下,的确是有node的包。可是,抱着好奇的心,我还是到node.js
的官网走了一遭。
http://nodejs.org/
网上的博客,大多用的都是源码包编译安装。这种行为的确很牛逼,可是我安装一个软件的时候,经常出现编译问题。幸好node.js官网上提供了,编译好了的二进制文件。下载好之后,解压到/usr/local/文件夹下。
配置:
$ vim /etc/profile
打开文件,在最末尾加上:
export PATH=/usr/local/node/bin:$PATH
export NODE_PATH=/usr/local/node:/usr/local/node/lib/node_modules
第二步:学习什么
node.js也是个js,所以语法什么的,你就不用学了。除非你连javascript都没有学过。最重要的一点,利用库。这个就必须用到npm,npm是什么?如果你开发过Python,那你一定知道pip和easy_install这两个工具。他们就是用来安装Python库的,node.js就是使用npm来安装的。网络安装,所以使用一个好的镜像地址是件很重要的事情。国内的网络,因为一些大家都知道的原因,并不稳定,所以推荐大家使用日本的镜像地址。
第三步:写点东西
写代码的人,每每学习一门新的语言都是从“hello,world!”开始的(如果你不是,抱歉我们不是在一个时代的)。用node.js写了一个,一行代码。
console.log('hello,world!');
这行代码可以看出很多东西。首先,没有使用一个“print”或“printf”的关键字,而是用的console这个对象(控制台对象)的log()方法。这是一种更彻底的面向对象方式,你可以完全理解成,这行代码是在控制台上打印一行日志(log在很多语言中都是日志方法)。
第四步:关于事件驱动
开发过程中,写过前台的人都不会对事件陌生。onclick,onchange,onsubmit等等,node.js发扬这种事件驱动的精神。你在先前台的一个js的代码时,onclick事件的js代码,是不是只有当被点击时才会执行?
运用到后台的node.js也是如此,即当某件事发生了,这件事下的匿名函数的代码,才会执行。例如,数据操作的代码,我们就可以设为只用数据库已连接的事件发生时,才能执行。
所谓的异步式IO,也正是利用了这一点。IO是个很耗时的操作,所以传统的语言中为了让程序在IO的等待时,也可以做点别的事情,就用到了大家很熟悉的多线程,并发编程。多线程,我只能说无论是编码还是学起来都是相当费劲的。
node.js的异步式IO虽然好,但是对于我们这种写Java,php,c这样语言出身的程序员,没有在思想上拐过弯来,还是有点难度。
入门推荐看《node.js开发指南》,书很短,只有180多页,读完不费力。