初探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开发微信公众号后台服务实例
Sep 03 NodeJs
Nodejs学习笔记之入门篇
Apr 16 NodeJs
浅谈Nodejs中的作用域问题
Dec 26 NodeJs
nodejs个人博客开发第三步 载入页面
Apr 12 NodeJs
nodejs入门教程四:URL相关模块用法分析
Apr 24 NodeJs
nodejs集成sqlite使用示例
Jun 05 NodeJs
nodejs实现的连接MySQL数据库功能示例
Jan 25 NodeJs
NodeJS实现不可逆加密与密码密文保存的方法
Mar 16 NodeJs
NodeJS安装图文教程
Apr 19 NodeJs
nodejs分离html文件里面的js和css的方法
Apr 09 NodeJs
详解NodeJs项目 CentOs linux服务器线上部署
Sep 16 NodeJs
浅谈Node的内存泄露问题
May 06 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
PHP编码转换
2012/11/05 PHP
基于empty函数的输出详解
2013/06/17 PHP
php判断ip黑名单程序代码实例
2014/02/24 PHP
php gd等比例缩放压缩图片函数
2016/06/12 PHP
基于jQuery的一个扩展form序列化到json对象
2010/12/09 Javascript
js导出table到excel同时兼容FF和IE示例
2013/09/03 Javascript
9行javascript代码获取QQ群成员具体实现
2013/10/16 Javascript
ionic js 复选框 与普通的 HTML 复选框到底有没区别
2016/06/06 Javascript
thinkphp标签实现bootsrtap轮播carousel实例代码
2017/02/19 Javascript
详解vue-cli + webpack 多页面实例应用
2017/04/25 Javascript
angular.fromJson与toJson方法用法示例
2017/05/17 Javascript
微信小程序wx.request实现后台数据交互功能分析
2017/11/25 Javascript
微信小程序scroll-view组件实现滚动动画
2018/01/31 Javascript
Vue一个案例引发的递归组件的使用详解
2018/11/15 Javascript
[01:06:43]完美世界DOTA2联赛PWL S3 PXG vs GXR 第二场 12.19
2020/12/24 DOTA
Python自动发邮件脚本
2017/03/31 Python
PyQt5每天必学之事件与信号
2018/04/20 Python
Python读取本地文件并解析网页元素的方法
2018/05/21 Python
Python获取航线信息并且制作成图的讲解
2019/01/03 Python
Python爬虫图片懒加载技术 selenium和PhantomJS解析
2019/09/18 Python
Python 将json序列化后的字符串转换成字典(推荐)
2020/01/06 Python
Python语言编写智力问答小游戏功能
2020/10/13 Python
python推导式的使用方法实例
2021/02/28 Python
计算机专业应届毕业生自荐信
2013/09/26 职场文书
计算机专业自荐信
2013/10/14 职场文书
参观考察邀请函范文
2014/01/29 职场文书
文明礼仪伴我行演讲稿
2014/05/12 职场文书
珍惜资源保护环境的建议书
2014/05/14 职场文书
关于九一八事变的演讲稿2014
2014/09/17 职场文书
房屋租赁授权委托书范本
2014/09/20 职场文书
入党积极分子自我批评思想汇报
2014/10/10 职场文书
大学毕业生个人总结
2015/02/28 职场文书
2015年教导处教学工作总结
2015/07/22 职场文书
python实现语音常用度量方法的代码详解
2021/05/25 Python
pandas提升计算效率的一些方法汇总
2021/05/30 Python
如何创建一个创建MySQL数据库中的datetime类型
2022/03/21 MySQL