这本vue3编译原理开源电子书,初中级前端竟然都能看懂

前言

众所周知vue提供了很多黑魔法,比如单文件组件(SFC)、指令、宏函数、css scoped等。这些都是vue提供的开箱即用的功能,大家平时用这些黑魔法的时候有没有疑惑过一些疑问呢。

  • 我们每天写的vue代码一般都是写在*.vue文件中,但是浏览器却只认识html、css、js等文件类型,明显是不认识*.vue文件的,我们写的*.vue文件是如何在浏览器中运行的呢?

  • vue提供了很多指令,比如大家常用的v-model语法糖指令,那你知道这个所谓的语法糖指令到底是什么东西吗?

  • 文档上说了宏函数不需要import导入,那运行的时候函数都没地方定义不就报错了吗?

  • 还有css scoped是如何实现样式隔离的呢?

说到这里不得不推荐一本开源电子书:vue3编译原理揭秘。上面这些问题的答案全部都在这本电子书中,更加难能可贵的是这本书通熟易懂到初中级前端都能看懂。这本书的核心思想是通过debug的方式带你搞清楚vue3中的编译黑魔法。

电子书地址: https://vue-compiler.iamouyang.cn/

book

收费吗?

首先回答这个大家最关注的问题,这本vue3编译原理揭秘开源电子书收费吗?

既然都开源了,当然是 免费的,只求你的一个star。GitHub地址: https://github.com/iamouyang21/vue3-compiler 。

并且还有一个配套的vue源码群,群也是不收费的。
wx

看完这本书我能学到什么

vue因为学习曲线平缓,有其他框架使用经验的同学,基本花上半天时间,看一下文档就可以直接上手。

之所以这么好上手是因为vue提供了很多黑魔法,比如单文件组件(SFC)、指令、宏函数、css scoped等。我们只需要按照官方文档的要求来写就可以轻松上手一个vue项目。

也正是因为vue内部封装了太多API,导致很多同学的技术水平一直停留在只会使用API上,也就是常说的“知其然而不知其所以然”。有时遇见一些特别复杂的需求时,以当前的技术水平,想要去实现这些需求就非常困难了。

这本书可以打破你当前的困境:技术水平一直停留在只会使用API上。看完这本书可以让你对vue编译的认知有质的提升,并且由于本书非常详细。详细到debug源码的每一个步骤都写出来了,你完全可以按照本书的步骤自己去debug读源码。所以这本书不光是教你vue编译原理的知识,更多的是教会你如何自己去通过debug的方式读懂源码。

这就完了?

不,看完本书你还可以在面试的时候去装X。

如果你是候选人,当其他候选人还在和面试官聊烂大街的vue响应式原理时,你上来就和其他人不一样,直接聊看着很神秘的vue编译原理,这无疑在面试中可以加不少分的。

如果你是面试官,有时会遇见一些精通vue的候选者。这些候选者有的是“真精通”,有的却是看了一些常见的vue源码文章的“假精通”。这时你就可以用vue编译原理的问题试探出候选者的真实水平。

50k

这本书讲了哪些东西?

本书分为4大章节:

  • 第一章节是教你如何查看源码、以及一个vue文件如何编译成js文件的全流程。

    start

  • 第二章节是带你搞清楚编译时是如何处理template模块的内容,以及最终如何生成render函数。

    template

  • 第三章节是带你搞清楚编译时是如何处理script模块的内容,以及一些常用的宏函数是如何处理的。

    script

  • 第四章节是带你搞清楚编译时是如何处理style模块的内容,以及如何实现css scoped

    style

最后

vue3编译原理揭秘这本电子书完全免费,并且还有一个配套的vue源码群,群也是不收费的。只求你的一个star

GitHub地址: https://github.com/iamouyang21/vue3-compiler

电子书地址: https://vue-compiler.iamouyang.cn/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3280429.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

JavaSE面向对象进阶

static 介绍 static表示静态,是Java中的一个修饰符可以修饰成员方法、成员变量 被static修饰的成员变量,叫做静态变量被static修饰的成员方法,叫做静态方法 静态变量 特点:被该类所有对象共享 调用方式: 类名调用&am…

聚芯前行|美格智能亮相2024 ChinaJoy骁龙主题馆,展现数字娱乐的无限可能

7月26日,2024中国国际数码互动娱乐展览会(ChinaJoy)在上海新国际博览中心正式拉开帷幕。美格智能携手高通公司亮相骁龙主题馆,以5G-A毫米波MiFi解决方案及高算力AI模组,共同为广大玩家和粉丝打造了一个前沿技术赋能、充…

27-《木芙蓉》

木芙蓉 木芙蓉(Hibiscus mutabilis Linn.)又名芙蓉花、拒霜花、木莲、地芙蓉、华木,原产中国。其喜温暖、湿润环境,不耐寒,忌干旱,耐水湿。对土壤要求不高,瘠薄土地亦可生长。为锦葵科、木槿属落…

校园气象站

TH-XQ3校园气象站是一个用于测量和记录气象数据的设备,可以帮助学生和教师更好地了解校园的气候情况。以下是校园气象站的使用方法: 安装:校园气象站通常需要安装在一个开阔的区域,远离建筑物和树木等遮挡物。确保气象站稳固地安装…

