Vue2源码梳理:关于vue2的源码目录设计与相关模块作用分析

springboot220基于SpringBoot+Vue的周边游平台个人管理模块的设计与实现 本文介绍了一个基于Java技术的周边游平台系统设计与实现。系统采用SpringBoot框架开发,使用MySQL数据库存储数据,通过IDEA开发工具完成。文章详细阐述了系统开发背景、技术选型、功能模块、数据库设计及核心功能实现。系统包含景点管理、房间预订、旅游团拼团、游玩路线等模块,支持用户评价、订单处理等功能。管理员可通过后台进行信息管理,用户可通过前端界面完成预订和评价。系统经过可行性分析和测试,具有良好的实用性和可操作性,能够满足周边旅游信息管理的需求。 阅读详情

Vue @ 2.x 源码目录结构

Vue.js 的源码都在 src 目录下,其目录结构如下

1 )vue@2.6.14 以下

src
├── compiler        # 编译相关 
├── core            # 核心代码 
├── platforms       # 不同平台的支持
├── server          # 服务端渲染
├── sfc             # .vue 文件解析
├── shared          # 共享代码
  • 主要围绕这个目录来进行展开

2 ) vue@2.7.0 以上

src
├── compiler        # 编译相关 
├── core            # 核心代码 
├── platforms       # 不同平台的支持
├── types           # 类型定义文件,用于支持TS
├── v3              # vue3中的一些核心代码
├── shared          # 共享代码
├── global.d.ts     # .d.ts 全局类型
  • 这里我们不做伸展,看vue3.x源码更合适一些,毕竟是中间的过渡版本

核心目录解析


1 )compiler

  • vue@2.0很大的改进是 virtual dom, virtual dom 的生成实际执行的是 render function
  • 我们写vue代码的时候,很少去手写 render function,而是用写 template 来代替
  • 其实 从 template 到 render function 相关逻辑就在这个目录中
  • compiler 目录包含 Vue.js 所有编译相关的代码
  • 它包括把模板解析成 ast 语法树,ast 语法树优化,代码生成等功能
  • 编译的工作可以在构建时做(借助 webpack、vue-loader等辅助插件)
  • 也可以在运行时做,使用包含构建功能的 Vue.js
  • 显然,编译是一项耗性能的工作,所以更推荐前者——离线编译

2 )core

  • core 这这个目录,它又分为很多很多子目录
  • 比如说像内置组件,keep-alive 是放在这里的
  • core 目录下的 global-api目录下
    • extend.js
    • mixin.js
    • assets.js
    • use.js
  • core 目录下的 instance 目录下
    • events.js
    • init.js
    • inject.js
    • lifecycle.js
    • proxy.js
    • render.js
    • state.js
  • core 目录下的 observer 目录下
    • array.js
    • dep.js
    • scheduler.js
    • traverse.js
    • watcher.js
    • 这些和响应式数据相关,是vue的核心
  • core 目录下的 util 目录下
    • debug.js
    • env.js
    • error.js
    • lang.js
    • next-tick.js
    • perf.js
    • props.js
  • core 目录下的 vdom 目录下
    • create-component.js
    • create-element.js
    • create-functional-component.js
    • patch.js
    • vnode.js
    • vdom目录是vue@2.x的重大核心

3 ) platforms

  • platforms 它有两个子目录,一个是web,一个是weex
  • web就是我们平时开发的浏览器的程序
  • weex呢是vue推出的一个类似于react-native的一个跨端的应用
  • 这两个目录的存在,说明,vue既可以编译出在浏览器运行的框架
  • 也可以在其他平台下,比如 weex
  • 美团开源的 mpvue 也是在 platforms 下 扩展了 mp 的目录
  • 在 web 目录下
    • compiler 与web编译有关
    • runtime 与web运行时有关
    • server 与服务端渲染有关
    • util web的相关工具类
  • weex 目录用的不多,就不去展开
  • Vue.js 是一个跨平台的 MVVM 框架,它可以跑在 web 上,也可以配合 weex 跑在 native 客户端上
  • platform 是 Vue.js 的入口,2 个目录代表 2 个主要入口,分别打包成运行在 web 上和 weex 上的 Vue.js

