前言

众所周知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/

收费吗?

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

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

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

看完这本书我能学到什么

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

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

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

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

这就完了?

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

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

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

这本书讲了哪些东西?

本书分为4大章节:

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

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

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

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

最后

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

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

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

这本vue3编译原理开源电子书,初中级前端竟然都能看懂的更多相关文章

  1. Java编译原理

    http://wenku.baidu.com/view/f9b1734b87c24028915fc3a3.html Java编译原理 1. 关于动态加载机制 学习Java比C++更容易理解OOP的思想 ...

  2. 学了编译原理能否用 Java 写一个编译器或解释器?

    16 个回答 默认排序​ RednaxelaFX JavaScript.编译原理.编程 等 7 个话题的优秀回答者 282 人赞同了该回答 能.我一开始学编译原理的时候就是用Java写了好多小编译器和 ...

  3. 《编译原理》LR 分析法与构造 LR(1) 分析表的步骤 - 例题解析

    <编译原理>LR 分析法与构造 LR(1) 分析表的步骤 - 例题解析 笔记 直接做题是有一些特定步骤,有技巧.但也必须先了解一些基本概念,本篇会通过例题形式解释概念,会容易理解和记忆,以 ...

  4. GitHub 上值得推荐的开源电子书

    GitHub 上值得推荐的开源电子书 开源不仅局限于软件领域,开源同样意味着自由选择的权利和对知识开放的追求. 可以参照这篇文章,已附上所有超链接编程类开放书籍荟萃-Linux Story 语言无关类 ...

  5. 《Flutter实战》开源电子书

    <Flutter实战>开源电子书 <Flutter实战> 开源了,本书为 Flutter中文网开源电子书项目,本书系统介绍了Flutter技术的各个方面,本书属于原创书籍(并非 ...

  6. 深入理解 Flutter 的编译原理与优化

    阿里妹导读:对于开发者而言,Flutter工程和我们的Android/iOS工程有何差别?Flutter的渲染和事件传递机制如何工作?构建缓慢或出错又如何去定位,修改和生效呢?凡此种种,都需要对Flu ...

  7. 前端与编译原理 用js去运行js代码 js2run

    # 前端与编译原理 用js去运行js代码 js2run 前端与编译原理似乎相隔甚远,各种热门的框架都学不过来,那能顾及到这么多底层呢,前端开发者们似乎对编译原理的影响仅仅是"抽象语法树&qu ...

  8. 43 编译原理及cmake使用手册学习

    0 引言 大量开源库需要通过cmake编译后使用,了解cmake的基本指令以及CMakeLists.txt的写法非常重要,其基础是了解编译原理.另外,为了对cmake编译的代码进行调试,需要了解CMa ...

  9. 前端与编译原理——用JS写一个JS解释器

    说起编译原理,印象往往只停留在本科时那些枯燥的课程和晦涩的概念.作为前端开发者,编译原理似乎离我们很远,对它的理解很可能仅仅局限于"抽象语法树(AST)".但这仅仅是个开头而已.编 ...

  10. jQuery-1.9.1源码分析系列(三) Sizzle选择器引擎——编译原理

    这一节要分析的东东比较复杂,篇幅会比较大,也不知道我描述后能不能让人看明白.这部分的源码我第一次看的时候也比较吃力,现在重头看一遍,再分析一遍,看能否查缺补漏. 看这一部分的源码需要有一个完整的概念后 ...

随机推荐

  1. ReplayKit2 有线投屏项目-反向Socket实现

    一.需求 我们在使用RTMP协议进行推流的时候,底层仍然采用的是TCP协议或者QUICK协议,有客户端主动发起请求.但是在有线投屏中,需要PC端向手机发起请求建立连接 二.实现 在客户端主动发起请求之 ...

  2. java中实现创建目录、创建文件的操作

    一.创建目录 mkdir()--仅创建一层目录,返回true或false. mkdirs()--创建一层或多层目录,返回true或false.   也就是,在通常情况下,使用mkdirs()即可满足创 ...

  3. JavaScript语法形式1行内式

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. 使用Vagrant创建CentOS虚拟机

    使用Vagrant创建CentOS虚拟机 Vagrant是一款由HashiCorp公司提供的,用于快速构建虚拟机环境的软件.本节我们将使用Vagrant结合Oracle VM VirtualBox快速 ...

  5. json字符串转换对象或列表,多了字段不会报错

    json字符串转换对象或列表,多了字段不会报错 //DEMO1 转换对象 应用 riskId public class Item { private String id; private String ...

  6. python 日志写入文件,参数说明及动态判断文件是创建还是追加

    import logging import os ''' 格式符 含义 %(levername)s 日志级别名称 %(pathname)s 当前执行程序的路径(即脚本所在的位置) %(filename ...

  7. k8s健康检查(探针Probe)之LivenessProbe、ReadinessProbe和StartupProbe

    背景 集群正常服务时,会出现容器死掉问题,如宿主机故障.资源不足.下游故障等.这个时候容器需要从endpoints摘除(容器挂了就不能接流了),并执行它的restart策略. LivenessProb ...

  8. 02-Python基础

    文件编码 Python2中 在Python2中:默认文件编码是ASC II,所以无法正常输出中文,会报错. 解决办法 在文件的开头添加# -- coding: UTF-8 -- 或者 # coding ...

  9. 【干货】Vue3 组件通信方式详解

    前言 毫无疑问,组件通信是Vue中非常重要的技术之一,它的出现能够使我们非常方便的在不同组件之间进行数据的传递,以达到数据交互的效果.所以,学习组件通信技术是非常有必要的,本文将总结Vue中关于组件通 ...

  10. EEPROM、Flash有关知识

    存储器分为两大类:RAM(Random Access Memory,任意地址访问储存器)和ROM(Read-Only Memory,只读储存器). 发展历史 ROM Read-Only Memory, ...