NodeJS的基本概念
NodeJS是什么?
-
NodeJS构建在Google Chrome的V8引擎之上,是一个
独立的JavaScript运行环境
(Google Chrome的V8引擎是目前公认的解析执行JavaScript代码最快的) -
NodeJS这个JavaScript执行环境中为JavaScript提供一些服务器级别的API操作(例如文件读写、网络服务的构建、网络通信、http服务器等处理)
-
NodeJS可以完成服务器软件的功能,不需要php等传统的服务器语言
-
NodeJS的包管理器npm,是世界上最大的开放源代码的生态系统
-
来张图片辅助理解👀
NodeJS的特点
-
单线程:
NodeJS是单线程的,那么如何面对并发,靠的是
事件循环
-
非阻塞/异步IO模型 (input/output):
NodeJS在访问高IO操作后
不会等待
其完成,而是立即去执行其他代码,操作完成后会使用回调函数
返回,保证高效的利用当前线程的cpu不造成硬件浪费 -
事件驱动:
通过事件来驱动整个程序的进行, 由于是单线程,所以把高IO的操作就会移动到事件队列中等待,完成后通过回调函数的方式返回给线程来进行处理。这个循环处理的过程称之为—事件循环
为什么要学习NodeJS?
-
以下列举关于NodeJS的一些工具和框架:
-
nodeOS:基于node的操作系统
-
node-webkit:基于node开发的非常强大的web内核
-
express:基于node的框架
-
forever、pm2:负载均衡
-
log.io:通过浏览器可以打印各种输出的日志和报错
-
grunt、gulp、webpack:前端工程化工具
-
mochar、karma:测试的工具
-
-
学习了NodeJS,不但能辅助前端,而且能够代替后端的编程语言(php,java,C#) 即一门JS语言搞定前后端(全栈)
NodeJS的安装以及模块分类
Docker 安装 NodeJS
-
查看可用的版本Node
docker search node
-
拉取最新版本的Node镜像
docker pull node:latest
-
查看本地镜像
docker images
-
运行容器
docker run -itd --name node-test node
-
进入容器
docker exec -it node-test /bin/bash
NodeJS完成web服务器对应功能的两类模块(API)
-
与前端交互的API(接收请求、响应内容)
-
http模块(request和response对象分别接受请求,响应内容)
-
url模块(用于 URL处理与解析)
-
querystring模块(参数处理)
-
-
本地的API
-
fs(File System)模块-----本地硬盘的文件的操作(包括查找服务器上的文件)
-
得到文件与目录信息:stat
-
创建一个目录:mkdir
-
创建文件并写入内容:writeFile,appendFile
-
读取文件的内容:readFile
-
列出目录的内容:readdir
-
重命名目录或者文件夹:rename
-
删除目录与文件夹:rmdir,unlink
-
-
stream(流)模块(数据分成很多部分进行读取,而不是一次性读取–缓存区/buffer)
-
path(路径)模块
-
events模块-----执行服务器端js代码的模块
-
开放了一个eventEmitter.on() 函数,允许将一个或多个函数绑定到会被对象触发的命名事件上
-
后端没有界面,所以触发事件不能靠用户的某个动作(如:点击鼠标)进行,只能
用函数去触发事件
-
-
NodeJS开发环境搭建
-
命令行的体验
- 新建server1.js文件,代码如下:
console.log("今日份分享😊")
- 进入终端运行:
node server1.js / node server1
- 新建server1.js文件,代码如下:
-
创建简单的http服务
- 新建server2.js文件,代码如下
const http = require('http'); //引入http模块 const hostname ='127.0.0.1'; //服务器地址 const port = 9897; //服务器的端口号 const server = http.createServer((request,response)=>{ //使用http来创建服务器 response.writeHead(200,{"Content-Type":'text/plain;charset=UTF8'}); //响应头信息,状态码,内容类型 response.end('hello nodeJS\n'); //响应结束 }); server.listen(port,hostname,()=>{ //服务器监听 console.log(`Server running at http://${hostname}:${port}/`); // ` 这个单引号是数字1左边的键 });
- 在终端运行:
node server2.js / node server2
- 打开浏览器访问:
http://localhost:9897
- 新建server2.js文件,代码如下
🍳简单的🤏一点点入门级先分享到这里,想继续深入了解,请继续阅读♨️