Fifth Week:Node.js学习
一 概述
简单来说就是运行在服务器端的JavaScript,事件驱动I/O,基于Google的V8引擎。
(1)非阻塞式IO 、IO多路复用
阻塞式IO是指建立了socket后,未得到响应之前什么也不能做。非阻塞式是指为了得到某些数据,可以通过定时询问的方式获取。
IO多路复用是指fork子进程或者创建线程来等待数据。
(2)libuv
事件轮训机制:每个句柄中存储数据和回调函数之类的信息,句柄在使用前添加到对应的队列或者堆(只有定时器句柄使用最小堆)中。libuv在进行每一次事件轮询的时候都会从每个类型的句柄中,取出关联的队列或者堆结构进行处理
nodejs最擅长处理高并发,
在java、php、.net等服务端语音中,会为每一个客户端连接创建一个新的线程,每一个线程占大约2MB的内存。也就是说,理论上一个8GB的服务器最多可以连接4000个左右的用户。如果想要让Web应用程序支持连接更多的用户,就要增加服务器的数量。
nodejs不为每一个客户连接创建一个新的线程,而仅仅使用一个线程。当有客户连接了,就触发一个内部事件,通过非阻塞式IO、事件驱动机制,让nodejs程序宏观上也是并行的,因此一个8GB的服务器,可以同时处理超过4万用户的连接
搭建环境
1、下载nodejs 最好是稳定版本LTS
Node -v 验证是否安装成功
2、开发工具vscode
使用pycharm
安装nodejs插件即可
一、http模块、url模块和supervisor模块
使用nodejs时,不仅仅实现了一个应用,同时实现了整个http服务器
//引入http模块
Var http=require(‘http’);
/*
创建一个http服务器
request表示获取url传过来的信息
response给浏览器响应信息
*/
http.createServer(function(request,response){
//设置响应头
response.writeHead(200,{‘Content-Type’:‘text/plain’});
//给页面上面输出一句话并且结束响应
response.end(‘HelloWorld112’);
}).listen(8081);//监听端口
console.log(‘Serverrunningathttp://127.0.0.1:8081/’);
URL模块的使用
Url.parse() 解析url
Url.format(urlObject) 上面parse操作的逆向操作
Url.resolve(from,to) 添加或者替换地址
supervisor自启动工具
设置环境变量
安装supervisor npm install -g supervisor
使用supervisor替代node启动应用
二、模块commonjs
commonJS就是模块化的标准,nodejs就是commonJS的实现
node中模块分成两部分
1、核心模块,由node提供(系统模块)如http模块,url模块、fs模块,这部分核心模块在程序启动时直接被加载到内存中
2、文件模块,用户编写的模块(自定义模块),在运行中动态加载,需要完整的路径分析、文件定位、编译执行过程,这些模块需要我们自行定义
2.2 自定义模块
(1)公共的功能抽离成一个单独的js文件作为一个模块,模块里功能默认外面无法访问,需要在模块里设置exports或者module.exports暴露属性或者方法
(2)外部通过require的方法引入这个模块
Npm init 生成package.json
Npm init --yes
三、fs模块、Mkdirp 第三方库的使用
1. Fs.stat 判断是文件还是目录
2. Fs.mkdir 创建目录
3. Fs.writeFile 若文件不存在,创建写入数据;若文件存在,覆盖内容
4. Fs.appendFile
5. Fs.readFile
6. Fs.readdir
7. Fs.rename
8. Fs.rmdir
9. Fs.unlink
四、数据类型
1、常量 使用大写字母和变量声明
Var SECONDS_PER_DAY = 86400;
2、Number 所有数字都是64位双精度浮点数
注意:除0时不产生异常,返回Infinity或-Infinity
测试是否有效的有限数使用isFinite函数 eg:console.log(isFinite(10/5));
3、 true/false
False:false,0,"",NaN,undefined都将计算为false,其他为true
布尔运算:&& || !
4、字符串
length属性 – 获取字符串长度
拼接 +
其他函数:indexOf、substr(获取子串的起始索引)、splice(根据起始索引获取子串)、split
特殊:
1、undefined 意味着值尚未设置或者根本不存在
2、null 空值
检查类型使用typeof
类型比较和转换
等于运算符==(值相等)
精确等于===(类型和值都要相等)
强制转换:parseInt 、parseFloat
若提供无法转换的值,返回NaN 【如果需要测试NaN,使用isNaN函数
二、Buildin对象
1、对象
创建一个对象 var o1 = new Object();
或 var o2 = {};
初始化:可以在初始化时指定成员名和值
Var user = {
name : “张三”,
age : 23
};
修改:
User.name = “李四”;
User[‘name’] = “王五”;
删除属性
Delete user.name
扩展
User.myValue = 123;//extend myValue
也可以嵌套
User.family = {mom:“coco”,dad:“kevin”};
User.grade = [99,98,97];
2、JSON
数据交换格式
JSON.parse 和 JSON.stringify
接收一个json字符串转换成一个对象
接收一个对象转换成json字符串表示形式
Var obj = {
“first_name”:“HTML”,
last_name :“CSS”
}
Var obj = {
“first_name”:“HTML”,
“last_name”:“CSS”
}
五、async await的使用和async await处理异步
ES7的新语法,需要结合ES6中promise写
1、ES6中常见语法
(1)let const
(2)箭头函数
(3)对象、属性的简写
(4)模板字符串
(5)Promise
2、简单理解async和await
async是让方法编程异步
await是等待方法执行完成
3、以流的方式读写文件
Fs.createReadStream
Fs.createWriteStream
pipe管道:创建一个可读流、一个写入流 读取后直接写入
web服务器:指网站服务器,如Apache、Nignx、ITS等
可以让我们访问web服务器上的网站,也可以下载上面的文件
1、封装静态web服务
2、路由:由一个uri(路径)和一个特定的http方法组成的,涉及到如何响应客户端对某个网站节点的访问。
通俗的说,针对不同请求的url,处理不同的业务逻辑。
六、EJS模块引擎
EJS是后台模板,可以把数据库和文件读取的数据显示到Html页面上
安装 npm install ejs --sava
ejs.renderFile(filename, data, options, function(err, str){
// str => Rendered HTML string
})
绑定数据
七、get、post方法
get:从指定的资源请求数据
post:向指定的资源提交要被处理的数据
获取get传值
Var urlInfo = url.parse(req.url,true);
urlInfo.query;
获取post传值
Var postData = “”;
//数据块接收中
Req.on('data',function(postDataChunk){postData+=postDataChunk;
})Req.on('end',function(){Console.log(postData);
})
Fifth Week:Node.js学习相关推荐
- node.js学习笔记
# node.js学习笔记标签(空格分隔): node.js---## 一 内置模块学习 ### 1. http 模块 ``` //1 导入http模块 const http =require('ht ...
- node.js学习笔记14—微型社交网站
node.js学习笔记14-微型社交网站 1.功能分析 微博是以用户为中心,因此需要有注册和登录功能. 微博最核心的功能是信息的发表,这个功能包括许多方面,包括:数据库访问,前端显示等. 一个完整的微 ...
- Node.js学习笔记8
Node.js学习笔记8 HTTP服务器与客户端 Node.js的http模块,封装了一个高效的HTTP服务器和一个简易的HTTP客户端 http.server是一个基于事件的HTTP服务器,核心由N ...
- node.js学习笔记5——核心模块1
node.js学习笔记5--核心模块1 Node.js核心模块主要内容包括:(1)全局对象 (2)常用工具 (3)事件机制 (4)文件系统访问 (5)HTTP服务器与客户端 一: 全局对象 Node. ...
- 《写给PHP开发者的Node.js学习指南》一2.2 预定义的PHP变量
本节书摘来自异步社区<写给PHP开发者的Node.js学习指南>一书中的第2章,第2.1节,作者[美]Daniel Howard,更多章节内容可以访问云栖社区"异步社区" ...
- node.js学习总结:node.js的内置模块,模块化,npm与包 express,前后端身份认证 JWT认证机制
node.js学习总结 什么是node.js node.js的内置模块 fs系统模块 path路径模块 http模块 模块化 npm与包 express express路由 express+mysql ...
- node.js 学习笔记(二)模板引擎和C/S渲染
node.js 学习笔记(二)模板引擎和C/S渲染 文章目录 node.js 学习笔记(二)模板引擎和C/S渲染 一.初步实现Apache功能 1.1 使用模板引擎 1.2 在 node 中使用模板引 ...
- Node.js 学习 ——nodemon 运行报错解决
Node.js 学习 --nodemon 运行报错解决 报错记录 nodemon : 无法加载文件 C:\Users\Administrator.DESKTOP-0RUBNO7\AppDat on.p ...
- 千锋Node.js学习笔记
千锋Node.js学习笔记 文章目录 千锋Node.js学习笔记 写在前面 1. 认识Node.js 2. NVM 3. NPM 4. NRM 5. NPX 6. 模块/包与CommonJS 7. 常 ...
- 唤醒手腕 - 前端服务器端开发 Node.Js 学习笔记(学习中,更新中)
唤醒手腕 - Node.Js 学习笔记 唤醒手腕个人的学习记录,时间在2021年12月13日 ~ 2021年12月14日,学习方式看官方文档和B站视频,如有错误或者代码问题的地方,欢迎C站大佬能够帮忙 ...
最新文章
- smarty mysql demo_PHP Smarty模版简单使用方法
- xampp无法启动apache,提示terminating worker thread 0
- 虚拟化文件服务器,VMware虚拟化效率之文件服务器性能测试(上)
- python实现高校教务管理系统_python+mysql实现教务管理系统
- 电子海图中点在多边形内的判定
- 【错误记录】Windows 控制台程序编译报错 ( WINDOWS.H already included. MFC apps must not #include <Windows.h> )
- 其他数据类型的一些操作
- java(eclipse)和数据库(mysql)的连接
- Java 9对可选的补充
- 开发人员必学的5门课程
- ab plc软件_【原创】AB上位机FactoryTalk View的使用教程(上)
- 转: MATLAB: cat函数使用
- extends 和super 泛型限定符-上界不存下界不取
- 从滴滴亏109亿说起
- html十Css十Js暴风影音,word html,word转html样式
- 为什么不用网页文件做办公文档
- Android手机开发课程设计之音乐播放器
- 对抗网络学习-FGSM对抗样本生成
- QQ互联--个人资料提交审核
- python日常应用——pdf拆分和合并 python PyPDF2