让我欲罢不能的node.js
从我大一接触第一门编程语言C开始,到现在工作三年陆续接触到了C、汇编、C++、C#、Java、JavaScript、PHP,还有一些HTML、CSS神马的,从来没有一门语言让我像对node.js一样的着迷。接触nodejs在我之前博客提到过在搞web socket在选择服务器的时候很多人推荐nodejs版的,无奈当时对nodejs没有任何概念,所以没看懂人家写的代码,但是感觉很熟悉,网上基本是以在服务器端运行的javascript来解释什么是nodejs,这就让我更疑惑了,javascript怎么可能做socket服务器,在用C#写出服务器后回头看了一下node.js,十分钟之后我就被完全吸引住了。
补记:由于写博客是对nodejs处于了解语法阶段,很多问题没有说清楚,点反对的人不少,关于一些原理性东西可以看看关于node.js的误会
什么是node.js
到底什么是node.js呢?看看官网对nodejs的描述:
Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.
我们可以对此总结出几点
- node.js是一个构建在Chrome JavaScript运行环境的平台,这是很重要的一点,node.js并不是一门语言,而是一个平台
- node.js致力于使构建速度快、稳定的网络程序更简单
- node.js具有事件驱动和非阻塞I/O的特色,使之轻量级并且高效率
- node.js非常适合在分布式设备运行数据密集型实时应用程序
服务器端运行的JavaScript?
Chrome JavaScript runtime也就是我们常说的 Chrome的V8 JavaScript Engine,也就是Goole开发的一个用于Chrome浏览器的底层JavaScript引擎,用于解析JavaScript语句创建其运行环境,保证我们写的语句在浏览器上的表现和我们预期的一致。
那么为什么说node.js是服务器端运行的JavaScript?好好地nodejs干嘛要和V8扯上关系?除了Google搞的V8解释JavaScript十分的快,十分重要的一个原因是V8 JavaScript 引擎并不仅限于在浏览器中运行,可以嵌入任何应用程序中运行。Node.js 和.net framework类似是一个平台(这里有些搞不明白,望大神们指点一二),但它没有像.net一样创造了一门语言——C#在这个平台上运行,而是很巧妙的借用了web开发人员已经非常熟悉的JavaScript语法,使用V8引擎来解析语句,并将其重建可在服务器上使用。所以严格上说node.js并不是服务器端运行的Javascript,而是可以在服务器端运行JavaScript语法的平台。
为什么要用node.js
搞了半天就是一个新瓶装旧酒的东西,看起来除了一个新鲜的可以使用JavaScript语法,node.js没什么长处,为什么要用它而不是同样可以在服务器端运行的Java或C#呢?这要从node.js事件驱动和非阻塞I/O的特色谈起。关于事件驱动熟悉JavaScript的同学应该很熟悉了,node.js采用一系列“非阻塞”库来支持事件循环的方式。本质上就是为文件系统、数据库之类的资源提供接口,比如一个数据库访问,采用事件机制,发起请求之后,立即将进程交出,当数据返回后触发事件,再继续处理数据。
在传统的阻塞I/O中其运行过程是这样的
int num=query('select * from ......'); print(num); ...................//无关语句
print方法必须等待query方法返回结果,如果数据库出现网络连接故障,那么print方法就要等到超时才能执行,然后后面一些无关语句才能一次执行,而在非阻塞I/O中是这样的
query('select * from...',callback(data){ .............//相关语句 print(); }); ..............//无关语句
跟我们使用ajax,在回调函数中处理结果,但是不影响下面语句执行。 怪不得node.js要借用JavaScript来做此事,JavaScript的几个特性使它很胜任这项工作
- 事件机制
- 函数式编程,支持匿名函数,函数参数
如何安装
nodejs的安装还是很简单的,尤其是现在安装包都把npm集成了进去,不用单独安装了,下载下安装包运行就可以了,另外想完整使用nodejs的话需要有C语言的编译环境、git和python,使用window的同学很能会稍微麻烦一些,需要搞定这些。对命令行情有独钟的同学可以看看How to Install Node.js
npm是什么
npm是node packaged modules的缩写,其实是一个nodejs的module的管理工具
什么是module
所谓module和java中的包的概念很类似,一些解决方案的集合,官方会提供核心的几个,第三方的很多
如何安装第三方module
因为nodejs的社区很活跃,有很多好用的第三方的包,我们可以在终端中使用npm的命令安装
- npm install [-g] <name>:使用install指令可以把nodule下载安装的nodejs的全局的path处,不加的话会安装到当前路径
- npm remove <name>:移除module
- npm update <name>:更新 module
还有一些常用命令可以看看npm常用命令
第一个demo
这些都搞定后我们就可以写传说中的hello world了。在任意目录建一个test.js文件
console.log('Hello, World!');
简单的一句话就可以,然后使用node命令运行
这这这。。。太没技术含量了,看看官方给的demo,使用nodejs创建一个web server有多简单
var http=require('http');//引入http module 2 http.createServer(function(request,response){//创建一个web server 3 //回调函数,这样创建server方法就不会阻塞了 4 response.writeHead(200,{'contentType':'text/plain'}); 5 response.end('Hello World!\n'); 6 }).listen(8124); 7 console.log('Server running at http://127.0.0.1:8124/');
先运行一下服务器,按两次Ctrl+C退出
使用浏览器访问一下
就这么简单
相关推荐
【标题】: "APP如何设计一个让用户欲罢不能的活动" 【描述】: "探讨了APP活动设计策略,包括活动的支撑点、形式和设计要点,以提高用户参与度和黏性" 【标签】: "APP 应用开发 数据分析 参考文献 专业指导" 在...
短视频涨粉技巧之“选题策划”:3大选题策略,做出让用户欲罢不能的内容! .doc
属于 Python 程序员的表白神器 整理了一份适合 Python 程序员的表白套路,目前仅收录四个 ...4. 让女神欲罢不能的套路 $ python3 -m pip install pygame $ cd be_my_girlfriend $ python3 love.py
随着游戏的深入,难度逐渐提升,挑战性与趣味性并存,让人欲罢不能。 如果你对Three.js、Oimo.js或者JavaScript编程感兴趣,可以深入研究"mermaid-ring"的游戏源代码。该项目的压缩包文件"mermaid-ring-master"包含...
那些看似冰冷的文字,实则蕴含着无尽的甜蜜,如同冰激凌,让人欲罢不能。书籍中的每一句话,每一个故事,都在教导我们如何去理解生活,如何去面对成长的挑战。 在青少年时期,我们的情感丰富而敏感,读书恰好提供了...
“我昨天收到了这本书,然后就开始阅读……我简直欲罢不能。酷毙了!内容相当有趣,涵盖层面很广,而且切中要点。这本书让我感到印象深刻。” ——Erich Gamma,IBM顶级工程师、《Design Patterns》作者之一 ...
“我昨天收到了这本书,然后就开始阅读……我简直欲罢不能。酷毙了!内容相当有趣,涵盖层面很广,而且切中要点。这本书让我感到印象深刻。” ——Erich Gamma,IBM顶级工程师、《Design Patterns》作者之一 ...
我开始尝试阅读一些浅显的科普书籍和历史传记,尽管有些内容难以理解,但那些新奇的知识和故事总是让我欲罢不能。书籍成为了我成长的助力,它们不仅满足了我对知识的渴望,更培养了我的阅读能力和理解力。 书籍的...
属于 Python 程序员的表白神器 整理了一份适合 Python 程序员的表白套路,目前仅收录四个,将会不断更新中... ...4. 让女神欲罢不能的套路 $ python3 -m pip install pygame $ cd be_my_girlfriend $ python3 love.py
属于 Python 程序员的表白神器 整理了一份适合 Python 程序员的表白套路,目前仅收录四个,将会不断更新中... ...4. 让女神欲罢不能的套路 $ python3 -m pip install pygame $ cd be_my_girlfriend $ python3 love.py
每当我品尝一颗葡萄,那甜而不腻、酸而不刺的口感总是让我欲罢不能,忍不住一颗接一颗地往嘴里送。 提起葡萄,就不能不提到它那独特的集体形态。葡萄一串一串地生长在藤蔓上,紧密相依,就像一个大家庭一样。每颗...
我简直欲罢不能。这真是太酷了,涵盖面广,而且切重要点。这本书让我印象深刻。 ——Erich Gamma IBM 杰出工程师 《设计模式》作者之一 ”我感到读这本书的效果等同于读一千英镑的同类书的效果。“ ——Ward...
在我对食物的丰富记忆里,有几种食物始终占据着特别的位置,它们以其独特的味道和背后承载的文化,让我对其钟爱有加。今天,我想分享的就是我所钟爱的几种食物:豆腐、藕、面包和糖葫芦。 豆腐,作为中国传统的美食...
课件通过各种修辞手法的运用,如比喻和悬念的使用,教授学生如何让文章富有层次感和吸引力,让读者欲罢不能。 在教学过程中,教师可以根据课件内容,引导学生开展小组讨论或个人写作的练习,通过这样的互动与实践,...
6. **Soap Operas**(连续剧):通常讲述复杂的人物关系和剧情,如"He And His Sons",这类剧集常常有连续的情节,让人欲罢不能。 7. **Sitcoms**(情景喜剧):像"Home With Kids"和"Friends",这类节目以幽默、...
这是一本能够让你学出幸福感并在还没有学完时就能够胜任Android应用软件工程师工作的书。《大话企业级Android应用开发实战》所有的内容都是基于企业内部的Android实际开发需要和问题而著。...妙趣横生,让人欲罢不能。
别迷我之未成年人沉迷网吧 在信息飞速发展的时代,电脑游戏的普及和发展也在快速增长。然而,越来越多的中学生开始沉迷于网络游戏,导致了种种不良影响。那么是什么原因导致这么多中学生沉迷于网络游戏呢?这种沉迷...
6. 骇人听闻:让人听了感到震惊和恐惧的事件或消息。 7. 黯然失色:相比之下显得暗淡无光,常用于比较两者优劣。 8. 捕风捉影:比喻毫无事实依据的言论或行为。 9. 卷土重来:形容失败后再次振作,恢复力量。 10. 一...
4. “我两腿早陷在血海里,欲罢不能”表达了一旦陷入困境,想要摆脱困难的艰难,提醒我们在决策时要谨慎,避免陷入无法自拔的境地。 5. 骄傲的毁灭性在“一个骄傲的人,结果总是在骄傲里毁灭了自己”中得以体现,...