1. Node.js简介

1.1 Node.js是什么

简单的说 Node.js 就是运行在服务端的 JavaScript。

  • Node.js是一个能够在服务器端运行JavaScript的开放源代码、跨平台JavaScript运行环境。
  • Node采用Google开发的V8引擎运行js代码,使用事件驱动非阻塞异步I/O模型等技术来提高性能,可优化应用程序的传输量和规模。Node大部分基本模块都用JavaScript编写。在Node出现之前,JS通常作为客户端程序设计语言使用,以JS写出的程序常在用户的浏览器上运行。Node主要用于编写像Web服务器一样的网络应用,这和PHP和Python是类似的。但是Node与其他语言最大的不同之处在于,PHP等语言是阻塞的而Node是非阻塞的
  • Node是事件驱动的。开发者可以在不使用线程的情况下开发出一个能够承载高并发的服务器。其他服务器端语言难以开发高并发应用,而且即使开发出来,性能也不尽人意。Node正是在这个前提下被创造出来。Node把JS的易学易用和Unix网络编程的强大结合到了一起。
  • Node.js允许通过JS和一系列模块来编写服务器端应用和网络相关的应用。核心模块包括文件系统I/O、网络(HTTP、TCP、UDP、DNS、TLS/SSL等)、二进制数据流、加密算法、数据流等等。Node模块的API形式简单,降低了编程的复杂度。使用框架可以加速开发。常用的框架有Express.js、Socket.IO和Connect等。

1.2 Node.js的历史

1.3 Node.js主要能干什么

  • Web服务API,比如REST
  • 实时多人游戏
  • 后端的Web服务,例如跨域、服务器端的请求
  • 基于Web的应用
  • 多客户端的通信,如即时通信

2. Node.js基本使用

2.1 基本使用

这里是基于windows下cmd进行Node.js命令的编写

除此之外,编写js文件,在命令行中通过 “node fileName” 的方式也可以执行文件中的命令

当然,上面两种方式在windows下都极为不方便,我采用的是HBuilder中集成Node.js插件的方式进行开发和调试

2.2 创建简单应用

如下图,我创建了一个简单应用并启动

可以在本机8888端口查看到响应

下面对这段代码进行分析

2.3 Node.js应用的组成部分

Node.js应用由以下三部分组成:

  • 引入required 模块:我们可以使用 require 指令来载入 Node.js 模块。
  • 创建服务器:服务器可以监听客户端的请求,类似于 Apache 、Nginx 等 HTTP 服务器。
  • 接收请求与响应请求: 服务器很容易创建,客户端可以使用浏览器或终端发送 HTTP 请求,服务器接收请求后返回响应数据。

2.3.1 引入 required 模块

使用 require 指令来载入 http 模块,并将实例化的 HTTP 赋值给变量 http

//请求(require)Node.js 自带的 http 模块,并且把它赋值给 http 变量。
var http = require('http');

2.3.2 创建服务器

使用 http.createServer() 方法创建服务器,并使用 listen 方法绑定 8888 端口。 函数通过 request, response 参数来接收和响应数据。

//调用 http 模块提供的函数: createServer 。这个函数会返回 一个对象,这个对象有一个叫做 listen 的方法,这个方法有一个数值参数, 指定这个 HTTP 服务器监听的端口号。
http.createServer(function(request,response){
//发送http头部 http状态值: 200:OK 内容类型:text/plain
response.writeHead(200,{'Content-Type':'text/plain'});
//发送响应数据
response.end('Hello EveryOne!!'); //服务响应绑定在8888端口
}).listen(8888);

2.3.3 接收请求和响应请求

以上代码我们完成了一个可以工作的 HTTP 服务器。启动该服务器,通过浏览器访问或者自定义发送请求可测试响应。

最新文章

  1. 【原创】开源.NET排列组合组件KwCombinatorics使用(二)——排列生成
  2. 《Google想出了一个决定人员晋升的算法,然后就没有然后了......》有感
  3. openstackM版本常见问题汇总
  4. Visual Studio下Qt调用IDL
  5. the first assignment of software testing
  6. 使用KVC
  7. 1 加到 100 的 时间复杂度 C#.
  8. PHP移动互联网开发笔记(2)——变量及常量
  9. python自动化框架(unnitest+selenium+htmlreport)
  10. linux下查看jdk路径
  11. 阿里字体css代码引入方法
  12. day64 url用法以及django的路由系统
  13. 廖雪峰Java7处理日期和时间-1概念-1日期和时间
  14. 2018-2019-2 网络对抗技术 20165230 Exp4 恶意代码分析
  15. 帝国cms修改栏目后文章列表的url错误怎么解决
  16. 【转载】《Learn More Study Less》整体性学习方法
  17. stark组件开发之列表页面预留钩子方法。 可根据用户的不同,显示不同的列
  18. NLTK和jieba这两个python的自然语言包(HMM,rnn,sigmoid
  19. ios开发遇到的问题
  20. linux之kali系统ssh服务开启

热门文章

  1. STM32启动文件深度解析
  2. Kafka:ZK+Kafka+Spark Streaming集群环境搭建(二十七):kafka manager安装
  3. .NET Framework 工具
  4. GPUImage简单滤镜使用之色阶(三)
  5. mysql中ibdata1过大的问题
  6. Discuz常见小问题-如何安装模板,使用模板
  7. 【转】Ionic3在ts中获取html中值的方法
  8. javascript实现金额大写转换函数
  9. 使用Jmeter对API进行性能测试
  10. 微信小程序 - 组件传值给调用页面