Skip to content

Vue 2:错误处理、跨域、内置组件与插件

一、Vue 侧错误处理体系

层级

  1. 全局Vue.config.errorHandler —— 捕获组件树内_render、生命周期、事件处理等同步错误(文档亦说明对 Promise/setTimeout 内的错覆盖不全)。
  2. 组件errorCaptured —— 沿子树向上冒泡,返回 false 可阻止继续上传。
  3. 路由router.onError —— 异步 chunk 加载失败等。
  4. 原生window.onerrorunhandledrejection(Promise 未捕获)等。

异步代码

  • Promise:.catch
  • async/await:try/catch 包住 await
  • 定时器:在回调内部 try/catch

接口错误

axios 响应拦截器统一处理业务码 / HTTP 状态。


二、跨域与解决方案

同源三要素

协议、主机、端口一致。

开发环境

webpack devServer.proxyVite server.proxy,把 /api 转发到后端,浏览器只看到同源。

生产环境

  • Nginx 反向代理:同源路径转发到内部服务。
  • 后端 CORSAccess-Control-Allow-* 头。

核心:开发用代理「骗过浏览器同源」;上线用网关或 CORS 合法放开


三、内置组件

文档列举:transitiontransition-groupcomponentkeep-aliveSuspense(Vue 3)、Teleport(Vue 3)、插槽等。

transition 类名(Vue 2 / 3 通用思路)

进入/离开六个阶段类名(Vue 3 推荐 *-from / *-to 命名),配合 CSS transition

动态组件 <component :is="..." />

在多个组件间切换;默认切换会销毁/重建,配合 keep-alive 可缓存。

Teleport / Suspense

Vue 3 内置能力;Vue 2 项目需插件或自实现门户挂载。


四、组件 vs 插件

组件插件
目的复用 UI 与局部逻辑扩展应用级能力
注册局部/全局 componentVue.use / app.use
例子表单、列表卡片Router、Vuex、UI 库、i18n

插件典型 install(app, options):注入全局属性、指令、组件、provide 等(文档示例为 Vue 3 createApp 写法,Vue 2 则为 Vue.use)。


五、小结

  • 错误:分层捕获 + 异步单独处理 + 上报管道。
  • 跨域:开发代理、生产网关/CORS。
  • 内置组件:动画、动态组件、缓存;Vue 3 另有传送门、Suspense。
  • 插件:横切全局能力与组件复用分层。

至此 Vue 2 合并篇告一段落;Vue 3 见同级目录 vue3