我明白了,Vue3设计与实现-框架设计的核心要素读后感

简介: 第一章我已经觉得有所收获了,写的很精彩,接下来就是第二章了,框架设计的核心要素,应该是框架的大体轮廓的介绍吧。构建产物、模块格式、警告信息、定位问题、开发和生产的区别、热更新的支持、树摇(去掉框架中没用到的功能代码)。

前言

第一章我已经觉得有所收获了,写的很精彩,接下来就是第二章了,框架设计的核心要素,应该是框架的大体轮廓的介绍吧。

构建产物、模块格式、警告信息、定位问题、开发和生产的区别、热更新的支持、树摇(去掉框架中没用到的功能代码)。

很不错,得好好看看,开始。

用户的开发体验提升

开发的体验提升,出了开发快之外,有时还会因为不小心、没注意从而导致使用了不对的变量或者函数,这个时候控制台的报错或者告警信息就显得尤为重要了。

最明显的就是你把vue的应用挂载到一个不存在的dom上,这时候就会告诉你挂载失败,该dom不存在。

还有就是输出vue的对象,在开发的时候,vue3是有自定义输出对象的formatter的,但是需要你在开发人员工具的Console面板中勾选Enable custom formatters这个复选框,这样你就不会看到很复杂的对象结构了,比如ref对象。

框架代码体积的控制

vue3的源码中有__DEV__这个常量,可以用来区分环境,如果为开发环境,那就正常执行里面的操作,如果为非开发环境,那么就会在打包的时候直接移除掉。

vue都是用rollup打包的,这个常量也是通过它的插件来定义的。

vue3在输出资源时会针对不同环境来输出资源文件,开发时输出vue.global.js,生产时输出vue.global.prod.js,生产的资源那文件中不会有__DEV__以及用__DEV__来作为判断依据的那部分代码。

这样一来,开发时的告警信息不会在生产环境中出现,从而减少了很多的开发环境时的框架代码,于是就在不影响开发体验的同时还控制了框架代码的体积。

框架要做到良好的tree-shanking

树摇只在es模块中起作用,因为es模块是静态的结构,才可以将没有使用到的代码给剔除掉。

最早rollup这个工具中出现的,现在webpack也支持。

通过常量__DEV__来去除告警信息的代码,通过树摇来去除框架中未使用到的代码。

当遇到静态分析后很难去除的js代码,可以通过一个机制来去除,很难去除的代码是因为可能会有副作用,只要你写上/*#__PURE__*/,就等于告诉rollup,这段代码没有副作用,可以去除它。

一般来说只有模块内的顶级调用才会触发函数的副作用,如果这个函数A的调用是包裹在另一个函数B中,那么只要另一个函数B不调用,树摇就会去除函数B了。如果函数A是直接在模块内直接调用,那么树摇才会觉得它可能会产生副作用,于是就不会移除函数A。

框架输出的产物

vue3 输出的产物格式有以下几种:

IIFE:立即调用的函数表达式,用于直接在浏览器中使用,比如 (function (exports) {...})(obj),自调用函数。
ESM:es模块,用于script=module时的直接在浏览器使用。
CommonJS:Nodejs的写法,用于服务器端渲染时的使用。

IIFE 可以直接用script引入,从而可以在页面中直接使用vue。
ESM 可以在浏览器中直接使用import的方式来使用vue。
CommonJS:通过require来使用vue。

特性开关

vue3 兼容了 vue2,但是如果你的项目中用不到vue2的组件选项的api功能特性,可以通过将预定义常量__VUE_OPTIONS_API__设置为false来关闭这样的特性。
这样一来,代码中只会包含vue3的组合式api的功能特性,而不会有vue2的组件选项式api的功能特性了,就会减少很多代码体积了。

错误处理

错误的处理可以单个单个的处理,比如你在调用这个函数的时候给它外层加上try catch。这个会导致你写很多遍 try catch。

错误的处理可以统一的处理,比如封装一层,在这一层里面去try catch,你只需要把函数传递进去就行。这个会导致错误处理catch的行为与封装的这层耦合到一起了。

错误的处理统一处理,可以再升级以下,留一个定制的接口,通过这个接口可以设置如何处理try catch后的错误。这个将错误处理catch的行为与封装的这层解耦了。

错误的处理全局处理,可以将所有的错误都进行收集,通过留一个定制的接口,只要发生错误,都可以通过这个接口收集到所有try catch后的错误信息。这个用于全局处理异常,更为方便。

感觉其实很多重复的操作都可以经过这一层的封装噢。比如axios请求的catch,也可以这样做,将多个请求的catch统一处理,也支持你自己定制。

良好的TS类型支持

TS 是微软开源的基于JS的超集编程语言,能为JS提供类型支持。
TS可以做到代码即文档、编辑器自动提示、能避免低级BUG、增强代码的可维护性。所以它能作为评价一个框架是否完善的重要指标。
并不是使用TS就代表TS类型支持友好,如果你老使用any,可能它的那些好处也几乎没用了。有时你想给你的项目弄到完善的TS支持,可能会因此在一开始的时候产生数倍的工作量,它需要花很大的力气,不过它会在之后的开发与维护过程中非常的方便,因为前期完善了这些TS支持,后面就可以享受到它的好处带来的体验与效率。