4 ) server

  • 所有跟服务端渲染的相关的代码都在这个目录下
  • 2.0 推出以后,server-render 也是一个比较核心的一个功能
  • Vue.js 2.0 支持了服务端渲染,所有服务端渲染相关的逻辑都在这个目录下
  • 注意:这部分代码是跑在服务端的 Node.js,不要和跑在浏览器端的 Vue.js 混为一谈
  • 服务端渲染主要的工作是把组件渲染为服务器端的 HTML 字符串,将它们直接发送到浏览器,最后将静态标记"混合"为客户端上完全交互的应用程序

5 )sfc

  • sfc 就是一个简单的解释器
  • 通常我们开发 Vue.js 都会借助 webpack 构建, 然后通过 .vue 单文件来编写组件
  • 这个目录下的代码逻辑会把 .vue 文件内容解析成一个 JavaScript 的对象

6 ) shared

  • shared是一些辅助的方法,比如说像一些常量啊,一些工具方法
  • 它是可以被我们的像 core 或者是 compiler等等这些和我们的platforms所有的目录共享的一些辅助方法
  • Vue.js 会定义一些工具方法,这里定义的工具方法都是会被浏览器端的 Vue.js 和服务端的 Vue.js 所共享的

7 )总结

  • 从 Vue.js 的目录设计可以看到,作者把功能模块拆分的非常清楚
  • 相关的逻辑放在一个独立的目录下维护,并且把复用的代码也抽成一个独立目录
  • 这样的目录设计让代码的阅读性和可维护性都变强,是非常值得学习和推敲的
  • 这点也可以作为我们写js库的范本
  • 通过模块化的方式,让这些模块之间相互引用
  • 最终通过编译工具再生成一个独立的js
  • vue它虽然把这些代码呢都拆成这些目录,最终也是通过rollup打包成一个单独的js
CentOS7.9 安装 ImageMagick,图片转换为HEIC图像格式 由于ImageMagick7以下不支持heic等图片格式,所以重新安装了ImageMagick7.1版本支持heic格式,在网上找了很多资料,归纳总结并写此文章记录一下。在Linux(CentOS7.9)上安装ImageMagick7.1.1-38。 阅读详情

相关推荐

行人重识别(ReID)基础知识入门

行人重识别(Person re-identification)主要目的是针对出现在监控摄像头内的某个目标行人,准确快速地从监控网络其他摄像头内的大量行人中将这个目标行人标识出来。如图所示一个区域有多个摄像头拍摄视频序列,ReID的要求对一个摄像头下感兴趣的行人,检索到该行人在其他摄像头下出现的所有图片。

用于记录 1万+

vue2核心+脚手架+vuex+路由

vue学习总结。

sumMStar的博客 414

量化策略缺数据?一份QMT/PTrade免费数据清单与特殊数据源QtFactor评测

本文为量化策略开发者提供QMT和PTrade平台的免费数据资源清单,并深度评测QtFactor在补充特色数据方面的价值。涵盖Tick级数据、Level2行情、资金流向等关键信息,帮助开发者在预算有限的情况下构建高效数据解决方案,特别适合打板策略和日内回转交易。

weixin_29058331的博客 418

vue 2.x内部运行机制系列文章

最近一直在用vue.js作为前端技术栈,闲暇之余,也简单研究了下vue.js的源码和各位前端大牛的文章,为了加深自己对vue.js的理解和完成公司的硬性要求(内部分享),于是就有了这篇系列文章。同时也趁3.0正式版发布前做2.0的最后一波总结。 vue是什么 套用官网的话,vue是一套用于构建用户界面的渐进式框架。Vue 的核心库只关注视图层,它拥有优雅的API,并且易于上手,还便于与第三方库或既...

