IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> Vue:中小型项目前端架构 -> 正文阅读

[JavaScript知识库]Vue:中小型项目前端架构

一、代码环境

  • 项目总体上,主要使用 vue2 + typeScript + scss 实现

  • 用到的库:vue-router 3.2 + axios + vuex 3.4 + vant 2.12

  • 由于vue2ts支持不好,所以使用了 vue-property-decorator 提高TS的使用体验

二、关于网络请求

1、名词解释

  • token:用户登录成功,后台生成的唯一id,用于鉴定用户的权限
  • secret_key:参与传输数据的签名
  • refresh_token:用于刷新token,重置token的过期时间

2、设计思路

  1. 用户登录后,后端生成tokensecret_keyrefresh_token,并设置tokenrefresh_token过期时间,refresh_token过期时间会比token长;
  2. token即将过期时,可以使用refresh_token换取新的tokenrefresh_token,并重置token过期时间;
    在这里插入图片描述

3、请求拦截器

  1. 请求头携带上tokenuuid、渠道、包名、版本号;有版本号方便做兼容
  2. 需要签名的接口,请求头携带签名;签名算法:MD5

4、响应拦截器

请求成功的情况下,通过判断后端返回的状态码做出不同操作。

  1. token过期:删除本地token等用户数据,跳转登录页面;
  2. token即将过期:前端请求接口重置token过期时间,此时promise仍处于pending状态,再重发一次用户的请求,获取到数据后返回给用户,并结束promisepending状态;

三、关于路由封装

路由模块由一个路由规则文件和多个路由文件组成,路由文件以功能模块划分

import {test1 } from '@/router/test1';
import {test2} from '@/router/test2';

const router = new VueRouter({
  mode: 'history',
  base: process.env.BASE_URL,
  routes: [ ...test1 ,  ...test2 ]
})

1、路由守卫

根据不同的环境执行不同的路由规则

router.beforeEach(async (to:any, from:any, next) => {
	//小程序环境是异步获取,所以要加用到 await 
  	const isMiniprogram = await _getMiniprogramEnv()
  	if(isMiniprogram) {
    	miniRputer(to, from, next)
  	}else if(store.state.isApp){
    	appRputer(to, from, next)
  	}else{
    	h5Rputer(to, from, next)
  	}
}

2、H5端路由规则

获取token确认用户是否登录;获取路由配置,判断用户前往的页面是否需要登录;根据两个状态决定进去下一页还是跳转登录

3、APP内嵌页路由规则

获取路由配置,判断下一个页面是否为APP原生页面,如果是则调用方法通知APP跳转原生页面;

四、关于APP交互

1、基础交互

  • APP与H5交互主要依赖于window对象;

  • 安卓在window定义一个js方法xxx,H5通过window.xxx()去调用。为了防止变量污染,建议再套一层对象,如window.xxxxx.xxx()

  • ios则是在window.webkit.messageHandlers上定义js方法;ios需要调用window.webkit?.messageHandlers[this.fnName].postMessage(param)传递数据。注意,ios的postMessage方法只接收一个参数

2、安全

考虑到H5的代码有泄露风险,攻击者可能伪造交互代码,通过APP发送给其他用户,其他用户进入伪造的页面后,攻击者可以获取到该用户的token等数据。

解决方案:APP内设置域名白名单,非白名单中的域名不返回敏感数据

五、关于支付

支付方式:微信浏览器内公众号支付、外部浏览器微信支付、支付宝支付

微信浏览器内公众号支付:

  1. 调用微信私有接口WeixinJSBridgegetBrandWCPayRequest方法,并传入所需参数
  2. 通过回调函数的返回值,判断支付是否成功

外部浏览器微信支付、支付宝支付:

  1. 点击付款,请求后端接口
  2. 后端返回支付链接(微信网页的链接)
  3. 前端跳转该链接,弹出微信支付的密码验证
  4. 支付完成
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-05-24 18:03:56  更:2022-05-24 18:06:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 19:53:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码