node学习
文章平均质量分 67
飞羽逐星
既然厌倦于追寻,那便一觅其中;自从一股逆风袭来,我已学会抵挡八面来风。
展开
-
node学习—jwt服务器开发
jwt服务器开发一、jwt服务器开发一、jwt服务器开发//initconst express = require("express");const app = express();const cors = require("cors");// 映射public目录中的静态资源const path = require("path");const staticRoot = path.resolve(__dirname, "../public");app.use(express.static原创 2021-01-06 18:09:49 · 232 阅读 · 1 评论 -
node学习—JWT原理
JWT一、JWT原理1、概述2、令牌的组成1.header2.payload3.signature3、令牌的验证4、总结一、JWT原理随着前后端分离的发展,以及数据中心的建立,越来越多的公司会创建一个中心服务器,服务于各种产品线。而这些产品线上的产品,它们可能有着各种终端设备,包括但不仅限于浏览器、桌面应用、移动端应用、平板应用、甚至智能家居实际上,不同的产品线通常有自己的服务器,产品内部的数据一般和自己的服务器交互。但中心服务器仍然有必要存在,因为同一家公司的产品总是会存在共享的数据,比如用原创 2021-01-06 11:42:59 · 493 阅读 · 0 评论 -
node学习—session
session一、session1、认识session2、使用session3、验证登录一、session1、认识session2、使用session使用npm i express-session安装插件const express = require('express');const app = express(); //创建一个express应用const cors = require("cors");const session = require("express-session");原创 2021-01-06 10:05:11 · 611 阅读 · 0 评论 -
node学习—浏览器CORS跨域
CORS跨域一、跨域1、前置知识2、JSONP缺点二、CORS原理1、概述1.简单请求2.简单请求的交互规范一、跨域1、前置知识浏览器的同源策略跨域问题JSONP原理cookie原理2、JSONP缺点JSONP并不是一个好的跨域解决方案,它至少有着下面两个严重问题:会打乱服务器的消息格式:JSONP要求服务器响应一段JS代码,但在非跨域的情况下,服务器又需要响应一个正常的JSON格式只能完成GET请求:JSONP的原理会要求浏览器端生成一个script元素,而script元素发原创 2021-01-05 16:21:53 · 849 阅读 · 0 评论 -
node学习—登录和验证
登录和验证一、登录和验证1、cookie一、登录和验证1、cookie前面我们了解了通过给浏览器设置cookie等让浏览器辨别我们。这里我们使用各一个插件,可以更好地运用cookie,npm i -d cookie-parser。//api/adminconst express = require("express");const router = express.Router();const adminServ = require("../../services/adminService"原创 2021-01-04 17:58:22 · 463 阅读 · 0 评论 -
node学习—cookie
登录和认证一、cookie1、cookie常识2、cooki组成3、设置cookie4、服务器端设置cookie5、客户端设置cookie二、应用一、cookie1、cookie常识假设服务器有一个接口,通过请求这个接口,可以添加一个管理员但是,不是任何人都有权力做这种操作的那么服务器如何知道请求接口的人是有权力的呢?答案是:只有登录过的管理员才能做这种操作可问题是,客户端和服务器的传输使用的是http协议,http协议是无状态的,什么叫无状态,就是服务器不知道这一次请求的人,跟之前登录请求成原创 2021-01-03 12:13:54 · 2624 阅读 · 0 评论 -
node学习—express路由
express路由一、express路由1、使用环境2、Router路由3、接口实现一、express路由1、使用环境const express = require('express');const app = express(); //创建一个express应用const path = require("path");const staticRoot = path.resolve(__dirname, "../public");app.use(express.static(staticRo原创 2021-01-02 18:07:25 · 476 阅读 · 0 评论 -
node学习—express中间件
express中间件一、express中间件1、next( )2、处理错误中间件二、常用中间件1、express.static()2、express.json()3、express.json()一、express中间件1、next( )这里的(req, res, next) => {}就是一个中间件,可将前一个next()交给后续执行const express = require('express');const app = express(); //创建一个express应用,app实际原创 2021-01-02 14:21:30 · 257 阅读 · 0 评论 -
node学习—nodemon插件使用
nodemon插件使用一、nodemon插件使用1、安装2、简单实用3、package配置一、nodemon插件使用1、安装打开终端,使用npm i -D nodemon命令即可。2、简单实用输入npx nodemon index命令,这样开发中如果对语句进行了修改了不用再每次重新node index了:3、package配置但是有些时候更新一些文件时,没有必要去监听的,在nodemon.js中设置即可...原创 2020-12-30 16:37:46 · 1099 阅读 · 0 评论 -
node学习—express基本使用
express基本使用一、express基本使用1、导入express2、拿到请求头一、express基本使用1、导入express第一种方法require('./init');const express = require('express');const http = require('http');const app = express(); //创建一个express应用// app实际上是一个函数,用于处理请求的函数const server = http.createServer原创 2020-12-30 11:50:06 · 928 阅读 · 0 评论 -
node学习—validate数据库验证
数据库验证一、数据库验证一、数据库验证//service/studentServiceconst Student = require("../models/Student");const { Op } = require("sequelize");const Class = require("../models/Class");const validate = require("validate.js");var dayjs = require('dayjs');var utc = req原创 2020-12-08 11:37:23 · 1168 阅读 · 1 评论 -
node学习—MD5加密
MD5加密一、MD5加密1、MD5简介2、MD5使用一、MD5加密到此为止Sequelize的学习就基本结束了,但是我们的数据库还有一些问题需要优化,那就是安全性。目前的管理员用户密码都是明文的,一旦我们的数据库泄露,那么所有的账户都会赤裸裸展示在人的面前。于是这里我们学习MD5单项加密技术,在用户密码有一定复杂度的情况下,就算拿到了我们的数据库,理论上也非常难破解出密码。1、MD5简介2、MD5使用第一步肯定就是npm install md5安装MD5了第二步就是导入到我们需要的文件/原创 2020-12-06 17:14:05 · 1927 阅读 · 0 评论 -
node学习—数据查询
数据查询一、数据查询1、单个查询1.账户密码3.查id一、数据查询前面所学习的模拟数据和数据抓取都是往数据库里存放数据,那么当我们真正使用时又该怎样去拿取数据呢。1、单个查询1.账户密码//services/adminServiceexports.login = async function (loginId, loginPwd){ const result = await Admin.findOne({ where: { loginId, loginPwd,原创 2020-12-06 14:59:59 · 691 阅读 · 0 评论 -
node学习—数据抓取
数据抓取一、数据抓取1.抓取豆瓣网页2、网页中寻找需求3、利用地址进入详情页拿到数据4、最后一、数据抓取部分应用中我们可能需要一些存在网页中的一些数据,此时我们不可能照着网页去一个一个敲打出来。那么数据抓取就显得尤为重要了。我们这里通过讲解抓取 豆瓣读书 的数据,来了解什么是数据抓取。抓取准备工具库:axios、cheerio//简单介绍cheerio的使用,类似jQueryconst cheerio = require('cheerio');const $ = cheerio.load('&原创 2020-12-01 11:21:23 · 490 阅读 · 0 评论 -
node学习—Mock模拟数据
Mock模拟数据一、Mock模拟数据例:添加班级数据库数据例:添加学生数据库数据注意:关联表的添加一、Mock模拟数据mockjs在前面我们已经了解过了,其主要作用就是模拟数据。如果我们自行开发项目时,需要配合一些数据,此时如果手动添加的话,太繁琐。于是都会使用mockjs。这里只要阅读下mockjs官方文档即可了解mockjs的使用方法。例:添加班级数据库数据首先需要npm install mockjs并引入const Mock = require("mockjs");const resul原创 2020-11-30 00:20:10 · 667 阅读 · 0 评论 -
node学习—Sequelize模型的增删改
Sequelize模型的增删改一、Sequelize模型的增删改1、增加2、删除3、修改一、Sequelize模型的增删改我们先了解一下三层架构,其中ORM就是操作数据库通信的,我们目前学习的Sequelize就是。注:本文接上一章Sequelize模型定义与同步1、增加require("./models/sync");const Admin = require("./models/admin");const ins = Admin.build({ loginId: 'jimo',原创 2020-11-29 15:39:11 · 638 阅读 · 0 评论 -
node学习—Sequelize模型定义与同步
Sequelize模型定义与同步一、入门1.准备2.连接数据库3.关闭连接一、入门1.准备Sequelize 的使用可以通过 npm (或 yarn).npm install --save sequelize你还必须手动为所选数据库安装驱动程序:# 选择以下之一:$ npm install --save pg pg-hstore # Postgres$ npm install --save mysql2$ npm install --save mariadb$ npm install原创 2020-11-08 23:26:01 · 1741 阅读 · 1 评论 -
node学习—mysql数据驱动
mysql数据驱动一、mysql数据驱动1.什么是数据驱动Promise重点一、mysql数据驱动1.什么是数据驱动驱动程序是连接内存和其他存储介质的桥梁mysql驱动程序是连接内存数据和mysql数据的桥梁mysql2有更好的效率使用npm install --save mysql2安装sql2接着导入模块,连接数据库// get the clientconst mysql = require('mysql2');// 创建一个数据库连接const connection = my原创 2020-10-16 16:36:31 · 420 阅读 · 0 评论 -
node学习—数据库函数和分组
数据库函数和分组一、数据库函数和分组1.函数1.内置函数二、视图一、数据库函数和分组1.函数1.内置函数select AVG(salary) from employee;--薪水平均值select count(id) from employee;--查询员工数量select count(id) as 员工数量,avg(salary) as 平均薪资,sum(salary) as 总薪资,min(salary) as 最小薪资from employee;--拼接se原创 2020-10-15 20:48:41 · 363 阅读 · 0 评论 -
node学习—数据库表的操作
数据库表的操作一、数据库表的操作1.增2.改3.删4.单表查询(重点)对数据进行处理范围inisbetweenlikeand、ororder bylimit5.联表查询po解Navicat15中文版以上在下载资源,如有需要,自行下载。一、数据库表的操作1.增单个增加-- 只要没有;号结束语句,就能换行 --insert into `stu`(`name`,age)values('Tom',20);多个增加insert into `stu`(`name`,age)values('c原创 2020-10-15 16:40:07 · 468 阅读 · 0 评论 -
node学习—接触数据库(SQL)
express基本使用一、数据库简介1.数据库能干什么2.数据库类型1.关系型数据库2.非关系型数据库3.面向对象型数据库3.术语二、 MySql安装1.MySql特点2.安装3.使用三、数据库设计1.SQL2.管理库3.管理表4.主键、外键5.表关系6.三大设计范式一、数据库简介1.数据库能干什么2.数据库类型1.关系型数据库2.非关系型数据库3.面向对象型数据库略3.术语二、 MySql安装1.MySql特点2.安装3.使用navicat安装,详情已放入我的下载原创 2020-10-14 21:59:06 · 245 阅读 · 0 评论 -
node学习—[拓展]EventEmitter
EventEmitter一、EventEmitter1.注册事件2.触发事件3.移除事件4.事件传参5.自己封装request一、EventEmitternode事件管理的通用机制,内部维护多个事件队列。我们前面的学习就已经接触到了。socket.on("close",()=>{ console.log("结束了!");});这里的on就是EventEmitter。1.注册事件const { EventEmitter } = require("events");// 创建一原创 2020-10-14 10:41:21 · 243 阅读 · 0 评论 -
node学习—深入剖析node生命周期(事件循环)
深入剖析node生命周期(事件循环)一、node生命周期1.timers2.poll3.check要想学好本篇博文,需要先了解js的事件循环: js事件循环原理.一、node生命周期提一嘴:node底层使用C语言libuv库操控操作系统由图,从运行模块入口main.js后,event loop会检测整个环境是否还有事件未结束,如文件读写等,定时器等。当所有事件全部执行完毕时,才会结束运行。其中每一个阶段都会维护一个事件队列,这里主讲其中三个。1.timerstimers:存放计时器的回调函数原创 2020-10-13 17:27:43 · 2122 阅读 · 6 评论 -
node学习—深入剖析https(协议)模块(看这一篇就够了!)
深入剖析https模块一、深入剖析https模块1.一、深入剖析https模块1.原创 2020-10-13 10:53:25 · 850 阅读 · 0 评论 -
node学习—深入剖析http模块
深入剖析http模块一、深入剖析http模块1.连接服务器2.搭建自己的服务器一、深入剖析http模块1.连接服务器const http = require("http");const request = http.request( "http://duyi.ke.qq.com/", { method: "GET" }, resp => { console.log("服务器响应的状态码",resp.statusCode);原创 2020-10-12 10:54:07 · 286 阅读 · 0 评论 -
node学习—深入剖析net模块
net模块一、net模块1.http请求1.普通模式2.长连接模式2.net模块作用3.创建客户端4.创建服务器一、net模块1.http请求1.普通模式2.长连接模式2.net模块作用net是一个通信模块,利用它可以实现1. 进程间的通信。2. 网络通信TCP/IP3.创建客户端net.createConnection(options[, connectListener])const net = require("net");const socket = net.createCon原创 2020-10-11 11:32:29 · 1230 阅读 · 1 评论 -
node学习—深入剖析文件流
文件流一、文件流1.什么是文件流?1.概念2.流是有方向的2.为什么要流1.其他介质和内存的数据规模不一致2.其他介质和内存的数据处理能力不一致3.文件流1.文件流的创建1.可读流2.可写流2.利用文件流复制文件3.rs.pipe(ws)一、文件流1.什么是文件流?1.概念流是指数据的流动,数据从一个地方缓缓的流动到另一个地方。2.流是有方向的可读流: Readable数据从源头流向内存可写流: Writable数据从内存流向源头双工流:Duplex数据既可从源头流向内存,又可从内原创 2020-10-08 16:51:36 · 444 阅读 · 0 评论 -
node学习—深入剖析文件I/O
文件I/O一、文件I/O1.I/O:Input/Output1.对外部设备的输入输出2.外部设备3.一、文件I/O1.I/O:Input/Output1.对外部设备的输入输出2.外部设备3.原创 2020-10-07 11:42:45 · 517 阅读 · 0 评论 -
node学习—基本内置模块
基本内置模块一、OS1.EOL2.arch3.cpus4.freeman5.homedir6.hostname7.tmpdir二、path1.path.basename2.path.sep3.path.delimiter4.path.dirname(path)5.path.extname(path)6.path.join([...paths])7.path.normalize(path)8.path.relative(from, to)9.path.resolve([...paths])三、url四、uti原创 2020-10-04 17:02:51 · 653 阅读 · 0 评论 -
node学习—node中的ES模块化
ES模块化一、node中ES模块化一、node中ES模块化// a.mjsexport default 5;export const a = 1;// index.mjsimport * as obj from './a.mjs'console.log(obj);注意:// a.mjsexport default 5;export const a = 1;module.exports = 5;// index.mjsimport * as obj from './a.原创 2020-10-04 10:05:23 · 754 阅读 · 0 评论 -
node学习—node模块化细节
node模块化细节一、node模块化细节1.模块的查找1.绝对路径2.相对路径./或../3.模块路径4.关于后缀名5.关于文件名2.module对象3.require一、node模块化细节1.模块的查找1.绝对路径//a.jsconsole.log('a.js');//index.jsrequire("F:\\****\\node学习\\1-2模块化细节\\a.js");2.相对路径./或…///index.jsrequire("./a.js");3.模块路径//ind原创 2020-10-03 23:46:36 · 172 阅读 · 0 评论 -
node学习—全局对象
node概述一、node概述1.global2.setTimeout3.setInterval4.setImmediate5.console6.__dirname7.__filename8.Buffer9.process一、node概述1.global这里为什么全局属性里还有一个global呢?原理如下:const obj = { console:{}, serTimeout: function(){}, setInterval: function(){}}obj.global = o原创 2020-10-03 09:35:13 · 175 阅读 · 0 评论 -
node学习—接触node
接触node一、接触node1.浏览器中的js2.node中的js3.分层结构对比图4.node能干什么1.开发桌面应用2.开发服务器应用程序5.前置内容一、接触node1.浏览器中的js2.node中的js3.分层结构对比图4.node能干什么1.开发桌面应用2.开发服务器应用程序结构1结构25.前置内容如果想要学好node,最好先了解以下模块。...原创 2020-10-02 22:08:33 · 161 阅读 · 0 评论