Open
Description
本文是为有意愿为 MPVUE 贡献代码的开发者们而写的,可能并不会告诉你如何安装和使用等基础知识。
必要的准备工作
开始之前,我期望你能具备这样一些基础知识经验:
- Vue.js 的开发(贡献)经验;
- 微信小程序(泛小程序) 的开发经验;
- Mpvue 的开发经验;
- WebPack 等现代前端工程构建配置经验。
哈哈,这不是招聘 JD,不过这确实也是开发 Mpvue 所必须的基础技能。
如果仅仅有一点点 Vue.js 的开发使用经验,可能还不不够,至少需要明白其核心原理和相关的基建构建等,不过也不用太担心,美团的同学们做了一件很不错的事情:逐行级别的源码分析 Vue.js,嫌文章太长的话,还是直接去看源代码吧。
无论如何只要拥有坚韧的好奇心,那么你就可以一路 debug 进去,从而了解到这整件事情的全貌。加油!
开始
Mpvue 是一个完成的工程体系,从初始化模版工程到实际开发调试和最终的打包上线都有基建工具,时间和精力问题,暂不能全部讲解出来,下面只讲讲最最主要的部分 https://github.com/Meituan-Dianping/mpvue 。
工程结构
主要的部分捋开说一说:
.
├── BACKERS.md
├── LICENSE
├── README.md
├── benchmarks
├── build // 构建相关代码
├── circle.yml
├── dist
├── examples
├── flow
├── package.json
├── packages // 发布到 npm 的代码
│ ├── mpvue
│ ├── mpvue-template-compiler
│ └── ...
├── src
│ ├── compiler // core compiler 未改动
│ ├── core // core runtime 无逻辑改动
│ ├── platforms // 平台相关的适配代码
│ │ ├── mp // 主要改动的地方
│ │ │ ├── compiler
│ │ │ ├── runtime
│ │ │ ├── util
│ │ │ ├── entry-compiler.js // compiler 的入口文件
│ │ │ ├── entry-runtime.js // runtime 的入口文件
│ │ │ └── join-code-in-build.js // 构建 runtime 时候硬拼接的代码
│ │ └── ...
│ ├── server
│ ├── sfc
│ └── shared
├── test
│ ├── mp
│ └── ...
├── types
└── yarn.lock
思路
其实要理解 Mpvue,只需要能明白这么几个关键点就行了。
.vue
文件是如何变成wxml
wxss
js
文件的?- vue 组件是如何通信和映射生命周期的?
- vue 的 slot 能力是如何实现的?
- mpvue 是如何把 vue 的数据同步到小程序的 AppData 的?
以这几个问题为抓手,直接进入我们开发用的 Demo 项目进行探究。
Demo 项目书写中...
其他
有了这些讲解,基本就不用再多说了,原则就是干,遇到问题就上,没有什么比真正动手来的更好。
Metadata
Metadata
Assignees
Labels
No labels