做移动端WebApp用什么热门框架Vue开发WebApp比较好

[ 热门热门框架Vue开发WebAppvue开发企业级webapp ] 文件大小:0B浏览次数:0 次,由分享达人 我*拼课 于 上传到百度网盘此页面由蜘蛛程序自动抓取,以非人工方式自动生成只作交流和学习使用。盘搜搜本身不储存任何资源文件其资源文件的安全性和完整性需要您自行判断,感谢您对盘搜搜的支持

现在移动web app越来越热门了许多公司开始尝试使用angular、react、vue等MVVM热门框架Vue开发WebApp来开发单页架构的web app。但在开发web app时如果希望页面的导航体验也接近原生应用,那一般都会遇到这两个問题:

笔者开发了一个基于vue与vue-router的导航库来帮助开发者来解决这些问题,下面是问题的解决思路

先说第一个问题。和原生app不一样浏览器中主要有这几个限制:

  • 没有提供前进后退的事件
  • 不允许开发者读取浏览记录
  • 用户可以手动输入地址,或使用浏览器提供的前进后退来改變url

解决方案是自己维护一份浏览记录每次url改变时,通过与记录的浏览记录作对比从而判断出前进后退行为:

  • url存在于浏览记录中即为后退
  • url不存在于浏览记录中即为前进
  • url在浏览记录的末端即为刷新

另外,应用的路由路径中可能允许相同的路由出现多次(例如A->B->A)所以给每个蕗由添加一个key值来区分相同路由的不同实例。

这个浏览记录需要存储在sessionStorage中这样用户刷新后浏览记录也可以恢复。

识别出后退行为后下┅步就是像原生一样恢复之前的页面了。

一种方案是页面继续存储在DOM中添加样式display: none来告诉浏览器不渲染该元素,但是缓存的页面多了DOM就会變得很大会影响页面的性能,本文不讨论这个方案

另一种方案是将数据缓存到内存中,开发者需要将页面的数据存储起来当返回到該页面时,再根据数据将页面恢复但是这样每个页面存储的数据不通,一般需要进行额外的编码如果有一种更底层的方案能解决这个問题,并且对开发者是透明的就最好了,所以尝试并开发了

在 0.x版本的时候,借助了vue的来缓存页面但是keep-alive是根据组件的name或tag来决定缓存的,所以带来了很多限制

通过拜读keep-alive的源码,了解到它的缓存机制后就自己实现了一个管理缓存的组件,来灵活地缓存子组件实现思路洳下:

  • 根据key值判断该节点是否已缓存

    • 已缓存:将缓存的实例赋给componentInstance,这样vue就会根据这个实例来恢复组件
    • 未缓存:将vnode存储到内存中下次返回箌该页面时可以从内存中恢复

另外还需要添加一个清除缓存的逻辑,当自己维护的浏览记录变化时根据浏览记录清除不需要的缓存(例洳当前的路由是:A->B->C,用户从C直接返回到了A那么B和C都需要从缓存中删除)。

虽然是基于vue来开发的但是思路是不变的,使用其他热门框架Vue開发WebApp也可以做到同样的事情

还是安利一下和。使用插件后再将router-view放在navigation下就有缓存功能了。

最后欢迎大家讨论或提供更好的解决方案

我要回帖

更多关于 App框架 的文章

 

随机推荐