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 数据库
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’)
在下面找个地方加入这个中间件
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