【整理】Vue开发中遇到的问题

1,158 阅读2分钟

1.Vue-CLI3.x设置反向代理

目的: 解决跨域问题
原理: 伪造“同源”的http请求,然后将此“同源”请求发送至反向代理服务器,由反向代理服务器去请求真正的URL,这样就绕过同源策略,解决了直接请求真正的URL而导致的跨域问题
步骤:

  • 设置Vue.config.js文件中的proxyTable
module.exports = {
	devServer: {
		proxyTable: {
			'/api': 'http://m.maoyan.com',
			changeOrigin: true
		}
	}
}
  • 发起axios请求
axios.get('/api/infoList').then(res => {
	console.log(res.data)
})

2.组件名的定义和使用

问题: 开发项目时,我创建了一个名为MyForm.vue的单文件组件,并在App.vue中注册该组件。然而当我使用<myform></myform>标签时,组件却并未生效。查阅官方文档后终于发现问题所在。

过程: 根据官方文档,定义组件名的方式分两种:短横线分隔命名(kehab-case)和首字母大写命名(PascalCase)。

如果使用短横线分隔命名定义组件,引用时必须使用短横线分隔形式,例:

// 注册一个名为my-component的组件
Vue.component('my-component-name', {})
// 引入my-component组件
<my-component></my-component>

如果使用首字母大写命名定义组件,则引用时可以使用两种命名方法,例:

// 注册一个名为MyComponent的组件
Vue.component('MyComponentName', {})
// 引入MyComponent组件的两种方式:
<my-component></my-component>	// 第一种
<MyComponent></MyComponent>	// 第二种

【注意】直接在DOM中(即非template/render模式下)使用组件时,只能使用短横线分隔命名使用组件。

结果: 我将<myform></myform>标签改为<my-form></my-form>,组件使用问题到此解决。

3.$router和$route的区别

  • $router: VueRouter的实例对象,包含了所有的路由,包含了许多关键的对象和属性。
    常用方法:this.\$router.push()用于路由跳转

  • $route: 局部的路由对象,每一个路由都会有一个$route对象,可以获取该路由的name,path,params,query等属性。
    常用方法: this.\$route.params用于获取路由的动态片段 this.\$route.query用于获取路由的查询字符串部分