挥别了青春的博客 386

802.11 NDP Sounding

NDP Sounding1.NDP原理2.NDP 过程3.帧结构3.1 NDPA结构3.2 CBF帧 1.NDP原理 802.11n标准提供的波束成形技术,可以通过预先补偿发射天线的相位,让两条波束进行叠加以实现最好的效果 显式波束成形需要终端反馈信道信息: AP向STA发送探测数据(NDP: null data packet sounding) STA向AP反馈信道信息(Compressed beamforming) AP根据STA的反馈或自行计算的权重信息进行波束成形 2.NDP 过程 802.

weixin_45799954的博客 8263

从零到一:用Python打造你的智能交互桌宠,附完整源码与打包指南

本文详细介绍了如何从零开始使用Python开发智能交互桌宠,涵盖环境配置、窗口创建、动图加载、交互功能实现及打包发布全流程。教程特别适合零基础开发者,通过完整源码和分步指南,帮助读者快速掌握桌面宠物开发技巧,打造个性化AI伴侣。

weixin_29094539的博客 293

vue2函数式组件,把sfc模板作为js去调用

【代码】vue2函数式组件,把sfc模板作为js去调用。

weixin_47102954的博客 348

5分钟搞定!用L型匹配电路优化窄带天线性能(附Smith圆图实操)

本文针对窄带天线阻抗匹配难题,提供了一套5分钟快速解决方案。通过详解L型匹配电路的核心原理,并结合Smith圆图这一射频工程师的“瑞士军刀”,手把手指导如何选择拓扑、计算元件值并进行实际调试,旨在帮助硬件工程师高效优化天线性能,实现最大功率传输。

yyy34的博客 444

前端之vue2原理(全)

vue2原理说明

yh502956003的博客 1700

SAP BOM批量反查代码分享

SAP BOM反查批量查询代码分享

我小时候很黑的博客 4973

Chrome下载B站视频字幕的插件

本文主要介绍了Chrome下载B站视频字幕的插件,希望能对使用Chrome的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 3万+

Vue2.0 Vuex介绍和工作原理

Vue2.0 Vuex介绍和工作原理

yasinawolaopo的博客 676

动态SLAM中的YOLO与ORB-SLAM3融合:实时目标检测与动态点云滤除实战

本文介绍了如何结合YOLOv5目标检测与ORB-SLAM3视觉SLAM系统,实现动态环境下的目标检测与视觉SLAM任务。文章详细阐述了从源码下载、依赖安装(包括libtorch配置)、编译运行步骤(包括ROS环境和非ROS环境下的编译方法),到RGBD-TUM数据集准备与关联处理的全流程。同时针对常见错误提供了解决方案,如libtorch路径配置、ROS环境冲突等。最后展示了系统运行方法,并探讨了未来可能的优化方向,包括增强目标检测能力和改进动态环境下的地图构建。该集成系统为机器人智能导航和环境感知提供了有

LXY_LOVE36的博客 238

Vue3源码梳理:源码目录结构及源码阅读方法

源码目录结构及源码阅读方法

Wang的专栏 2078

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

【手写 Promise 源码】目录 - Promise 知识点梳理

本篇,对 Promise 相关知识点进行梳理和拆分;作为Promise 专栏目录,随文章更新会持续完善,欢迎大家留言讨论和补充;

BraveWangDev 1052

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Vue2源码分析-逻辑梳理

很久之前就看完vue1,但是太懒就一直没写博客,这次看Vue2打算抽下懒筋先把自己看过了记录下来,否则等全部看完,估计又没下文了 看源码总需要抱着一个目的,否则就很难坚持下去,我并没做过vue的项目,我几乎很少会依赖大型的框架,一个是跟平台有关系,另一方面因为我觉得是对自己能力的束缚,而我更渴望的就是通过阅读别人的源码,吸收别人的思路,取之精华去之糟粕,从而改造自己的项目。当然,这是在...

