锁定老帖子 主题:NodeJS初探之一——神秘的服务器端JS
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (7)
|
|
---|---|
作者 | 正文 |
发表时间:2011-03-20
最后修改:2011-03-22
什么是NodeJS? 第一次看到这个名字,是我在报名淘宝的知识分享时看到的,我很兴奋也很好奇这样的一个JS框架。而你看到这个名字的第一个反应会是什么,是否和我一样的简单的以为它就是一个JS框架?反正我是这么认为了。如果你也是,哈哈,看来也是和我一样单纯。 在去听分享前,我特意google了相关资料来了解,不禁使我吓一大跳,或许是我刚出校园,视野太窄,远没有想过JS脚本从可以从客户端的浏览器转移到了 服务器上。当然,我不是很明白,这样做达到了一个什么样的好处。
简单地说,NodeJS是一个使用了Google高性能V8 引擎
的服务器端JavaScript实现。它提供了一个(几乎)完全非阻塞I/O栈,与JavaScript提供的闭包和匿名函数相结合,使之成为编写高吞吐
量网络服务程序的优秀平台。
特点:
* 单线程事件模型,简单高效 * 基于活跃的高性能V8引擎 * 社区活跃,组件丰富
或许,这一大炮又让前端开发人员又掀起一阵高浪。 在听完淘宝之后的分享,以及之后在网上相关的准备的查询,我才知识,NodeJS正在稍无声息的壮大起了了,一群活跃的开发人员,正在喂养这个出世不久的 孩子,这或许将是继日本海啸的后浪。
不信?好吧,看看下面的这些:
http://nodejs.org/ 官网
https://github.com/joyent/node/wiki wiki http://cnodejs.org/ 淘宝的工程师志愿发起的原创社区 http://www.grati.org/?cat=35 一个国内灰常活跃的社区 http://wiki.grati.org/index.php?title=NodeJS%E4%B8%AD%E6%96%87%E6%96%87%E6%A1%A3 官方文档翻译wiki
引自:cnodejs.org
官方网站: http://nodejs.org/ 英文文档: http://nodejs.org/docs/v0.3.5/api/all.html node包管理器: http://npmjs.org/ 官方介绍: http://nodejs.org/jsconf2010.pdf Node的模块大全,必阅读: https://github.com/ry/node/wiki/modules 一个Node入门网站: http://howtonode.org 一个不错的Node博客: http://blog.nodejitsu.com/ 包含了不少node信息的前端blog: http://dailyjs.com/ 一个48小时NodeJS的竞赛网站: http://nodeknockout.com/
NodeJS 安装(安装环境ubuntu10.04):
1、先从官网上(http://nodejs.org/)下载源码,这边我所下的是 node-v0.4.3.tar.gz 版本的包。
$ tar -zxvf node-v0.4.2.tar.gz $ cd node-v0.4.2 2、接下来进行安装 $ ./configure $ make $ sudo make install 3、安装npm(NodeJS Package Manager NodeJS的包管理器)
相关介绍文章:http://howtonode.org/introduction-to-npm
安装命令为: (注意出错时请检查是不是以root用户进行安装) curl http://npmjs.org/install.sh | sh
4、 配置环境变量,在这里,我所安装的路径为~$ cd /var/iapps/nodejs/ sudo export PATH=$PATH:/var/iapps/nodejs/bin
查看是否安装成功: sammor@sammor-desktop:~$ cd / sammor@sammor-desktop:/$ node --version v0.4.2
如此便成功安装了NodeJS
NodeJS ——Hello,World!
准备脚本: //helloworld.js var sys = require("sys"), http = require("http"); http.createServer(function(req, res) { setTimeout(function () { res.writeHeader(200, {"Content-Type": "text/plain"}); res.write("Hello,World!"); res.finish(); }, 2000); }).listen(8000); sys.puts("Server running at http://localhost:8000/"); 执行脚本: root@sammor-desktop:/var/iapps/nodejs/work# node helloworld.js Server running at http://localhost:8000/ 这时浏览器上访问 http://localhost:8000/ 就可以在页面上看到期待的效果: Hello,World! 这就是NodeJS的Hello,World! 神奇吧。
问题 : 在这里,我只想起个引子,让大家更多的知道这个东西。因为我觉得,这或许对于前端来说是一个很大的惊喜,但对于不善于前端的我来说了开始疑惑了,也许很多人也一样在想着,这样的东西,适用于什么样的场景下?相对于传统的服务端方式来说,它又有什么优势呢?后面有一篇关于我问分享的讲师的一些问题,大家可以看看 NodeJS初探之三——新星的力量 。
NodeJS的应用
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-03-22
HTML5中将大有用处。。。
|
|
返回顶楼 | |
发表时间:2011-03-22
windows上不能跑?
|
|
返回顶楼 | |
发表时间:2011-03-22
js确实是强大的东东呀,不知道这nodejs有没有什么比较成熟的应用。
|
|
返回顶楼 | |
发表时间:2011-03-22
这个东西好像去年还是前年就有了。。。哎,js还在前端用用吧。。服务端已经够多够乱的,,别趟浑水。服务端,JS伤不起的
|
|
返回顶楼 | |
发表时间:2011-03-22
难得好帖子,找到了组织了。
|
|
返回顶楼 | |
发表时间:2011-03-22
用例子看过来不就是ASP吗?ASP也可以用javascript来写
|
|
返回顶楼 | |
发表时间:2011-03-22
最后修改:2011-03-22
很多人对JS的印象都是杂、乱、不易维护、性能低下。其实,那是因为你还没有深入了解过这门语言。如果你能像C程序员那样了解C、Java程序员那样了解Java那样了解它,就不会写出自己都不知道会怎么样运行的代码。
当你使用习惯后,就会发觉它的优势有多大了。 嗯,个人觉得JS最强大的地方还是在于:函数即对象(设置回调注册事件十分方便)、单线程(事件驱动,同样可以处理多任务,并且没有多线程同步的烦恼) ------------ 重新编辑,之前言论过于武断 |
|
返回顶楼 | |
发表时间:2011-03-22
ray_linn 写道 用例子看过来不就是ASP吗?ASP也可以用javascript来写
对ASP不太了解,但应该是在服务端用JScript解释器执行的。 但ASP中,每个页面是独立的程序,运行完就释放了。 而NodeJS,它并不局限于网页输出(类似asp, php等),它是全新的服务端JavaScript环境。 比如例子中的hello world,是创建一个http监听器,传入一个函数作为回调。当有访问此端口时自动执行回调。 它是完整的JS程序,从端口监听到处理数据都是自己处理。 你可以拿它写个刷点击的机器人: var count = 0; var runTask = function(){ var requestObject = http.get({ host : "clue.iteye.com", port: 80, path: '/' }, delayRunTask); requestObject.on("error", delayRunTask); // 出错时仍继续 count++; console.log('第'+count+'次请求'); }; var delayTimer = null, delay = 1000; // 请求间隔1秒 var delayRunTask = function(){ if(delayTimer){ // 保证永远只有1个定时器在等待 clearTimeout(delayTimer); delayTimer = null; } delayTimer = setTimeout(runTask, delay); } delayRunTask(); 当然,上面的代码中把delayRunTask直接换成runTask也没问题,只不过没有间隔,“有可能”会请求失控(当runTask被错误的多次调用,形成多个请求链) 看,多简单 |
|
返回顶楼 | |
发表时间:2011-03-22
tsoukw 写道 windows上不能跑?
如果想玩儿玩儿的话 可以装个Cygwin |
|
返回顶楼 | |