博客项目 相关知识点

知识点

根据系统环境变量  判断当前系统所处环境

获取系统坏境变量  process.env   //返回值为对象

 

config第三方模块

使用步骤:

1.npm install config

2.项目跟目录下新建config文件夹

3.在config文件夹新建default.json、development.json

4.项目中通过require方法,导入模块

5.使用模块内部提供的get方法获得配置信息

 

作用:模块内部自动判断当前应用的运行环境,并读取对应的配置信息

 

开发环境 

问:在开发环境中,将客户端放到服务器端的请求信息打印到控制台上

答:

引入morgan 第三方模块

app.use(morgan('dev'))  //'dev'必传参数

生产环境
 

 

模板文件 外链资源要写 绝对路径 / 

 

模板文件中相同样式 抽离样式组成新模板.art     

引用模板 {{include './相对路径'}}

 

模板文件中相同骨架(head部分,外链引用js,css)   抽离  组成新模板

继承模板 {{extend ./相对路径}}  继承时也要调用坑,告诉不同的这方面放在哪里   {{block ' 坑名'}}不同的内容{{/block}} 

注意:本身页面也存在自身的css和js或主体,组成新模板的时候需要使用    {{block ' 坑名'}}{{/block}} 

 

数据分页  moogoose-sex-page

引入模块

方法  变量名(集合构造函数).page().size().display().exec()

page 指定当前页

size   指定每页显示的数据条数

display  指定客户端要显示的页码数量

exec      向数据库中发送查询请求

 

enctype 指定表单数据的编码类型

默认为   application/x-www-form-urlencoded

multipart/form-data 将表单数据编码为二进制类型

 

接收二进制数据

formidable 第三方模块   接收客户端传过来的数据

创建表单对象 new formidable.IncomingForm()

解析表单  

parse方法

参数

err 错误对象

fields 保存普通表单数据

files   对象类型 保存上传文件相关的数据

 

格式化时间   dateFormat第三方模块

用法:dateFormat(要格式的时间,'格式')

 

文件读取 FileReader

创建文件读取对象 new FireReader

获取用户选择的列表 this.files

读取文件 readAsDataURL 

multiple  允许用户一次性选择多个文件

 

密码加密问题

引用bcrypt模块 下载相关依赖


bcrypt.genSalt()  生成随机字符串 

返回结果为随机字符串 为异步API

默认值为10  数值越大 生成的随机字符串复杂度更高 数值越小,生成的随机字符串复杂度越小

 

bcrypt.hash(要进行机密的明文或原文,随机字符串)     

返回结果为加密后的密码  为异步API

对密码进行加密

 

bcrypt.coompare(明文密码,加密后的密码)

返回值为布尔值 true 对比成功 false 对比失败  为异步API

 

Cookie

Cookie的数据以域名的形式进行区分

Cookie的数据是有过期时间的,超过时间数据会被浏览器自动删除

Cookie的数据会随着请求自动发送到服务器端
 

Session

存储形式为对象 将客户端传送过来的数据封装成对象 并在Cookie中返回sessionid

下次客户端访问时携带sessionid进行判断

借助第三方模块实现session功能  express-session

使用方法  app.use(session({ secret: 'secret key' }))

 

res.redirect('要跳转的页面?携带的信息')   重定向   ?后面跟携带的信息

req.body  接收表单提交的参数

req.query 获取地址栏中的参数

JSON.Stringify(要转换的参数) 将对象数据类型转换为字符串类型

JSON.parse(要转换的参数) 将字符串类型转换为对象数据类型

 

模板中循环对象

{{each 循环的对象}}

 

@数据  将数据进行原文输出

 

规则验证 Joi模块

先指定数据类型

string()          只能是字符串类型

alphanum()   只能是字母字符串或数字字符串

min max

required()  必选

regex()  正则表达式 用于密码验证

email()   必须为电子邮件的格式

valid()     值的选择

Joi.validate({要验证的对象,验证规则})

 

代码优化

部分方法不想暴露在app.js下面,可以通过抽离的方法,定义模块,暴露方法  再引用

错误信息处理中间件  app.use((err,req,res,next))

 

查询用户数据的数据总条数

countDocument({查询条件})

登录功能实现

1.创建集合,初始化用户

1.1连接数据库

1.2.创建用户集合

1.3.初始化用户

2.为登陆表单设置请求地址,请求方式以及表单项name属性

处理post请求参数 借助第三方模块 body-parser  

调用 bodyparser.urlencoded({ extended: false })   //extended 必填项 一般参数为false

路由接收到post请求参数 进行判断是否为空 空返回提示信息 状态码为400
根据邮箱地址查询用户信息   查找到返回对应信息进行反馈

3.当用户点击登录按钮时,客户端验证用户是否填写了登陆表单

4.如果其中一项没有输入,阻止表单提交

5.服务器端接收请求参数,验证用户是否填写了登陆表单

6.如果其中一项没有输入,为客户端做出响应,阻止程序向下执行

7.根据邮箱地址查询用户信息

8.如果用户不存在,为客户端做出响应,阻止程序向下执行

9.如果用户存在,将用户名和密码进行比对

10.比对成功,用户登录成功

11.比对失败,用户登录失败

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值