当前位置:   article > 正文

【NodeJs】NodeJs概述特点及适用场景并使用NodeJS创建第一个web应用_nodejs介绍

nodejs介绍


Node.js 的功能十分强大。Node.js 的出现使 JavaScript 不再只局限于客户端,服务端的编写也同样适用。

一、NodeJS介绍

1.1、Node.js 概述

在这里插入图片描述
Node.js 是一个能够在服务器端运行 JavaScript 的开放源代码、跨平台 JavaScript 运行环境。Node.js 由 Node.js 基金会持有和维护,并与 Linux 基金会有合作关系。Node.js 采用 Google 开发的 V8 运行代码,使用事件驱动、非阻塞和异步输入输出模型等技术来提高性能,可优化应用程序的传输量和规模。这些技术通常用于数据密集的即时应用程序。

Node.js 大部分基本模块都用 JavaScript 语言编写。在 Node.js 出现之前,JavaScript 通常作为客户端程序设计语言使用,以 JavaScript 写出的程序常在用户的浏览器上运行。Node.js 的出现使 JavaScript 也能用于服务端编程。Node.js 含有一系列内置模块,使得程序可以脱离 Apache HTTP Server 或 IIS,作为独立服务器运行。

1.2、Node.js 特点

  • JS运行环境:它是一个 JavaScript 运行环境,依赖于 Chrome V8 引擎进行代码解释。
  • 事件驱动:在 Node.js 中,客户端请求建立连接,提交数据等行为,会触发相应的事件。Node.js 在一个时刻,只能执行一个事件回调函数,但是在执行一个事件回调函数的中途,可以转而处理其他事件,然后返回继续执行原事件的回调函数。
  • 非阻塞 I/O:Node.js 中采用了非阻塞型 I/O 机制,在执行了访问数据库的代码之后,将立即转而执行其后面的代码,把数据库返回结果的处理代码放在回调函数中,从而提高了程序的执行效率。
  • 轻量可伸缩:适用于实时数据交互应用。
  • 单线程:好处是减少内存开销,不用像多线程编程那样处处在意状态同步的问题。缺点是错误会引起整个应用的退出。

1.3、Node.js 适用场景

我们从 Node.js 的特点中可以知道 Node.js 擅长处理 I/O,不善于计算(单线程的缺点),因此 Node.js 适用于:当应用程序需要处理大量并发的 I/O,而在向客户端发出响应之前,应用程序内部并不需要进行非常复杂的处理的时候,Node.js 也非常适合与 Web socket 配合,开发长连接的实时交互应用程序。比如:聊天室,博客系统,考试系统等。

二、NPM是什么

2.1 NPM介绍

NodeJs中文网: http://nodejs.cn/download/
在这里插入图片描述
NPM是包管理工具,NPM 是随同 Node.js 一起安装的包管理工具。因此当我们安装好 Node.js 的时候,也安装好了 NPM。NPM 是一个命令行工具,用于从 NPM Registry 中下载、安装 Node.js 程序,同时解决依赖问题。

2.2 nodeJs的基本操作

查看Node.js版本:

node -v
  • 1

查看系统中 NPM 版本:

npm -v
  • 1

三、REPL是什么

Node.js REPL(Read Eval Print Loop:交互式解释器)表示一个电脑的环境,类似 Window 系统的终端或 Unix/Linux shell,我们可以在终端中输入命令,并接收系统的响应。我们可以用来执行 JavaScript 代码。
启动Node终端:

node
  • 1

然后我们就可以在 > 后输入简单的表达式,并按下回车键来显示代码运行结果。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、NodeJs全局对象——global

4.1 什么是global

在 JavaScript 中全局对象通常是 window,而在 Node.js 中全局对象是 global。所有全局变量(除了 global 本身以外)都是 global 对象的属性,我们可以直接访问到 global 的属性。

按照 ECMAScript 的定义,满足以下条件的变量是全局变量:

  • 在最外层定义的变量。
  • 全局对象的属性。
  • 隐式定义的变量(未定义直接赋值的变量)。

注:当你定义一个全局变量的时候,这个变量同时也会成为全局对象的属性。在 Node.js 中你不可能在最外层定义变量,因为所有用户代码都是属于当前模块的,而模块本身不是最外层上下文。定义变量一定要使用 var 关键字,因为全局变量会污染命名空间。

4.2 常用的全局变量和全局函数

  • __filename : 表示当前正在执行的脚本的文件名。它将输出文件所在位置的绝对路径,且和命令行参数所指定的文件名不一定相同。

  • __dirname : 表示当前执行脚本所在的目录。

  • setTimeout(cb, ms) 全局函数在指定的毫秒(ms)数后执行指定函数(cb),只执行一次函数。

function foo() {
  console.log("Hello, syl!");
}
// 三秒后执行以上函数
setTimeout(foo, 3000);
  • 1
  • 2
  • 3
  • 4
  • 5
  • clearTimeout(t) : 用于停止一个之前通过 setTimeout() 创建的定时器。
function foo() {
  console.log("Hello, syl!");
}
// 三秒后执行以上函数
var t = setTimeout(foo, 3000);
// 清除定时器
clearTimeout(t);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • setInterval(cb, ms) 与 setTimeout(cb, ms) 类似,不同的是这个方法会不停的执行函数。直到 clearInterval() 被调用或窗口被关闭,也可以按 Ctrl + C 停止。
function foo() {
  console.log("Hello, syl!");
}
// 三秒后执行以上函数
var t = setInterval(foo, 3000);
// 清除定时器
clearInterval(t);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • console.log() 是个全局函数用于进行标准输出流的输出,即在控制台中显示一行字符串,和 JavaScript 中的使用一样。

五、NodeJS创建第一个应用

Node.js 创建第一个应用之前,我们先来看看 Node.js 应用由哪几部分组成:

  • 1、引入 required 模块:使用 required 指令来载入 Node.js 模块。
  • 2、创建服务器:服务器可以监听客户端的请求,类似于 Apache、Nginx 等 HTTP 服务器。
  • 3、接受请求与响应请求。

新建一个名为 server.js 的文件:

var http = require("http"); // 加载 http 模块,并将实例化的 HTTP 赋值给变量 http

http
  .createServer(function (request, response) {
    // 发送 HTTP 头部
    // HTTP 状态值: 200 : OK
    // 内容类型: text/plain
    response.writeHead(200, 
    					{ "Content-Type": "text/plain" });

    response.end("Hello World\n"); // 发送响应数据 "Hello World"
  })
  .listen(8080);

// 终端打印如下信息
console.log("Server running at http://127.0.0.1:8080/");
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

以上代码我们完成了一个可以工作的 HTTP 服务器。如果在本地计算机使用 node server.js 命令,你可以直接在浏览器中访问 http://127.0.0.1:8080/,你会看到一个写着 "Hello World"的网页。
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/860919
推荐阅读
  

闽ICP备14008679号