vue-router

Fully dynamic vue-router

痞子三分冷 提交于 2019-11-28 09:27:42
问题 We are building an enormous website based on Vue and Nuxt with over 25 different page types that cannot be matched with standard /:id or /overview/:slug logic that comes out of the box with Vue Router. As slug-matching isn't an option, we are thinking about the following solution: User visits page "/this-is-a-topic-page" Server calls API that returns the pageType topicPage topicPage relates to the nuxt page WpTopicPage We set WpTopicPage as our component within our wildcard instance of Vue

转载 配置vue项目

女生的网名这么多〃 提交于 2019-11-28 07:50:27
Vue作为前端三大框架之一截至到目前在 github 上以收获44,873颗星,足以说明其以悄然成为主流。16年10月Vue发布了2.x版本,经过了一段时间的摸索和看官方的教程和api,才了解到2.0版本在1.0版本的基础上做了好多调整,废弃了好多api。。。废话不多说了,把我踩过的坑,在这里跟大家说说,希望对初学者有所帮助。ps:高手请绕道。 说明:此文章参考了网上一些前人的技术分享,自己拿过来总结一下。此文章是基于webpack构建的vue项目,并实现简单的单页面应用。其中利用到的相关技术会简单加以说明 一、那么我们就从最简单的环境搭建开始: 安装node.js,从 node.js官网 下载并安装node,安装过程很简单,一路“下一步”就可以了(傻瓜式安装)。安装完成之后,打开命令行工具(win+r,然后输入cmd),输入 node -v,如下图,如果出现相应的版本号,则说明安装成功。 这里需要说明下,因为在官网下载安装node.js后,就已经自带npm(包管理工具)了,另需要注意的是npm的版本最好是3.x.x以上,以免对后续产生影响。 安装淘宝镜像,打开命令行工具,把这个(npm install -g cnpm --registry= https://registry.npm.taobao.org )复制(这里要手动复制就是用鼠标右键那个,具体为啥不多解释)

Vue路由

故事扮演 提交于 2019-11-28 07:09:52
Vue 路由 SPA 是什么 单页 Web 应用( single page application,SPA ),就是只有一个 Web 页面的应用, 是加载单个 HTML 页面,并在用户与应用程序交互时动态更新该页面的 Web 应用程序 单页面应用程序: 只有第一次会加载页面, 以后的每次请求, 仅仅是获取必要的数据.然后, 由页面中js解析获取的数据, 展示在页面中传统多页面应用程序: 对于传统的多页面应用程序来说, 每次请求服务器返回的都是一个完整的页面 优势 减少了请求体积,加快页面响应速度,降低了对服务器的压力 更好的用户体验,让用户在 web app 感受 native app 的流畅 SPA 实现思路和技术点 1 ajax 2 锚点的使用( window.location.hash # ) 3 hashchange 事件 window.addEventListener ( "hashchange",function () {} ) 4 监听锚点值变化的事件,根据不同的锚点值,请求相应的数据 5 原本用作页面内部进行跳转,定位并展示相应的内容 路由思路 1 、确保引入 Vue.vue-router 的 js 依赖 2 、首先需要定义组件(就是展示不同的页面效果) 3 、需要将不同的组件放入一个容器中(路由集合) 4 、将路由集合组装成路由器 5 、将路由挂载到 Vue

Vue路由

我是研究僧i 提交于 2019-11-28 07:06:29
Vue路由 1. SPA是什么 单页Web应用(single page application,SPA),就是只有一个Web页面的应用, 是加载单个HTML页面,并在用户与应用程序交互时动态更新该页面的Web应用程序 单页面应用程序: 只有第一次会加载页面, 以后的每次请求, 仅仅是获取必要的数据.然后, 由页面中js解析获取的数据, 展示在页面中 传统多页面应用程序: 对于传统的多页面应用程序来说, 每次请求服务器返回的都是一个完整的页面 优势 减少了请求体积,加快页面响应速度,降低了对服务器的压力 更好的用户体验,让用户在web app感受native app的流畅 2. SPA实现思路和技术点 1 ajax 2 锚点的使用(window.location.hash #) 3 hashchange 事件 window.addEventListener("hashchange",function () {}) 4 监听锚点值变化的事件,根据不同的锚点值,请求相应的数据 5 原本用作页面内部进行跳转,定位并展示相应的内容 路由思路 1、确保引入Vue.vue-router的js依赖 2、首先需要定义组件(就是展示不同的页面效果) 3、需要将不同的组件放入一个容器中(路由集合) 4、将路由集合组装成路由器 5、将路由挂载到Vue实例中 6、定义锚点 7、跳转 3.

Vue之路由

大憨熊 提交于 2019-11-28 06:33:49
1. SPA是什么 单页Web应用(single page application,SPA),就是只有一个Web页面的应用, 是加载单个HTML页面,并在用户与应用程序交互时动态更新该页面的Web应用程序 单页面应用程序: 只有第一次会加载页面, 以后的每次请求, 仅仅是获取必要的数据.然后, 由页面中js解析获取的数据, 展示在页面中 传统多页面应用程序: 对于传统的多页面应用程序来说, 每次请求服务器返回的都是一个完整的页面 优势 减少了请求体积,加快页面响应速度,降低了对服务器的压力 更好的用户体验,让用户在web app感受native app的流畅 2. 通过vue的路由可实现多视图的单页Web应用(基于html的SPA) 2.1.0 引入依赖库 <script src="js/vue.js"></script> <script src="js/vue-router.min.js"></script> 2.2 创建自定义组件,例如:Home和Abort组件 const Home = Vue.extend({}); <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script type="text/javascript" src="js/vue.js"></script>

vue路由

天涯浪子 提交于 2019-11-28 06:11:20
1. SPA是什么 单页Web应用(single page application,SPA),就是只有一个Web页面的应用, 是加载单个HTML页面,并在用户与应用程序交互时动态更新该页面的Web应用程序 单页面应用程序: 只有第一次会加载页面, 以后的每次请求, 仅仅是获取必要的数据.然后, 由页面中js解析获取的数据, 展示在页面中 传统多页面应用程序: 对于传统的多页面应用程序来说, 每次请求服务器返回的都是一个完整的页面 优势 减少了请求体积,加快页面响应速度,降低了对服务器的压力 更好的用户体验,让用户在web app感受native app的流畅 2. SPA实现思路和技术点 1 ajax 2 锚点的使用(window.location.hash #) 3 hashchange 事件 window.addEventListener("hashchange",function () {}) 4 监听锚点值变化的事件,根据不同的锚点值,请求相应的数据 5 原本用作页面内部进行跳转,定位并展示相应的内容 路由思路 1、确保引入Vue.vue-router的js依赖 2、首先需要定义组件(就是展示不同的页面效果) 3、需要将不同的组件放入一个容器中(路由集合) 4、将路由集合组装成路由器 5、将路由挂载到Vue实例中 6、定义锚点 7、跳转 <!DOCTYPE html>

Accessing Vuex state when defining Vue-Router routes

白昼怎懂夜的黑 提交于 2019-11-28 05:24:33
I have the following Vuex store (main.js): import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) //init store const store = new Vuex.Store({ state: { globalError: '', user: { authenticated: false } }, mutations: { setGlobalError (state, error) { state.globalError = error } } }) //init app const app = new Vue({ router: Router, store, template: '<app></app>', components: { App } }).$mount('#app') I also have the following routes defined for Vue-Router (routes.js): import Vue from 'vue' import VueRouter from 'vue-router' Vue.use(VueRouter) //define routes const routes = [ { path: '/home',

Vue-router 路由守卫

僤鯓⒐⒋嵵緔 提交于 2019-11-28 04:14:56
Vue-router 路由守卫 const router = new VueRouter({ ... }) 前置路由守卫 router.beforeEach((to,from,next) => { // to 下一跳路由路径地址 // from 上次路由地址对象 // next 回调钩子函数,next会解析出当前路径是否合法,是否需要路径判断重定向报错等 可以给next传参 // 执行的效果依赖传递的next 参数,如果全部钩子执行完毕,路由状态转为confirmed // next 可接受参数形式:false 终端路由跳转,'/'(新的路径),{ path: '/',replace: true, to: '', name: ''} // router.push 中的选项,或者传递报错Error,在router.onError 回调中捕获错误信息 // 确保调用 next 方法 ,保证 路由路径跳转 resolve // fullPath: "/im-manage" hash: "" matched: [{…}] meta: {} name: "im-manage" params: {} path: "/im-manage" query: {} // to from 对象的全部属性,两者一致! 可以以此参数的值判断 next 传参 从而改变路由展示的状态 }) 全局路由守卫

vue面试常被问到的问题整理

断了今生、忘了曾经 提交于 2019-11-28 04:04:10
1、Vue的双向数据绑定原理是什么? 答 : vue是采用数据劫持,并且使用发布-订阅者的开发模式。原理是观察者observer通过 Object.defineProperty() 来劫持到各个属性的 getter setter ,在数据变动的时候,会被observer观察到,会通过Dep通知数据的订阅者watcher,之后进行相应的视图上面的变化 具体实现步骤,感兴趣的可以看看 第一步:需要observe的数据对象进行递归遍历,包括子属性对象的属性,都加上 setter和getter 这样的话,给这个对象的某个值赋值,就会触发setter,那么就能监听到了数据变化 第二步:compile解析模板指令,将模板中的变量替换成数据,然后初始化渲染页面视图,并将每个指令对应的节点绑定更新函数,添加监听数据的订阅者,一旦数据有变动,收到通知,更新视图 第三步:Watcher订阅者是Observer和Compile之间通信的桥梁,主要做的事情是: 1、在自身实例化时往属性订阅器(dep)里面添加自己 2、自身必须有一个update()方法 3、待属性变动dep.notice()通知时,能调用自身的update()方法,并触发Compile中绑定的回调,则功成身退。 第四步:MVVM作为数据绑定的入口,整合Observer、Compile和Watcher三者

vue面试题

青春壹個敷衍的年華 提交于 2019-11-28 04:02:20
1、v-if(虚拟dom元素)和v-show有什么区别? 1.手段: v-if是动态的向DOM树内添加或者删除DOM元素; v-show是通过设置DOM元素的display样式属性控制显隐; 2.编译过程: v-if切换有一个局部编译/卸载的过程,切换过程中合适地销毁和重建内部的事件监听和子组件; v-show只是简单的基于css切换 3.编译条件 v-if是惰性的,如果初始条件为假,则什么也不做;只有在条件第一次变为真时才开始局部编译(编译被缓存?编译被缓存后,然后再切换的时候进行局部卸载); v-show是在任何条件下(首次条件是否为真)都被编译,然后被缓存,而且DOM元素保留; 4.性能消耗 v-if有更高的切换消耗; v-show有更高的初始渲染消耗; 5.使用场景 v-if适合运营条件不大可能改变; v-show适合频繁切换; 2、vue-router使用步骤 <div class="container"> <router-link to="/user?name=张三&age=22">用户中心</router-link> <router-view></router-view> </div> 步骤 1.定义不同的路由切换时需要显示的内容 var User=Vue.component("User",{ template:"<div>{{$route.query.name}}<