初探nodeJS


Posted in NodeJs onJanuary 24, 2017

一、node概要

nodeJS早有耳闻,但是一直迟迟没有对它下手,哈哈哈,今儿咱就来初探一下它。

nodeJS是个啥东东?

nodeJS,我的理解就是可以运行在后端的JavaScript。

为什么它能够在后端运行呢?

这就得归功于V8引擎(V8是Google Chrome浏览器的JavaScript引擎),通过对高性能V8引擎的封装,并通过一系列优化的API类库,使其就能够在后端运行了。

并且node有两大特点:

 1、基于事件驱动;

 2、无阻塞。

从而nodeJS非常适合处理并发请求。

大家都知道nodeJS其本质就是JavaScript,so基于事件驱动不难理解,但是无阻塞呢?

JavaScript是单线程,所以要做到无阻塞,node是通过大量的回调函数来达到这一目的。

好了,废话不多说了。接下来咱们就开始初步体验它。

二、Install node&npm

因为nodeJS是后端运行的JavaScript嘛,so得有个运行环境啊。不过安装nodeJS的环境比较简单,具体步骤见下:

1、首先到官网下载nodeJS安装包。

在官网中,也能看见官方对nodeJS的一个描述:

Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine.Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient. Node.js' package ecosystem, npm , is the largest ecosystem of open source libraries in the world.

2、在下载完安装包后,在windows下按照默认程序走就欧克啦。

3、检验是否安装成功,在Windows环境下,打开命令提示符,输入node ? v,如果正常就会出现版本号的输出。

如下:

初探nodeJS

