一 概述

简单来说就是运行在服务器端的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学习相关推荐

  1. node.js学习笔记

    # node.js学习笔记标签(空格分隔): node.js---## 一 内置模块学习 ### 1. http 模块 ``` //1 导入http模块 const http =require('ht ...

  2. node.js学习笔记14—微型社交网站

    node.js学习笔记14-微型社交网站 1.功能分析 微博是以用户为中心,因此需要有注册和登录功能. 微博最核心的功能是信息的发表,这个功能包括许多方面,包括:数据库访问,前端显示等. 一个完整的微 ...

  3. Node.js学习笔记8

    Node.js学习笔记8 HTTP服务器与客户端 Node.js的http模块,封装了一个高效的HTTP服务器和一个简易的HTTP客户端 http.server是一个基于事件的HTTP服务器,核心由N ...

  4. node.js学习笔记5——核心模块1

    node.js学习笔记5--核心模块1 Node.js核心模块主要内容包括:(1)全局对象 (2)常用工具 (3)事件机制 (4)文件系统访问 (5)HTTP服务器与客户端 一: 全局对象 Node. ...

  5. 《写给PHP开发者的Node.js学习指南》一2.2 预定义的PHP变量

    本节书摘来自异步社区<写给PHP开发者的Node.js学习指南>一书中的第2章,第2.1节,作者[美]Daniel Howard,更多章节内容可以访问云栖社区"异步社区" ...

  6. node.js学习总结:node.js的内置模块,模块化,npm与包 express,前后端身份认证 JWT认证机制

    node.js学习总结 什么是node.js node.js的内置模块 fs系统模块 path路径模块 http模块 模块化 npm与包 express express路由 express+mysql ...

  7. node.js 学习笔记(二)模板引擎和C/S渲染

    node.js 学习笔记(二)模板引擎和C/S渲染 文章目录 node.js 学习笔记(二)模板引擎和C/S渲染 一.初步实现Apache功能 1.1 使用模板引擎 1.2 在 node 中使用模板引 ...

  8. Node.js 学习 ——nodemon 运行报错解决

    Node.js 学习 --nodemon 运行报错解决 报错记录 nodemon : 无法加载文件 C:\Users\Administrator.DESKTOP-0RUBNO7\AppDat on.p ...

  9. 千锋Node.js学习笔记

    千锋Node.js学习笔记 文章目录 千锋Node.js学习笔记 写在前面 1. 认识Node.js 2. NVM 3. NPM 4. NRM 5. NPX 6. 模块/包与CommonJS 7. 常 ...

  10. 唤醒手腕 - 前端服务器端开发 Node.Js 学习笔记(学习中,更新中)

    唤醒手腕 - Node.Js 学习笔记 唤醒手腕个人的学习记录,时间在2021年12月13日 ~ 2021年12月14日,学习方式看官方文档和B站视频,如有错误或者代码问题的地方,欢迎C站大佬能够帮忙 ...

最新文章

  1. smarty mysql demo_PHP Smarty模版简单使用方法
  2. xampp无法启动apache,提示terminating worker thread 0
  3. 虚拟化文件服务器,VMware虚拟化效率之文件服务器性能测试(上)
  4. python实现高校教务管理系统_python+mysql实现教务管理系统
  5. 电子海图中点在多边形内的判定
  6. 【错误记录】Windows 控制台程序编译报错 ( WINDOWS.H already included. MFC apps must not #include <Windows.h> )
  7. 其他数据类型的一些操作
  8. java(eclipse)和数据库(mysql)的连接
  9. Java 9对可选的补充
  10. 开发人员必学的5门课程
  11. ab plc软件_【原创】AB上位机FactoryTalk View的使用教程(上)
  12. 转: MATLAB: cat函数使用
  13. extends 和super 泛型限定符-上界不存下界不取
  14. 从滴滴亏109亿说起
  15. html十Css十Js暴风影音,word html,word转html样式
  16. 为什么不用网页文件做办公文档
  17. Android手机开发课程设计之音乐播放器
  18. 对抗网络学习-FGSM对抗样本生成
  19. QQ互联--个人资料提交审核
  20. python日常应用——pdf拆分和合并 python PyPDF2

热门文章

  1. java B2B2C Springboot电子商务平台源码-Feign设计原理
  2. Python--day61--Django中的app
  3. 智能机器人服务广州春运
  4. VMware Fusion DHCP方式下如何指定虚拟机IP地址
  5. 【沟通的艺术】你能勾住你的听众么?
  6. setsockopt()使用方法(參数具体说明)
  7. 请教于国富律师——怎样把灰鸽子病毒和灰鸽子程序区分开
  8. C语言SHELL排序算法
  9. 光缆连接头符号缩写详解
  10. 大话WiFi省电模式