项目拆分前,区分数审和防火墙功能的流程如上图所示。
访问系统时,先加载入口文件 mainjs,然后加载登录页 loginvue,加载登录页的同时获取产品模式并保存到 sessionstorageplatformType 中,接着用户登录系统进入具体页面,该页面同时包含了数审和防火墙的功能,根据 sessionstorageplatformType 保存的值来判断,具体显示哪个功能。
目录结构设计
file
项目拆分前的目录结构如上图所示。
该目录结构是初始化一个 Vue 项目时的基本目录,根据目录结构,基本上看不出该项目包含了两个不同的产品,也不知道不同产品模式下会加载哪一部分文件,结构不清晰。
存在的问题
通过分析,可以发现当前的系统流程和目录结构是存在很多问题的,大概总结下:
加载登录页的时候才获取产品模式,如果登录页加载完成,而产品模式还未获取或者获取不到,那么登录页显示的产品信息有可能是错误的;
每次进入一个具体页面,如果同时包含了数审和防火墙的功能,都要重新判断一次,当前的功能是数审的还是防火墙的;
目录结构不清晰,不清楚哪些模块是公共模块,哪些是数审独有的模块,哪些是防火墙独有的模块;
可维护性和可扩展性差。数审的代码和防火墙的代码混在一个文件内,改代码的时候需要重头看一遍才知道哪块代码属于数审,哪块代码属于防火墙。如果想要添加一个功能,还得继续加逻辑判断,代码越来越臃肿;
业务逻辑混乱,与后端通信使用了同一个接口。
拆分后
流程设计
file
项目拆分后,区分数审和防火墙功能的流程如上图所示。
访问系统时,先加载入口文件 mainjs,该文件中写了路由拦截相关的逻辑,在路由拦截时,如果没有产品模式,则要先获取产品模式,否则会被拦截,进不去系统。获取产品模式后,根据当前产品模式,会注册对应的登录页、路由配置、接口请求等。当注册完毕后,每次访问具体的页面,都应该是独立的模块了。
目录结构设计
file file
项目拆分后的目录结构如上两个图所示。
该目录结构经过拆分,已经可以清晰地看到不同产品之间分离出来的文件了,从入口文件开始,经过路由拦截后,会加载指定的登录页,然后把对应产品需要的文件合并到公共文件中。比如:>
在mutation的state的自定义set change方法的时候 根据使用场景的不同 储存到Session Storage和Local Storage或者其他本地储存中 把对应state的初始化改成从本地储存中获取 另外本地储存 如果是存储JSON字符串 一定要做好相应的容错处理
一,cookie的使用
1,首先加载模块
npm i js-cookie -S
2,在使用cookie的页面上进行引入
import Cookies from 'js-cookie'
3,使用方法
创建一个在整个网站上有效的Cookie
Cookiesset('name', 'value');
创建一个从现在起7天后过期的cookie,在整个站点上有效:
Cookiesset('name', 'value', { expires: 7 });
创建一个过期的cookie,对当前页面的路径有效:
Cookiesset('name', 'value', { expires: 7, path: '' });
读取cookie:
Cookiesget('name'); // => 'value'
Cookiesget('nothing'); // => undefined
阅读所有可见的Cookie:
Cookiesget(); // => { name: 'value' }
删除cookie:
Cookiesremove('name');
删除对当前页面路径有效的cookie:
Cookiesset('name', 'value', { path: '' });
Cookiesremove('name'); // fail!
Cookiesremove('name', { path: '' }); // removed!
重要!删除cookie时,您必须传递用于设置cookie的完全相同的路径和域属性,除非您依赖于默认属性。
注意:删除未存在的cookie不会引发任何异常,也不会返回任何值
二,localStorage的使用
注:vue下使用localStorage和H5使用localStorage的方法是一致的,不需要引入插件
1,储存
//数据
localStoragesetItem('userName','HelloWeen');
2,获取
localStoragegetItem('userName')
3,删除
localStorageremoveItem('userName');
4,localStorage可以储存JSON对象,且没有时间限制的数据存储 ,除非主动删除。
//数组
var arr=[1,2,3];
localStoragesetItem("temp",arr); //会返回1,2,3
consolelog(typeof localStoragegetItem("temp"));//string
consolelog(localStoragegetItem("temp"));//1,2,3
5,localStoragesetItem() 不会自动将Json对象转成字符串形式
var user= {"userName": "hello","age": 2};
typeof localStoragegetItem("user");//也会返回String
localStoragesetItem("user", user);//但是返回[object Object],
6,用localStoragesetItem()正确存储JSON对象方法是:
存储前先用JSONstringify()方法将json对象转换成字符串形式
JSONstringify() 方法可以将任意的 JavaScript 值序列化成 JSON 字符串
1
2
3
1
2
3
4
5
1
1
1
2
1
2
3
1
1
1
2
1
1
1
1
1
获取的时候要将之前存储的JSON字符串使用JSONparse()先转成JSON对象再进行 *** 作
var user= {"userName": "hello","age": 2};
user= JSONstringify(user); //转化为JSON字符串 "{"userName":"hello","age":2}"
localStoragesetItem("user", user);//返回{"userName":"hello","age":2}
user=JSONparse(localStoragegetItem("user"));
三,sessionStorage的使用
定义和使用
localStorage 和 sessionStorage 属性允许在浏览器中存储 key/value 对的数据。
sessionStorage 用于临时保存同一窗口(或标签页)的数据,在关闭窗口或标签页之后将会删除这些数据。
提示: 如果你想在浏览器窗口关闭后还保留数据,可以使用 localStorage 属性, 改数据对象没有过期时间,今天、下周、明年都能用,除非你手动去删除。
1,方法
sessionStoragekey(int index) //返回当前 sessionStorage 对象的第index序号的key名称。若没有返回null。
1
1
2
3
4
sessionStoragegetItem(string key) //返回键名(key)对应的值(value)。若没有返回null。
sessionStoragesetItem(string key, string value) //该方法接受一个键名(key)和值(value)作为参数,将键值对添加到存储中;如果键名存在,则更新其对应的值。
sessionStorageremoveItem(string key) //将指定的键名(key)从 sessionStorage 对象中移除。
sessionStorageclear() //清除 sessionStorage 对象所有的项。
mianjs里怎么引入就怎么用
比如ajs里想用elementUI的组件就这样
import ElementUI from "element-ui";ElementUIMessage ({
title: '警告',
message: '网页还没下载完毕,请稍等一下再 *** 作',
type: 'warning'
});
以上就是关于vue将一个盒子分成两个全部的内容,包括:vue将一个盒子分成两个、vue 监听localStorage、sessionStorage变化、vue怎么监听sessionstorage的变化等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)