前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Vue框架设计的核心要素

Vue框架设计的核心要素

作者头像
虎妞先生
发布2022-09-19 14:11:09
2840
发布2022-09-19 14:11:09
举报
文章被收录于专栏:前端开疆扩土之路

theme: juejin

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第2天,点击查看活动详情

前言

今天是学习理解《Vue.js设计与实现》的第二篇,主要讲vue在框架设计,各个方面做得有多好,然而仅仅是使用的话,其实是体会不到的,最好能对比其他框架的设计就能体会更加明显了!

详细情况可以查看专栏学习理解《Vue.js设计与实现》

提升用户的开发体验

这里的用户就是指的框架使用者,也就是各个前端开发们

vue 源码中有大量的warn()函数,提示开发者,错误警告信息

控制框架代码体积

Vue3 使用的方式是,使用 rollup 的插件配置来预定义 __DEV__ 变量。当 Vue.js 在输出资源的时候,会输出两个版本,一个用于开发,一个用于生产环境。 warn() 函数在存在开发环境,生成环境不会打包这些代码

框架要做好良好的Tree-Shaking

简单来说,tree-shaking就是消除那些永远不会被执行的代码

消除无用依赖之前,需要对js代码做静态分析,所以我们在源码中,很多js文件,,加上注释

/*#_PURE*/

表明此文件不会产生副作用,可以移除它

框架应该输出怎样的构建产物

比如Vue 既能通过script标签引用,也能通过npm 安装,还能在node中通过require方式引入

所以它的代码一定遵守 匿名函数自执行,引入就能自执行,也满足ESM 和CommobJS的规范。

错误处理

全局封装错误处理函数

全局提供了 registerErrrorHandler 函数,用户可以使用它注册错误处理程序,然后callWithErrorHanding捕获错误之后,把错误传递给用户注册的错误处理程序。

用户既可以选择忽略错误,也可以调用上报程序将错误上报给监控系统

代码语言:javascript
复制
//util.js
let handleError = null
export default {
  foo(fn){
    callWithErrorHanding(fn)
  },
  //用户可以调用这个函数注册统一的错误处理函数
  registerErrrorHandler(fn){
    handleError = fn
  }
}

function callWithErrorHanding(fn){
  try {
    fn && fn()
  }catch(e){
    // 将捕获到的错误传递给用户的错误处理程序
    handleError(e)
  }
}

// 用户调用
import utils from 'utils.js'

utils.registerErrrorHandler((e)=>{
    console.log(e)
})
utils.foo(()=>{})
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-07-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • theme: juejin
  • 前言
    • 提升用户的开发体验
      • 控制框架代码体积
        • 框架要做好良好的Tree-Shaking
          • 框架应该输出怎样的构建产物
            • 错误处理
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档