【Vue】理解Vue源码系列(一)

深入理解Vue源码,才是真正的使用Vue。我们可能用Vue开发了很多项目,但并不知道Vue框架中的原理,这样我们只会是一个Api调用师。理解一些框架的源码,帮助我们去设计、开发出更高质量的代码,这是一个真正工程师的必要技能。接下来,我们开启Vue源码探究之旅。

本次Vue源码系列的Vue版本为2.6.10,所有的讨论都是围绕着这个版本的Vue展开的。

我们先来看Vue源码目录,Vue源码都在src目录下。

src
├── compiler        # 编译相关 
├── core            # 核心代码 
├── platforms       # 不同平台的支持
├── server          # 服务端渲染
├── sfc             # .vue 文件解析
├── shared          # 共享代码

Compiler

这个目录是有关Vue编译相关的代码,主要是将模板转化成render函数。编译的工作可以通过webpack等工具取代,也可以直接在运行时编译,但会带来性能的损耗。因此我们推荐离线编译。

Core

Vue源码中的核心部分,生命周期、渲染过程、双向绑定等等都在这里,是我们要探究的核心

Platforms

Vue是跨平台框架,他可以运行在web平台和weex平台上,提供了在不同平台上运行的入口。

Server

用于服务端渲染

Sfc

这个目录下的代码逻辑会把 .vue单文件内容解析成一个 JavaScript 的对象。

Shared

Vue共享的工具函数和方法

找到入口

我们来看基于web平台的入口文件,目录在vue/src/platforms/web下,Vue为我们提供了不同的编译方式,一种是Runtime版本,一种是Runtime + Compiler版本。

Runtime

这个版本只提供Vue运行时的代码,比Runtime + Comiler版本更加轻量。但我们需要借助webpack工具的vue-loader将.vue文件转化成js。

Runtime + Comilper

这个版本提供了运行时代码和运行时编译功能,编译功能将对模板(template)转化成render函数。但会带来运行时性能的损耗和文件体积变大。因此,我们推荐使用Runtime版本,并通过webpack来做预编译。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,让我来回答你的问题。 Vue 组件 object_vue 源码系列一是关于 Object.defineProperty 的。Object.defineProperty 是 JavaScript 中的一个方法,可以用来定义对象的属性。这个方法可以让我们定义一个新的属性或者修改一个已经存在的属性。这个方法的语法如下: ```javascript Object.defineProperty(obj, prop, descriptor) ``` 其中,obj 是要定义属性的对象,prop 是要定义或修改的属性名,descriptor 是属性的描述符,它是一个对象,可以包含以下属性: - value:属性的值,默认为 undefined。 - writable:属性是否可写,默认为 false。 - enumerable:属性是否可枚举,默认为 false。 - configurable:属性是否可配置,默认为 false。 使用 Object.defineProperty 方法,可以实现一些高级的对象操作,例如: 1. 将一个属性设置为只读,即无法修改。 2. 将一个属性设置为不可枚举,即无法通过 for...in 循环遍历到该属性。 3. 将一个属性设置为不可配置,即无法删除该属性或者修改该属性的描述符。 在 Vue 中,Object.defineProperty 方法被广泛地应用于组件的实现中,例如: 1. 监听数据变化,通过设置 getter 和 setter 方法,实现数据的响应式更新。 2. 实现 computed 计算属性,通过设置 getter 方法,实现计算属性的缓存和响应式更新。 3. 实现 watch 监听器,通过设置 getter 方法,监听数据的变化并触发回调函数。 以上就是我对你提出的问题的回答。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值