Vue-Router实现页面正在加载特效方法示例
前言vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,适合用于构建单页面应用。vue的单页面应用是基于路由和组件的,路由用于设定访问路径,并将路径和组件映射起来。传统的页面应用,是用一些超链接来实现页面切换和跳转的。在vue-router单页面应用中,则是路径之间的切换,也就是组件的切换。 如果你在使用 Vue.js 和 Vue-Router 开发单页面应用。因为每个页面都是一个 Vue 组件,你需要从服务器端请求数据,然后再让 Vue 引擎来渲染到页面上。 例如,这里有个用户个人资料的页面。user.vue 文件如下:
在动画过渡期间向服务器请求数据,如下:
export default{
data(){
return{
user: {}
}
},route: {
data: function (transition) {
this.getUserDetails(transition);
}
},methods: {
getUserDetails(transition)
{
this.$http.get('/users/' + this.$route.params.userName)
.then(function (response) {
this.user = response.data;
transition.next();
});
}
}
}
这样,我们可以通过访问变量 $loadingRouteData。就可以实现隐藏所有的页面元素,显示某个正在加载的元素,比如某个 logo 等。
比如,正在加载的样式代码如下: @keyframes placeHolderShimmer{
0%{ background-position: -468px 0 } 100%{ background-position: 468px 0 } } .animated-background { .background-masker { / Every thing below this is just positioning / .background-masker.header-top,.background-masker.header-bottom,.background-masker.subheader-bottom { .background-masker.header-left,.background-masker.subheader-left,.background-masker.header-right,.background-masker.subheader-right { .background-masker.header-bottom { .background-masker.subheader-left,.background-masker.subheader-right { .background-masker.header-right,.background-masker.subheader-right { .background-masker.subheader-right { .background-masker.subheader-bottom { .background-masker.content-top,.background-masker.content-second-line,.background-masker.content-third-line,.background-masker.content-second-end,.background-masker.content-third-end,.background-masker.content-first-end { .background-masker.content-top { .background-masker.content-first-end,.background-masker.content-third-end{ .background-masker.content-second-line { .background-masker.content-second-end { .background-masker.content-third-line { .background-masker.content-third-end { 这样,你就有了 Vue-Router 的正在加载时候的效果了。你可以把以上代码写进到一个单独的组件内,在你用的地方引用它就行。 最后这仅是个关于 Vue-Router 加载的组件的简单教程,实际上可以在许多地方来进行改进,
如果你是一位对 Vue.js 感兴趣的前端工程师,可去这个网上浏览下,了解下国外对 Vue 开发者的要求。 好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |