vue将一个盒子分成两个

vue将一个盒子分成两个,第1张

项目拆分前,区分数审和防火墙功能的流程如上图所示。

访问系统时,先加载入口文件 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的变化等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9280863.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存