什么是Node?
- node.js是基于chrome V8引擎的javaScript的runtime(运行环境)
- 事件驱动
- 非阻塞的i/o模型 i/o: input output 输入输出流 正常情况下i/o的操作都是阻塞的(类似于ajax的同步)常用的阻塞有网络请求、数据库处理 、文件的读写。。。
- node.js的包管理工具npm,是全球最大的开源库,生态系统。
Node的优点
优点:高并发特别好。高并发:同时大量的处理数据
学习node的目的
1、防止甩锅 明确数据交互的错误问题在谁
2、能够书写api 斜杠青年(有第二产业的青年)
3、了解前后端交互流程
4、全栈工程师
模块化开发
- 内置模块
- 第三方模块
- 自定义模块
- 创建一个模块(一个js文件一个模块)
- 导出一个模块(module.exports = name)
- 引入一个模块并且调用
let 变量名 = require(引入文件的路径)
操作文件以及文件夹
内置模块fs
文件夹的增删改查
- 增:
fs.mkdir('文件路径以及名字(./test)',回调函数(err)={ console.log(err) })
- 删:
fs.rmdir('文件路径名字',回调函数(err)=>{ console.log(err)})
- 改:
fs.rename('旧文件夹','新文件夹',回调函数)
- 查:
fs.readdir('文件夹路径',(err,data)=>{console.log(err,data)})
文件的增删改查
- 增(创建文件):
- 写入文件:
fs.writeFile('文件夹名字(name.js)','添加的内容(hello word)',回调函数(err)=>{ console.log(err), })
- 在原本件后添加:
fs.appendFile('(文件夹名字)name.js','添加的内容',回调函数(err)=>{console.log(err)})
- 写入文件:
- 查(读取文件):
fs.readFile('(文件夹名字)name.js',回调函数(err,msg)=>{console.log(err,msg.toString('utf8'))})
默认读取是二进制数据流buffer,所以进行转换。或者写成fs.readFile('name.txt','utf8',(err,msg)=>{console.log(err,msg)})
- 删:
fs.unlink('文件路径和名字',(err)=>{console.log(err)})
内置模块 url
- url: 统一资源定位符 url由协议、域名、端口号、path、hash构成。
url的转换(解析url)
- 将url字符串转为url对象:
url.parse(url字符串)
- 将url对象转为url字符串:
url.format(url对象)
内置模块 Query String
- 将query字符串转为对象:
let qs = require('querystring') ;
let string = 'user=67&page=65'
let obj = qs.parse(string);console.log(obj)
- 将query对象转为字符串:
qs.stringify(obj,'#',':')
第一个参数是要转化的query对象,第二个参数是健值对的以什么符号切分的,第三个参数是键和值之间切分的符号。第二、三参数默认是&和=切分。
第三方模块(俗称插件)
nodemailer(node发送邮件的插件)
- 1、先安装nodemailer插件
- 2、创建发送邮件的对象(配置邮件)
let transporter = nodemailer.createTransport({ host:'smtp.qq.com',//发送方的邮件类型,例如qq,网易,163等等;具体的通过依赖下的lib下的well-known下的server.json文件查找相关的配置 port:465,//邮箱类型的端口号 secure:true,//端口号为465则为true,其他的全为false auth:{ user:'236799127@qq.com',//发送方的邮箱密码 pass:'fdshfhsajkh'//smtp验证码 这个在邮箱设置的账户下,点击开启就会有smtp验证码 } })
- 3、 邮件的信息
let info = { from :'<2367991927@qq.com>',//从哪里发出 to : '451464730@qq.com',//接收方邮箱
subject : '标题' , text : '发送的内容' //也可以发送html, html:内容 }
- 4、执行函数
transporter,sendMail(info)
node.js中的Error对象
let err = new Error('发生错误')
throw err
//抛出错误,代码终止执行console.log(err),
//打印错误对象,代码继续执行
node.js中的简易爬虫
爬虫案例的原理
- 1、获取目标网站 通过http.get实现
- 2、分析网站内容 通过cheerio插件通过这个插件可以使用JQ里的各种选择器
- 3、获取有效信息(下载或者其他操作)
node中的express框架
express的基本使用
通过express框架书写api
登录接口的逻辑分析
1、接收数据(用户名和密码)
2、处理数据(判断用户名和密码是否正确)
3、返回数据(告诉用户是否登录成功)
服务器相关的概念
- 服务器:
- 本质上就是一台电脑
- 需要一个服务器软件开启服务器
- 服务器ip和端口号
- 局域网:服务器通过网线(无线连接);每一台电脑都会有一个ip
- 外网: