vue源码分析——path解析的状态机设计
2018-07-22 18:56
441 查看
[code]var obj = { a:{ b:'hello', c:['Marry','Ella'] } }
对于对象a来说,我们使用‘a.b’就能获得字符串hello,那么vue是如何解析a.b的呢?vue.js 是通过状态机管理 来实现对路径的解析的。Vue 将表达式的访问路径字符串 解析成数组的形式,‘a.b’就解析成为['a','b'],通过obj[arr[0]][arr[1]]来获得属性值。
源码中分别有四种操作,和9种状态
四种操作的具体如下
而九种状态分别对应以下状态模型,每一种状态模型有各自接收的输入,转移的状态,相应的操作
仔细阅读源码就知道,Vue 的状态机模式解析 path 实际上是将 path 的每个索引的字符视为一个状态(getPathCharType()方法),将 接下来一个字符 视为 当前状态的 输入,并 根据输入 进行 状态转移 以及 响应操作,如果遇到异常就直接跳出,状态机终止,无异常则运行至终止状态。
整理一下状态模型可得下图
拆分源码示例https://github.com/EllaYan/Vue-path-analysis
阅读更多
相关文章推荐
- (六)Tomcat源码解析 - Tomcat 系统架构与设计模式(二)-设计模式分析
- Mybatis架构设计及源码分析-mapper.xml文件解析
- 有关SpringMVC的架构设计、源码解析、得失分析
- ClassPathXmlApplicationContext源码解析四
- Mangos源码分析(6):登录服的设计之功能需求
- Vue源码学习之初始化模块init.js解析
- Linux中文件名解析处理源码分析
- 推荐文章:Libev源码分析 -- 整体设计
- hadoop源码分析(2):Map-Reduce的过程解析
- 前端高级课程 Vue源码全方位深入解析视频教程
- libev源码分析---整体设计
- OpenStack建立实例完整过程源码详细分析(13)----依据AMQP通信架构实现消息发送机制解析之二
- snownlp情感分析源码解析
- Vue如何实现组件的源码解析
- 开源工作流Fireflow源码分析之流程文件解析
- OkHttp源码解析(一) Dispatcher的调度过程分析
- vue源码解析之--数据双向绑定
- 数据库分库分表中间件 Sharding-JDBC 源码分析 —— SQL 解析(六)之删除SQL
- bbs源码分析 之 jive中的设计模式
- Nginx源码分析 - 主流程篇 - 解析配置文件