前端框架设计想发 #
项目服务器时间 #
我最开始接触到的服务器时间的想法是,获取到后,不断+1s。
但是其实没有那么麻烦,获取到后,记录一下本地时间与服务器时间的差值,然后保存到全局状态中,获取的时候用本地时间加上这个差值就可以了。
项目全局状态刷新 #
项目有一个需求是在导航栏上加一个刷新器,用户可以选择没多少时间刷新页面的数据。
我接触到的时候,发现好多组件自己在维护setInterval
,然后项目中不同页面的组件就有很多重复的代码,写的也比较多。
我的想法就是可不可以放到全局状态中,在状态管理工具中维护setInterval
,需要刷新的页面只需要监听全局状态中的一个值就行了。
然后就是切换页面的时候,需要重置刷新时间间隔到默认值,现在项目都是写在每个组件中,虽然一个路由对应一个组件,但是有时候一个菜单下面有多个路由,会导致切换的时候,刷新时间间隔就被重置了,我的想法是,可不可以放到点击导航栏的回调函数中。
项目权限管理 #
我之前写过一篇动态权限管理的文章,背景是已经定了v-has
这个自定义指令,就是在初始化的时候判断有没有权限,如果就保留元素,如果没有就移除元素。如果现在后端通过websocket
推送了权限变化的消息,我是无法更新的,然后为了尽可能少的修改项目中的代码,我就建了一个Map,在bind时把元素与权限信息关联。然后权限变化,遍历Map,实现类似于v-if的效果。
我在想这样做之后,如果项目中有很多v-has
甚至在列表中循环渲染了好多遍,那么我的Map应该也是比较庞大的吧。
如果不是非要用自定义指令,全局的权限只是一个资源列表放在Vuex,各组件如果需要权限判断就引入这个状态,用v-if 资源列表 includes 资源key 也是一种方法,而且更加容易理解。