在官方介绍中,不是说到npm(Node.js' package ecosystem, npm , is the largest ecosystem of open source libraries in the world.)嘛,其实npm在你安装nodeJS时,就一带帮你安装了。

不信,咱就在命令提示符中输入npm ?v看看。

如下:

初探nodeJS

好了,node开发环境就这么完美的‘搭建'好了,哈哈,是不是很简单。

接下来,我们就开始敲打第一个node程序吧。

三、Get started

一切从"hello world"开始,毕竟我们都是有情怀的人。

简单的嘛,我们就在命令提示符下,敲打我们的程序,你只需输入node,然后回车就可以进入node在命令提示符下的交互环境了。

如下:

初探nodeJS

进入node交互环境后,敲到"hello world"字符串后回车。

结果如下:

初探nodeJS

倘若我们想退出node的这个交互环境,就Ctrl + C,连按两次就退出回到windows命令符啦。

如下:

初探nodeJS

如果要在node的这个交互环境下编程的话,太大费周章了,所以,我们可以引入js文件来执行,例如下面这样。

前提:你得有一个js文件。

我将这个js(helloWorld.js)文件放在D盘的,so运行结果如下:

'use strict'
console.log('Hello world');

初探nodeJS

哈,有点意思哈。

不是说nodeJS是运行在后端的JavaScript嘛。接下来,我们就用nodeJS来开发一个最简单的服务器程序。

四、Node for server

前提:nodeJS是遵循CommonJS规范的。

即,

每个.js文件都是一个模块,模块的好处就是避免命名空间污染。倘若你想让一个模块对外暴露变量,可以用module.exports  =  variable;

而一个模块想要引用另一个模块对外暴露的变量,用require关键字就可以了,如var ref = require(‘module_name');

好了,简单的知道了nodeJS的运用规则,那么我们想要编写一个http服务器,就得先引入这个模块。

如下:

初探nodeJS

接下来就是调用引入的HTTP模块的一个工厂模式方法(createServer)来创建一个新的http服务器。

如下:

初探nodeJS

由于nodeJS的特性之一是事件驱动,so当我们访问一个http服务器时,它会触发一个request事件,我们利用其进行相应处理。

例如,我们的处理方式是,利用writeHead来设置HTTP的响应头和HTTP正文。

具体代码如下:

初探nodeJS

最后,就是想监听的端口号咯。比如我们监听的是80端口。

初探nodeJS

代码以及很完美了,但,为了方便在nodeJS交互环境下运行该js文件后,知道服务器已经启好了,我们还是打印一条日志吧。

如下:

初探nodeJS

'use strict'
//通过require将http库包含到程序中
var http = require('http');
//创建新的HTTP服务器
var server = http.createServer();
//通过request事件来响应request请求
server.on('request',function(req, res){
  res.writeHead(200, {'Content-Type':'text/plain'});
  res.end('Hell World\n');  
});
server.listen('80');
console.log('Server running!');
EntireCode

好了,开启nodeJS交互环境,运行该js文件,我的命名是http.js。

so:

初探nodeJS

这样http服务器就启好了,接下来我们再打开网页,输入127.0.0.1:80,看看效果:

初探nodeJS

good!!有木有一点小小的激动,这样就把http服务器启好并运行起来了。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

NodeJs 相关文章推荐
NodeJs中的VM模块详解
May 06 NodeJs
nodejs实现遍历文件夹并统计文件大小
May 28 NodeJs
Nodejs Stream 数据流使用手册
Apr 17 NodeJs
简单实现nodejs上传功能
Jan 14 NodeJs
CentOS 安装NodeJS V8.0.0的方法
Jun 15 NodeJs
docker中编译nodejs并使用nginx启动
Jun 23 NodeJs
使用Nodejs连接mongodb数据库的实现代码
Aug 21 NodeJs
nodejs操作mongodb的增删改查功能实例
Nov 09 NodeJs
nodejs实现套接字服务功能详解
Jun 21 NodeJs
NodeJS服务器实现gzip压缩的示例代码
Oct 12 NodeJs
Nodejs实现图片上传、压缩预览、定时删除功能
Oct 25 NodeJs
进阶之初探nodeJS
Jan 24 #NodeJs
用nodejs搭建websocket服务器
Jan 23 #NodeJs
NodeJS遍历文件生产文件列表功能示例
Jan 22 #NodeJs
nodejs实现发出蜂鸣声音(系统报警声)的方法
Jan 18 #NodeJs
nodejs的压缩文件模块archiver用法示例
Jan 18 #NodeJs
nodejs 实现钉钉ISV接入的加密解密方法
Jan 16 #NodeJs
简单实现nodejs上传功能
Jan 14 #NodeJs
You might like
Laravel最佳分割路由文件(routes.php)的方式
2016/08/04 PHP
如何运行/调试你的PHP代码
2020/10/23 PHP
javascript 模式设计之工厂模式详细说明
2010/05/10 Javascript
js实现感应鼠标图片透明度变化的方法
2015/02/20 Javascript
使用JavaScript实现旋转的彩圈特效
2015/06/23 Javascript
函数window.open实现关闭所有的子窗口
2015/08/03 Javascript
JavaScript中的跨浏览器事件操作的基本方法整理
2016/05/20 Javascript
javascript实现数据双向绑定的三种方式小结
2017/03/09 Javascript
基于js 本地存储(详解)
2017/08/16 Javascript
vue父组件中获取子组件中的数据(实例讲解)
2017/09/27 Javascript
在vue中使用SockJS实现webSocket通信的过程
2018/08/29 Javascript
JS中的算法与数据结构之二叉查找树(Binary Sort Tree)实例详解
2019/08/16 Javascript
vue+vant实现商品列表批量倒计时功能
2020/01/13 Javascript
使用Python发送各种形式的邮件的方法汇总
2015/11/09 Python
Python探索之URL Dispatcher实例详解
2017/10/28 Python
Python实现聊天机器人的示例代码
2018/07/09 Python
python判断一个数是否能被另一个整数整除的实例
2018/12/12 Python
python画柱状图--不同颜色并显示数值的方法
2018/12/13 Python
使用python制作一个为hex文件增加版本号的脚本实例
2019/06/12 Python
如何使用python把ppt转换成pdf
2019/06/29 Python
django创建最简单HTML页面跳转方法
2019/08/16 Python
Django自带日志 settings.py文件配置方法
2019/08/30 Python
Python模块/包/库安装的六种方法及区别
2020/02/24 Python
python实现测试工具(一)——命令行发送get请求
2020/10/19 Python
Lombok插件安装(IDEA)及配置jar包使用详解
2020/11/04 Python
html5 touch事件实现触屏页面上下滑动(一)
2016/03/10 HTML / CSS
浅析HTML5中header标签的用法
2016/06/24 HTML / CSS
科颜氏法国官网:Kiehl’s法国
2019/08/20 全球购物
国际贸易专业个人求职信格式
2014/02/02 职场文书
行政办公室岗位职责
2014/03/18 职场文书
我是一名护士演讲稿
2014/08/28 职场文书
鲁迅故居导游词
2015/02/05 职场文书
2015年乡镇卫生院工作总结
2015/04/22 职场文书
公司员工违法违章行为检讨书
2019/06/24 职场文书
适合毕业生创业的项目怎么找?
2019/08/08 职场文书
浅析Django接口版本控制
2021/06/26 Python