# 深入wapy小程序组件化框架 **Repository Path**: djcx/ShenRuwapyXiaoChengXuZuJianHuaKuangJia ## Basic Information - **Project Name**: 深入wapy小程序组件化框架 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2017-08-07 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README wepy是一个优秀的微信小程序组件化框架,突破了小程序的限制,支持了npm包加载以及组件化方案,并且在性能优化方面也下了功夫,不管之后项目是否会使用到,该框架组件化编译方案都是值得学习和深入的。 我们先提出几个问题,让下面的分析更有针对性: wepy如何实现单文件组件.wpy编译? 如何隔离组件作用域? 如何实现组件通信? 如何实现加载外部npm包? 先从源码目录入手 我们可以先clone下 wepy的github目录 docs目录下是开发文档以及使用 docsify 生成的文档网站 packages目录下就是核心代码了,wepy是小程序端的框架,wepy-cli是脚手架(负责组件化编译等等),其他就是一些预处理编译插件、还有一些压缩插件等等 scripts是一些shell脚本,负责test等等一些操作 gulpfile.js主要负责将package中的src开发目录中js文件babel转换至lib目录供使用,并支持watch compile 等等 我们就重点看wepy以及wepy-cli,接下来的文章也是围绕这两个展开 ![输入图片说明](https://git.oschina.net/uploads/images/2017/0807/124003_eb587394_1392442.jpeg "1.jpg") wepy-cli分析 目录结构 ![输入图片说明](https://git.oschina.net/uploads/images/2017/0807/124020_67d28aaf_1392442.jpeg "2.jpg") 上面的bin/wepy.js是入口文件,其实就一句话引入lib中经过babel转换的文件 require('../lib/wepy'); 编译构建流程 下图简单画出了整体wepy-cli的编译构建流程,忽略了部分细节 ![输入图片说明](https://git.oschina.net/uploads/images/2017/0807/124047_0b2b1f2a_1392442.jpeg "3.jpg") 接下来答大体说下build的流程(可以跟着图看) wepy-cli使用commander作为命令行工具,build命令执行调用compile build方法 如果没有指定文件build,则获取src目录下所有文件,寻找没有引用的(指的是这种