|
分析源码之前,我们先来回顾一下,wepy 的使用:
<!-- 小程序入口 app.wpy -->
<script>
import wepy from 'wepy';
export default class extends wepy.app {
......
}
</script>
让我们一起看看 export 出来的 class,是怎么转换成小程序语言的。 我们介绍了 wepy-cli 是如何编译 wpy 文件的,里面有说到,complie-script.js 在处理 script 代码时,会加入 wepy 初始化的代码。编译之后 dist 目录下的文件,如下:
// dist/app.js
App(require('./npm/wepy/lib/wepy.js').default.$createApp(_default, {}));
// dist/pages/index.js
Page(require('./../npm/wepy/lib/wepy.js').default.$createPage(Index , 'pages/index'));
可以看出,主要调用了 $createApp 和 $createPage 方法。在看这两个方法之前,我们先来看一下 wepy 的目录结构,以便后面的分析更好理解。 wepy目录结构
├─wepy
├─src
├─app.js 全局app逻辑,请求优化、promisify API、拦截器功能等
├─base.js 定义了 $createApp 和 $createPage 等方法
├─component.js 组件逻辑,脏值检查、组件通信等
├─event.js 事件方法
├─mixin.js 混合方法
├─native.js 空,代码里用于app.js中重新定义wx接口
├─page.js 继承component,page的一些优化
├─util.js 工具方法
├─wepy.js 入口文件
├─test
├─...
|