中文网址导航模版HaoWa1.3.1/模版网站wordpress导航主题

HaoWa v1.3.1由挖主题开发的一款网址导航类主题。 HaoWA主题除主体导航列表外,对主题所需的小模块都进行了开放式的HTML编辑器形式的功能配置,同时预留出默认的代码结构,方便大家在现有的代码结构上进行功能调整。 同时加入了字体图标Font …

Bus Number

https://codeforces.com/problemset/problem/991/E 假想一下,如果我们知道m序列的长度是不是可以计算数量 这个好算,但是好像多了一点数,因为不能有前导零,所以我们要减去有前导零的部分 最后得到 那么我们只需要枚举数量即可&am…

【C#】 使用GDI+获取两个多边形区域相交、非相交区域

一、使用GDI获取两个多边形区域相交、非相交区域 在 C# 中使用 GDI(Graphics Device Interface Plus)处理图形时,你可以使用 System.Drawing 和 System.Drawing.Drawing2D 命名空间中的类来操作区域(Region)。下面是一…

Spark累加器(Accumulator)

1.累加器类型: 数值累加器:用于计算总和、计数等。布尔累加器:用于计算满足特定条件的次数。自定义累加器:允许定义复杂的聚合逻辑和数据结构。集合累加器:用于计算唯一元素的数量,处理去重操作。 在 Spar…

Study--Oracle-07-ASM常用操作(五)

一、向磁盘组添加磁盘 1、查看系统中可用的磁盘 set lines 150; col name for a35; col path for a35; select group_number,path, state, name, total_mb, free_mb from v$asm_disk; 2、磁盘组操作 创建磁盘组 create DISKGROUP DATADGV2 EXTERNAL REDUNDANCY DISK /dev/…

解决Qt3D程序场景中无法显示创建的立体图形?

有的新手在创建Qt3D程序时,因为不熟练,导致经常遇到无法显示3D图形的情况。 原因其实也简单,就是设置的摄像机的位置不对,或者压根没有设置摄像机。 // CameraQt3DRender::QCamera *cameraEntity view.camera();cameraEntity-&g…

Java二十三种设计模式-外观模式(9/23)

外观模式:简化复杂系统的统一接口 引言 外观模式(Facade Pattern)是一种结构型设计模式,它为子系统中的一组接口提供一个统一的高层接口。外观模式定义了一个可以与复杂子系统交互的简化接口,使得子系统更加易于使用…

Android 10.0 Launcher3仿ios的folder文件夹widget功能实现二

1.前言 在10.0的系统ROM开发中,在进行一些系统Launcher3定制功能开发中,需要实现folder文件夹widget的功能,由于launcher3 默认不支持folder跨行显示,所以就需要借助自定义的widget小部件功能来实现相关功能,接下来分析实现相关功能 2.Launcher3仿ios的folder文件夹widge…

jQuery前端网页制作

1、Jquery的概述 1.1JavaScript库 JavaScript 高级程序设计(特别是对浏览器差异的复杂处理),通常很困难也很耗时。 为了应对这些调整,许多的 JavaScript (helper) 库应运而生。 这些 JavaScript 库常被称为 JavaScript 框架。 市面上一些广受欢迎的 JavaScript 框架:…

大厂linux面试题攻略五之数据库管理

一、数据库管理-MySQL语句 0.MySQL基本语句: 1.SQL语句-增 创建xxx用户: mysql>create user xxx % indentified by 123456; xxx表示用户名 %b表示该用户用来连接数据库的方式(远程或本地连接) indentified by 123456设置密码…

Reranker技术

文章目录 Reranker技术0. 什么是RAG1. 什么是Reranker?2. Reranker在RAG技术中的应用3.使用 Reranker 的优缺点4.总结参考:知乎 Reranker技术 0. 什么是RAG 基础 RAG 的操作流程大致如下:首先,你需要将文本切分成小段&#xff0…

centos7 docker空间不足

今天在使用docker安装镜像的时候,出现报错 查看原因,发现是分区空间不足导致的 所以考虑进行扩容 首先在vmware扩容并没有生效 因为只是扩展的虚拟空间,并不支持扩展分区大小,下面对分区进行扩容 参考: 分区扩容 主…

细说MCU的DAC改变输出信号频率的方法

目录 一、参考硬件 二、改变输出信号的频率 1.建立新工程 2.配置TIM3 三、代码修改 四、查看结果 一、参考硬件 本项目依赖的软件和硬件工程参考本文作者写的文章:细说MCU的DAC1和DAC2各自输出一通道模拟信号的方法-CSDN博客 https://wenchm.blog.csdn.net/a…

【初阶数据结构篇】二叉树算法题

文章目录 二叉树算法题前言单值二叉树相同的树对称二叉树另一棵树的子树二叉树的前序遍历 二叉树算法题 前言 本篇的算法题涉及到链式结构二叉树的实现方法可参考:二叉链实现方法上篇二叉链实现方法下篇 单值二叉树 如果二叉树每个节点都具有相同的值,…

什么情况?我代码没了

前两天检视代码时,发现PR里面有两个提交的描述信息一模一样,于是我提出应该将这两个提交合并成一个,保持提交树的清晰。 1 先储存起来! 而同事这时正在开发别的特性,工作区不是干净的,没法直接执行 git r…