nodejs

Koa2

1、Http --- used for front and rear communication
2、nodejs启动Web server就是监听 http请求。注意监听的是端口,比如3000; 用 http://域名:3000 就能测试是否监听
3、index.js里面的 require 三个层级:1.系统自带的模块 http  2.npm 安装的,比如lodash;  3.自定义 比如 ./utils.js
	const http = require('http') //获取http模块
4、node index.js 就能运行脚本
5、npm init 一路回车---初始化npm 环境,生成package.json 这个文件
	npm i nodemon --save-dev
	nodemon 的作用是代码改完后能立马重启服务,在"test":,后面加"dev":"nodemon index.js"
	再启动项目不需用node index.js,使用 npm run dev
6、前端request(get post); 后端 respond
	res.end('字符串或者json') 返回信息给front end
	split('?')[0]  取?之前的部分
7、不写Ajax 的情况下,
	GET 请求,Direct browser access
	POST 请求,need tool---postman  .For quick test
	download postman app,double click 使用,不用创建acount,点加号,选个发送方式和website address就行了
8、url 问好 ? 后面的都是 querystring (也叫 url 参数)
	&分割, key=value 形式,可继续扩展
	动态网页:服务端拿到 querystring,根据它返回 diverse content
	analysis querystring: use many split
	skill: queryStr && queryStr.split.... 等于 if(queryStr){}
	easy way: querystring.parse(queryStr) 一步到位analysis querystring
9、url后面带 # 号的就是hash. hash不能让服务端获取,以实现动态网页
10、response 状态码200代表成功了
JSON.stringify --- json 转字符串  
JSON.parse ---- string 转 json
10、stream and body
	chunk is "stream"的每一段数据
	req.on('end',) 表示流完了
	postman 选择 Body raw Json

koa

在这里插入图片描述

开发借助工具和 framework
koa2 是 nodejs web server framework
koa2 封装了 结构化
frame关注整个流程,lib关注单个功能,lib可以共存,frame不可以
install

npm init (一路回车)
npm i koa --save (--save:将保存配置信息到pacjage.json)
1、ctx 就是 context 上下文
2、脚手架的作用就是不用从0搭建项目
	安装脚手架(-g表示全局安装,能直接用koa2)
	npm install -g koa-generator
	#创建koa2项目,直接定位到test4文件夹里面来
	koa2 test4
	cd test4
	npm install
	# start project
	npm run dev

install router middleware

npm install -S koa-router  # -S表示install 依赖dependencies(package.json)
npm install -S koa-body @koa/cors koa-json # body handle request 请求 , cors handle 跨域
npm install koa-combine-routers -S  # 能将router代码分离出来,使结构清晰
npm install koa-helmet -S # 装上安全头部信息 
npm install koa-static -S # 直接通过路径访问图片等---静态资源
npm install -D nodemon # -D开发模式,nodemon用来监视脚本变化,热更新
npx nodemon src/index.js # 修改 package.json "scripts":{"start":"nodemon src/index.js"} 以后直接
npm run start
npm install -D webpack webpack-cli # create webpack.config.js 作为入口文件
npm install -D clean-webpack-plugin webpack-node-externals @babel/core @babel/node @babel/preset-env babel-loader cross-env # 然后编写webpack.config.js 
# 安装完webpack 就可以用ES6语法编写了。 比如 import koa from 'koa'
# babel-node 工具提供了一个支持 ES6 的 REPL 交互式运行环境。在此环境中,我们可以做一些简单的代码调试。
router.prefix('/api') // 以后所有的请求地址前面都要加/api/ 
1、bin/www文件获取app.js里面的实例,并且监听3000端口
通过bin/www启动的文件(package.json里面提示的)
2、通过app.use() 使用middlewares 中间件,类似流水线上,可以插拔,易添加,删除
app.use()是所有网络都会走的中间件,而router规定了特定的执行;
每一个中间件都带 async(ctx,next)  ctx是request和respond的集合   next就是下一个中间件 await next() 执行下一步中间件
通过bodyparser+ app.use(json()) 轻松实现 request body 转换  
__dirname 就是app.js的当前 目录
static---是静态文件服务,就是在浏览器中直接输入比如图片文件路径,就能显示出那张图片
pug 是一种html简写文件 路由文件里使用
router.prefix('/users') //前缀
以后router.get('/')  / 就是 /users
3、所谓洋葱模型,就是如果从a中间件进,最后也是从a中间件出
# 有了它就不用app.use()一个个写了,一个数组就行
npm install koa-compose -S # 整合中间件工具 

mongodb 数据库

mongoose

1、web server可以连多个数据库,多个webserver 也看可以连接一个数据库
database 是一个完全 independent system. Installed separately on the operating system;
It has nothing to do with language 与语言无关
2、compass用来界面化 operate mongodb
3、进mongodb官网---Software---Community Server---Download---install---选 constom location 弄得简单些,
比如 C:\MongoDB---不要勾选 Install MongoDB Compass --- ignore --- Finish --- 进入 MongoDB\data 
建立db文件夹,进 log,建立 mongod.log
控制台--- MongoDB\bin> mongod.exe --dbpath C:\MongoDB\data\db 回车 

cookie

1、是字符串,随http send 到 server, server修改cookie 并返回给前端
cookie就是id,password等一些敏感信息,比如user=zhangsan
cookie对应域名 
查看在application里面得域名下能看到cookie
2、结构化就是string become object
比如:'a=100;b=200' -->{a:'100',b:'200'}
trim()就是将string 前面的 space delete
3、Login process
	前端登录,后端set cookie 给前端,以后前端干事就会带着cookie,server就能认得他了
4、session
	cookie 明文存放 dangerous
	solution:cookie存储暗号,session存储 用户信息,两人有 corresponding relationship

5、install session tool
npm i koa-generic-session --save
在 app.js 里 add const session = require(‘koa-generic-session’)
在下面找个地方加入这个中间件
1000是1000ms,上面过期时间就是一天
Login过程

1、login发送给 username and password, query database, if have,login successfully,set session
2、validate logon 验证登录
	router.get('/list',loginCheck,async()=>{})

Project

1、前后端做interface design
	Separate development
	intergrated test 联调
2、Prepare development environment
	npm i koa-generator -g
	koa2 xiaomujishi-server
	cd xiaomujishi-server && npm install 
	npm run dev # 运行看一下 localhost:3000
	npm i koa-generic-session --save
	npm i koa2-cors --save  # 跨域

在这里插入图片描述

withCredentials:true   //允许跨域传递 cookie (login) 因为前端端口8080  后端3000,这就是跨域

webpack调试

1、在webpack.config.js 里面加上debugger就是加上了断点
在webpack.config.js 同级目录下执行

npx node --inspect-brk ./node_modules/.bin/webpack --inline --progress

在chrome网址栏 input chrome://inspect 点击inspect进去

2、webpack分为开发和生产,都需要webpack.config.base.js

# 将 base.js和 dev.js/prod.js 合并
npm i webpack-merge -D
# 压缩js代码,用于将其打包
npm install terser-webpack-plugin --save-dev
# 打包命令,产生 dist目录说明成功了
npm run build
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值