Appearance
Vue
Vue
通信方式
MVC
View
负责页面显示逻辑
Model
负责存储业务数据,以及相应数据操作
Controller
是 View
和 Modal
的纽带
MVVM
ViewModel
通过双向绑定,将 View
和 Model
的同步更新给自动化了
渐进式
视图刷新
修改数组或对象后,视图不更新的问题
解决方法:
Vue.set()
jsVue.set(target, key, val)
$forcecUpdated()
强制更新视图
异步更新
vue 的视图,dom 更新是异步的
$nextTick(callback)
js
let methods = {
fn1() {
this.list.push('new obj')
fn()
// 此时如果获取 dom 元素,结果则为更新前的结果
},
fn2() {
this.list.push('new obj')
this.list.push('new obj')
this.list.push('new obj')
this.$nextTick(() => {
fn()
// 此时如果获取 dom 元素,结果才是更新后的结果
// 虽然数据多次更新,但 nextTick 只会触发一次回调
})
}
}
keep-alive
内置组件,组件缓存,避免重新渲染
钩子函数:activated
、deactivated
SSR
Server-Side Rendering
服务端渲染
优点:
seo
优化
首屏渲染优化
其他:
Prerender SPA Plugin
预渲染
跨域
CORS
HTTP
Access-Control-Allow-Origin
后端实现,前端有浏览器自动完成
Proxy
开发环境
本地代理
js
// vue.config.js
module.exports = {
devServer: {
port: 8080,
proxy: {
'/api': {
target: process.env.VUE_APP_SERVER_URL,
changeOrigin: true,
pathRewrite: {
'^/api': '/'
}
}
}
}
}
生产环境
通过配置 nginx
实现代理
JSONP
只能 get
axios
封装 axios
全局设置:请求头,超时时间
请求拦截器:携带 token
响应拦截器:处理错误
Router
Vuex
概览
一种状态管理模式
集中式存储管理应用的所有组件的状态
属性 | 概括 | 描述 |
---|---|---|
state | 存储状态(data) | 单一状态树,唯一数据源,所以每个应用仅有一个 store 实例 |
getter | 计算属性(computed) | |
mutation | 方法(methods) | 修改状态 state 的唯一途径,同步操作 |
action | 调用 mutation | 实现异步操作,最终目的还是通过 mutation 修改状态 state |
module | 模块化 | 单一状态数不免过于庞大,拆分是为了更好的维护 |