Node.js 初体验
参看原文链接:
http://www.ibm.com/developerworks/cn/opensource/os-nodejs/index.html?ca=drs
下面记录一下我的学习经历:
1。首先我在 node.js 的官方网站上面下载了 mac os 平台上面适用的安装包,
然后将其安装到了电脑里面(一路的next)~
2。然后我将上面那篇教程里面的 Random.js 弄了下来,
照文章作者的说法在 Terminal 里面执行了命令:
node /Users/user/Desktop/Random.js
好,问题来了,控制台打出一片报错信息
(不知道是不是因为 node.js 做版本升级所导致的,或者是缺少文中所说的其他 module?)
下面我把报出的错误信息贴出来供参考:
因为今天是初次接触 node.js,所以这些报错信息真看得我一头雾水。管他的,google之~
我搜索到一些有用的信息,参看链接:
Node.js EACCES error when listening on most ports
我获知了一些东西,原来还可以像下面这样直接在 Terminal 里面书写 js 脚本:var h = require('http').createServer();
h.listen(900);
原帖中的作者在用 node 命令解释执行这些 js 代码的时候,同样也报出了一版的错误,
我把我执行这些 js 代码的报错信息贴出来(和原帖作者贴出来的报错信息不一样,有点儿奇怪~)
和之前的错误有点儿相似:
events.js:66 throws arguments[1]; // Unhandled 'error' event
到这里的话,基本上就可以确定,错误首先不是由主体逻辑里面的代码所导致的。
肯定是有些要注意的地方我没有注意到,继续探索。。。
我试着执行了一句js 代码:
console.log('hello world!');
比较奇怪,在正常地打印出 “hello world!” 以后,出现了一个 "undefined" 字符串,如下:
在网上查了下,发现了一个有参考价值的帖子:
node.js displays “undefined” on the console
MVP 答复如下:
Just write "hello
world";
and hit enter... it will return "hello
world"
instead of undefined
,
thus no undefined
is
displayed.
console.log
returns undefined
and
also logs arguments to console so you get multiple messages.
也会在随后将返回值打印出来,因为返回值是 undefined,所以便有一个 undefined 跟在后面了~
。。。。。。。。。。。。。。。。。。。。。。。。。。。
吃完晚饭,继续研究 node.js~
又一个给力的帖子给我找出来了,我真是打心眼儿里感激 stackOverFlow,咋就能做的这么好呢~
Node.js EACCES error when listening on most ports
我勒个去,这不就是之前贴出来的那个链接么,汗~之前没有仔细盯着这个帖子看下去,吃完饭后没有什么后顾之忧便多瞧了一眼。
亮点在下面这段代码里面:
var server = require('http').createServer(); var port = process.env.PORT || 3000; server.listen(port, function() { console.log('Listening on ' + port); });说实话我并没有太看懂第二行代码,我的猜测是如果端口 3000 被占用的话,
node.js 会另外挑一个没有被占用的端口来做监听~
不知道我猜的正不正确。。
我把这块代码输进 Terminal 试了一下,发现服务已经正常的开启了。
我勒个去,搞来搞去就是端口被占用了?
于是我又把之前 Random.js 中的端口由 80 改为了 3000
再在 Terminal 里面执行了一下如下的命令:
node /Users/user/Desktop/Random.js
果然,这里也可以正常地跑起来了。。
然后打开我的 Chrome,在地址栏里面输入:
http://locahost:3000?number=50
页面里面反馈了一个 0~50 之间的数字,ok,搞定~
PS:
Unity3D 可以用 js 来开发
Titanium 可以用 js 来做跨平台移动开发
Photoshop 可以用 js 来写功能扩展
大名鼎鼎的 jQuery
构建在或者对 js 提供支持的物件可谓是多不胜数啊
JavaScript 如此火爆,看来得空我得好好研究一番~
另外,发一个 mac 下面查看端口被哪个 app 占用的命令(得输一下管理员的密码):
sudo lsof -i:80
之前不是有说服务无法正常开启就是因为端口被占用了么
于是我试着用如上的命令查看了一下
果然发现有点儿猫腻,原来 80 端口是被 Google Chrome 给占了
Ok,到这里就算结了,对 node.js 总算有了些基本的了解了
后面如果有条件的话,有想法用 node.js 架一个服务器开设我的个人博客~