这是我参与8月更文挑战的第15天,活动详情查看:8月更文挑战
vue 中scoped可以解决样式全局污染,选择器复杂的的问题,给 css 加了一个域的概念。向下面这样,scoped中的样式就只会在当前页面生效。
/* 编译前 */
.example {
color: red;
}
/* 编译后 */
.example[_v-f3f3eg9] {
color: red;
}
使用 scoped 后,父组件的样式就渗透到子组件了。但是子组件的根节点会同时受其父组件的 scoped CSS 和子组件的 scoped CSS 的影响。
vue-element-admin 的样式在 @/styles,对后端来说,一堆css还是很痛苦的,于是先不细看了,之后需要改哪些地方,再改动好了。
然后又是之前学到过的修改element原有的样式,通过父级的命名空间来解决。
如果子组件使用了scoped 但是父组件想修改子组件的样式,可以使用深度选择器.a >>> .b
如果使用了sass,可以用/deep/ 代替 >>>
例子:如果想覆盖某页面的el-button的样式,可以,
.xxx-container >>> .el-button{
color: red;
}
然后学习和服务端交互
在vue-element-admin中,所有的请求处理放在@/api中
使用封装好的request.js发送请求,简单看一下request方法,先创建了一个axios实例,
const service = axios.create({
然后创建一个请求拦截器,来为请求头添加token(如果cookie中有token的话)
service.interceptors.request.use(
config => {
然后创建一个response拦截器,处理response,在这里可以抛出异常,或者提示用户没有登录,无权限,进行跳转。如果请求成功,则直接返回response
这就是项目中封装好的request.js看起来挺好用的,之后会使用它。
看官方的写法是在@/api/xxx.js中写好请求方法,在view中import,这种方法也挺好的,目前我野路子前端,请求方法都放在了view里,有时候会很乱,又学习到了,明天就用上。
由于项目中可能请求多个后端,即baseurl
# .env.development
VUE_APP_BASE_API = '/dev-api' #注入本地 api 的根路径
VUE_APP_BASE_API2 = '/dev-api2' #注入本地 api2 的根路径
// create an axios instance
const service = axios.create({
baseURL: process.env.BASE_API, // api 的 base_url
timeout: 5000 // request timeout
})
const service2 = axios.create({
baseURL: process.env.BASE_API2, // api2 的 base_url
timeout: 5000 // request timeout
})
这样就可以import不同的service,来请求不同的baseurl了
也可以在请求的时候,通过参数直接覆盖baseurl
export function fetchList(query) {
return request({
url: '/article/list',
method: 'get',
params: query,
baseURL: 'xxxx' // 直接通过覆盖的方式
})
}
至此,与服务端交互搞定了,也学到了新的用法,还是有收获的。 明日继续学习