初探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实用示例 缩址还原
Dec 28 NodeJs
nodejs中使用monk访问mongodb
Jul 06 NodeJs
NodeJS制作爬虫全过程(续)
Dec 22 NodeJs
iPhone手机上搭建nodejs服务器步骤方法
Jul 06 NodeJs
nodejs创建web服务器之hello world程序
Aug 20 NodeJs
NodeJS仿WebApi路由示例
Feb 28 NodeJs
详解nodejs微信jssdk后端接口
May 25 NodeJs
nodejs 图解express+supervisor+ejs的用法(推荐)
Sep 08 NodeJs
NodeJS实现自定义流的方法
Aug 01 NodeJs
M2实现Nodejs项目自动部署的方法步骤
May 05 NodeJs
nodejs简单抓包工具使用详解
Aug 23 NodeJs
NodeJS开发人员常见五个错误理解
Oct 14 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
浅谈apache和nginx的rewrite的区别
2013/02/22 PHP
Laravel框架中自定义模板指令总结
2017/12/17 PHP
javascript下判断一个对象是否具有指定名称的属性的的代码
2010/01/11 Javascript
根据对象的某一属性进行排序的js代码(如:name,age)
2010/08/10 Javascript
IE8对JS通过属性和数组遍历解析不一样的地方探讨
2013/05/06 Javascript
JS获取鼠标坐标的实例方法
2013/07/18 Javascript
jQuery函数的第二个参数获取指定上下文中的DOM元素
2014/05/19 Javascript
asp知识整理笔记3(问答模式)
2015/09/27 Javascript
javascript特殊日历控件分享
2016/03/07 Javascript
Jquery操作cookie记住用户名
2016/03/29 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(二)
2016/05/17 Javascript
浅谈js函数中的实例对象、类对象、局部变量(局部函数)
2016/11/20 Javascript
Bootstrap table学习笔记(2) 前后端分页模糊查询
2017/05/18 Javascript
Vue2.0 从零开始_环境搭建操作步骤
2017/06/14 Javascript
原生JavaScript实现的简单放大镜效果示例
2018/02/07 Javascript
jQuery+ajax读取json数据并按照价格排序示例
2018/03/28 jQuery
EasyUI 数据表格datagrid列自适应内容宽度的实现
2019/07/18 Javascript
VuePress 中如何增加用户登录功能
2019/11/29 Javascript
原生js实现文件上传、下载、封装等实例方法
2020/01/05 Javascript
vue实现一个矩形标记区域(rectangle marker)的方法
2020/10/28 Javascript
vue 避免变量赋值后双向绑定的操作
2020/11/07 Javascript
[05:22]DOTA2 2015国际邀请赛中国区预选赛首日TOP10
2015/05/26 DOTA
举例讲解Python中的身份运算符的使用方法
2015/10/13 Python
关于Python形参打包与解包小技巧分享
2019/08/24 Python
python单例模式原理与创建方法实例分析
2019/10/26 Python
浅谈Django2.0 加xadmin踩的坑
2019/11/15 Python
12个不为大家熟知的HTML5设计小技巧
2016/06/02 HTML / CSS
Emporio Armani腕表天猫官方旗舰店:乔治·阿玛尼为年轻人设计的副线品牌
2017/07/02 全球购物
英国最好的温室之家:Greenhouses Direct
2019/07/13 全球购物
管理科学大学生求职信
2013/11/13 职场文书
光信息科学与技术专业职业生涯规划
2014/03/13 职场文书
农村党员一句话承诺
2014/05/30 职场文书
高三励志标语
2014/06/05 职场文书
会议主持词开场白
2015/05/28 职场文书
如何写一份具有法律效力的借款协议书?
2019/07/02 职场文书
项目中Nginx多级代理是如何获取客户端的真实IP地址
2022/05/30 Servers