总结

开发体验对于一个框架来说很重要。框架的体积、输出的资源格式、特性的开关、错误的处理、类型支持,都是衡量一个框架是否完善的指标。

vue在这方面表现很不错,特别是vue3更加优秀了。大大的降低了开发时的心智压力。

目录
相关文章
|
4月前
|
缓存 JavaScript PHP
斩获开发者口碑!SnowAdmin:基于 Vue3 的高颜值后台管理系统,3 步极速上手!
SnowAdmin 是一款基于 Vue3/TypeScript/Arco Design 的开源后台管理框架,以“清新优雅、开箱即用”为核心设计理念。提供角色权限精细化管理、多主题与暗黑模式切换、动态路由与页面缓存等功能,支持代码规范自动化校验及丰富组件库。通过模块化设计与前沿技术栈(Vite5/Pinia),显著提升开发效率,适合团队协作与长期维护。项目地址:[GitHub](https://github.com/WANG-Fan0912/SnowAdmin)。
697 5
|
1月前
|
缓存 前端开发 大数据
虚拟列表在Vue3中的具体应用场景有哪些?
虚拟列表在 Vue3 中通过仅渲染可视区域内容,显著提升大数据列表性能,适用于 ERP 表格、聊天界面、社交媒体、阅读器、日历及树形结构等场景,结合 `vue-virtual-scroller` 等工具可实现高效滚动与交互体验。
208 1
|
1月前
|
缓存 JavaScript UED
除了循环引用,Vue3还有哪些常见的性能优化技巧?
除了循环引用,Vue3还有哪些常见的性能优化技巧?
131 0
|
2月前
|
JavaScript
vue3循环引用自已实现
当渲染大量数据列表时,使用虚拟列表只渲染可视区域的内容,显著减少 DOM 节点数量。
83 0
|
3月前
|
JavaScript API 开发者
Vue框架中常见指令的应用概述。
通过以上的详细解析,你应该已经初窥Vue.js的指令的威力了。它们是Vue声明式编程模型的核心之一,无论是构建简单的静态网站还是复杂的单页面应用,你都会经常用到。记住,尽管Vue提供了大量预定义的指令,你还可以创建自定义指令以满足特定的需求。为你的Vue应用程序加上这些功能增强器,让编码变得更轻松、更愉快吧!
65 1
|
4月前
|
JavaScript API 容器
Vue 3 中的 nextTick 使用详解与实战案例
Vue 3 中的 nextTick 使用详解与实战案例 在 Vue 3 的日常开发中,我们经常需要在数据变化后等待 DOM 更新完成再执行某些操作。此时,nextTick 就成了一个不可或缺的工具。本文将介绍 nextTick 的基本用法,并通过三个实战案例,展示它在表单验证、弹窗动画、自动聚焦等场景中的实际应用。
380 17
|
4月前
|
人工智能 自然语言处理 JavaScript
用 CodeBuddy 搭建Vue框架 像呼吸一样简单
本文介绍如何借助 CodeBuddy 快速创建 Vue 项目。CodeBuddy 是一款支持自然语言编程的工具,能根据用户需求自动生成代码,降低开发门槛。文章详细说明了通过 CodeBuddy 创建 Vue 项目的步骤,包括解决项目创建失败的问题、自动补全代码功能以及启动开发服务器的方法。无论开发者经验如何,CodeBuddy 都能显著提升效率,让开发更专注创意实现。
|
5月前
|
JavaScript 前端开发 算法
Vue 3 和 Vue 2 的区别及优点
Vue 3 和 Vue 2 的区别及优点
|
5月前
|
存储 JavaScript 前端开发
基于 ant-design-vue 和 Vue 3 封装的功能强大的表格组件
VTable 是一个基于 ant-design-vue 和 Vue 3 的多功能表格组件,支持列自定义、排序、本地化存储、行选择等功能。它继承了 Ant-Design-Vue Table 的所有特性并加以扩展,提供开箱即用的高性能体验。示例包括基础表格、可选择表格和自定义列渲染等。
372 6
|
4月前
|
JavaScript 前端开发 API
Vue 2 与 Vue 3 的区别:深度对比与迁移指南
Vue.js 是一个用于构建用户界面的渐进式 JavaScript 框架,在过去的几年里,Vue 2 一直是前端开发中的重要工具。而 Vue 3 作为其升级版本,带来了许多显著的改进和新特性。在本文中,我们将深入比较 Vue 2 和 Vue 3 的主要区别,帮助开发者更好地理解这两个版本之间的变化,并提供迁移建议。 1. Vue 3 的新特性概述 Vue 3 引入了许多新特性,使得开发体验更加流畅、灵活。以下是 Vue 3 的一些关键改进: 1.1 Composition API Composition API 是 Vue 3 的核心新特性之一。它改变了 Vue 组件的代码结构,使得逻辑组
1448 0