Vue组件间的参数传递与Vue的路由实现
Vue组件间的参数传递
1,父组件与子组件传值
父组件传给子组件:子组件通过props方法接受数据
子组件传给父组件:$emit方法传递参数
2,非父子组件间的数据传递,兄弟组件传值
enentBus,就是创建一个事件中心,相当于中转站,可以用它来传递事件和接收事件。项目比较小时,用这个比较合适。(虽然有不少人推荐VUEX,具体来说得看需求。技术只是手段,达到目的才是王道。)
Vue的路由实现:hash模式和history模式
Hash模式:在浏览器中符号“#”,#以及#后面的字符称之为hash,用window.location.hash读取;
特点:hash虽然在URL中,但不被包括在HTTP请求中;用来指导浏览器动作,对服务端安全无用,hash不会重新加载页面。
hash模式下,仅hash符号之前的内容会被包含在请求中,如http://www.xxx.com,因此对于后端来说:即使没有做到对路由的全覆盖,也不会返回404错误。
history模式:history采用HTML5的新特性;且提供了俩个新方法:pushState(),replaceState()可以对浏览器历史记录栈进行修改,以及popState事件的监听状态变更。
history模式下,前端URL必须和实际向后端发送请求的URL一致,如:htttp://www.xxx.com/items/id。后端如果减少对/items/id的路由处理,将返回404错误。Vue-Router官网里如此描述:“不过这种模式要玩好,需要后台配置支持...所以呢,你要在服务端增加一个覆盖所有情况的候选资源:如果URL匹配不到任何静态资源,则应该返回同一个index.html页面,这个页面就是你app依赖的页面。”