zoukankan      html  css  js  c++  java
  • chatroom-login/register笔记

    一、介绍

    1.页面文件结构

      组件放在component文件夹下面

      页面放在container文件夹下面

      页面入口处获取用户信息,决定跳转到哪个页面

    2.开发模式

      基于cookie的用户验证  express依赖cookie-parser cookie的管理浏览器会自动处理

    3.开发流程

    二、登陆注册页面实现

    1.config.js

    拦截请求-->Toast.loading-->拦截响应

    a.Toast轻提示 可以用来显示不会打断用户操作的内容,适合用于页面转场、数据交互的等场景中。

    规则:

      一次只显示一个Toast

      有Icon的Toast,字数4-6,没有Icon的Toast,不宜超过14

    基本用法

      import {Toast} from 'antd-mobile'

      Toast.loading('加载中',0);

    API

    b.axios  基于promise写法的http请求插件,支持客户端和node端

    特性:

      支持restful API
      支持拦截请求和响应
      自动转换JSON数据
      客户端支持保护安全免受XSRF攻击

    2.reducer.js

    a.combineReducers 合多个reducer

    import {combineReducers}  from 'redux';

    export default combineReducers({

      reducer1,

      reducer2,

      reducer3

    })

    3.index.js

    a.Provider

    用法:在最外层用Provider包裹

    <Provider store={store}>

    ...

    </Provider>

    这样所有的后代组件都可以获得store

    b.BroswerRouter react-router4的一个组件

    c.applyMiddlewares()  接受中间件做参数

    它是redux的原生方法,作用是将所有的中间件组成一个数组,依次执行。

    d.window.devToolsExtension?window.devToolsExtension():f=>f

    chrom的redux调试工具如果存在就启用

    e.compose(...functions) 从右到左来组合多个函数

    f.createStore(reducer,[initState,enhancer]);

    createStore()创建一个store来存放所有的state,一个应用只能有一个store,函数返回store对象

    reducer(state,action):接收当前state和action做参数,返回一个新的stat

    initState:初始state,如果不为空,需要和reducer中处理的state结构一致

    enhancer:中间件

    4.package.json

     a.babel-plugin-import  实现antd-design的按需加载

    b.transform-decorators-legacy 为了支持装饰器的写法

    c.proxy 前端调用后端 代理服务 前后端联调

    d.cookie-parser  app.use(cookieParser()), 这样就可以处理每一个请求的cookie。

    5.this.props.history.push('/register')

    一个路由组件可以跳转到另一个路由组件去

    6.const express=require('express');

    const app=express();

    app.use('/user',userRouter);//开启一个中间件 入口路径是user,子路径由userRouter决定

    7.axios.get('/user/info').then(res=>{...})//res是当前请求返回的所有值

    8.withRouter 获取路由信息

    import {withRouter} from 'react-router-dom'

    @withRouter

    三、注册请求发送

    1.return {msg,type:ERROR_MSG} === return {type:ERROR_MSG,msg:msg} 前者msg只能在前面

    2.action{type,payload} payload表示请求的数据

    3.connect() 连接React组件和redux store

    import {connect} from 'react-redux'

    @connect(

      state=>state.user,//需要的是state.user

      {register}

    )

    四、express注册功能实现

    1.cookie-parser 解析cookie

    2.body-parser bodyParser().json() 解析post过来的json数据 在req.body对象上

    五、密码加密

    1.md5密码加密解密在线网站

    2.utility md5第三方库

    3.加盐 在加密的时候,用一个复杂的自定义字符串(盐)+密码传入函数  最好包裹2层加密函数

    六、cookie保存登陆状态

    1.res.cookie('userid',doc._id)写cookie

    const {userid}=req.cookies读cookie

    2.User.findOne()第一个参数是查询条件,第二个参数是显示条件,第三个是回调函数

  • 相关阅读:
    vscode常用插件列表
    使用docker构建supervisor全步骤
    docker删除虚悬镜像(临时镜像文件)
    消息队列的对比
    ECharts使用:this.dom.getContext is not a function
    curl命令行请求
    工作工具清单
    《SQL优化入门》讲座总结
    初始化git库并配置自动部署
    php代码进行跨域请求处理
  • 原文地址:https://www.cnblogs.com/cdx0/p/chatroom1.html
Copyright © 2011-2022 走看看