baoaoba9317的博客 366

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

深入Vue - 源码目录及构建过程分析

摘要: Vue源码阅读第一步。 原文:深入vue - 源码目录及构建过程分析 公众号:前端小苑 Fundebug经授权转载,版权归原作者所有。 本文主要梳理一下vue代码的目录,以及vue代码构建流程,旨在对vue源码整体有一个认知,有助于后续对源码的阅读。 1. 目录结构 上图是对vue的代码的所有目录进行的梳理,其中源码位于src目录下,下面对src下的目录进行介绍。 compiler ...

weixin_34161032的博客 191

Vue前端框架的目录结构分析和各文件之间的关系

前言 上一篇记录了基于@vue/cli 和webpack的前端开发环境搭建并总结了一些常见的问题,本篇文章将来分析搭建完成的vue框架的目录结构并梳理各个文件之间的关系。 分析 ├── README.md 项目介绍(.md文件,无实际意义) ├── index.html 入口页面(webpack打包的入口文件) ├── build ...

GothaM24的博客 1259

【手写 Vue2.x 源码】专栏目录与重构规划

专栏概览与目录;写作回顾、重构规划、重构过程记录与问题汇总;持续更新中...

BraveWangDev 1211

基于ssm+vue基于Vuejs框架的茶业信息管理平台(开题报告+源码+论文)

因此,本选题将以Vuejs框架为研究情景,重点分析和研究茶业信息管理平台的构建问题,以期探寻茶业信息管理的高效方法,提出对策建议,为茶业信息化进程提供技术支持和实践指导,为后续更加深入的研究奠定基础。现实实践意义则在于,构建基于Vuejs框架的茶业信息管理平台,能够提升茶业信息的处理效率和准确性,优化茶园管理、茶叶种植、加工、储存等环节的资源配置,提高茶业企业的运营效率和市场竞争力,促进茶业的可持续发展。最后,通过项目分析法,对实际茶业企业的信息管理需求进行深入调研,确保系统设计的实用性和针对性。

锦程学长--毕设程序 773

.vue文件怎么使用_深入Vue - 源码目录及构建过程分析

摘要: Vue 源码阅读第一步。原文:深入 vue - 源码目录及构建过程分析公众号:前端小苑Fundebug经授权转载,版权归原作者所有。本文主要梳理一下 vue 代码的目录,以及 vue 代码构建流程,旨在对 vue 源码整体有一个认知,有助于后续对源码的阅读。1. 目录结构上图是对 vue 的代码的所有目录进行的梳理,其中源码位于 src 目录下,下面对 src 下的目录进行介绍。compi...

weixin_39641236的博客 217

Springboot基于Vuejs汽车租赁系统的设计与实现59137

Springboot基于Vuejs汽车租赁系统的设计与实现59137本系统(程序源码数据库调试部署开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容。

ck3024的博客 832

Vue2源码梳理:关于数据驱动,与new Vue时的初始化操作

因为dom变成了数据的映射,我们所有的逻辑都是对数据的修改,而并不关注dom,这样的代码非常有利于维护。它大大简化了代码量,特别是当交互复杂的时候,只关心数据的修改会让代码的逻辑变得非常清晰。它相比我们传统的前端开发,如使用 jQuery 的前端库直接去修改 dom 的的话。在vue.js中,可以采用简洁的模板语法来声明式的将数据渲染为 dom,示例。这个例子是为了说明这个数据在js中定义的这个数据 最终是怎么渲染到dom上的。所谓数据驱动,就是指视图是由数据驱动生成的。2 )数据驱动的关注。

Wang的专栏 1187
上一篇: Vue2源码梳理:关于静态类型检查工具flow
下一篇: Vue2源码梳理:源码构建流程与运行时和编译时的版本选择
Wang's Blog
博客等级 码龄12年 7433粉丝 2421原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值