前天小程序分发下载执行包,我也下载了一些,用来学习。
按照我的规划,这部分的内容整体会分为4~5次推送完成,首先是配置的提取和页面逻辑的提取,这部分会比较快,很容易就能提取出来,也最先讲,其次是 WXSS 的提取,这部分是相对来说难一些,但是比页面结构提取还是要简单一些的,最后则会更新如何提取页面结构的部分。页面结构部分最终我可能会给出一个函数,通过执行这个函数,就可以提取小程序中的页面。
话不多说,我们开始今天的内容。
我们的页面逻辑在哪?
解压完小程序后,我们可以看到解压出来的程序里有这几个文件。当然,你解压的小程序可能是有所不同的。
但是一定会有的有以下四个:
page-frame.html:存放了我们的页面结构的文件,整个小程序的 WXML 都会处理后放入这个文件,比如你可以看下截图
app-config.json:其实是我们小程序根目录的app.json,处理后就变成了app-config.json。格式化后的代码如下
pages:页面样式存放目录,实际上是将我们的 wxml 处理后,将 wxss 放在这里。
app-service.js:页面逻辑所在位置,我们等下就是要解析这个。
如何看 app-service.js
小程序的App-Service.js有两种状态,一种是没有进行 minify 处理的,另外一种是已经进行了 minify 处理过的。
没有处理过的
处理过的
两种文件无论是否经过 minify 处理,我们都一视同仁,对其进行格式化处理。
这里我使用的是 BeJSON 的 JS 格式化工具(www.bejson.com/jshtml_format/),你自己可以选择合适的使用。
将 app-service.js 文件的代码复制到这里,
然后点击「格式化」,你就可以得到处理后的文件。
将这些代码复制回app-service.js文件中。
找到 app-service.js 文件中的页面逻辑文件布局
首先,我们要说明一下这个文件的加载逻辑,这样有助于你理解如何区分哪些代码是哪个文件的。
在app-service.js文件中,小程序优先加载各个依赖库文件,所以你在最上面看到的都是小程序用到的依赖库,如果你的小程序对此不是特别的依赖,可以不用看。
然后加载的是app.js,也就是我们小程序开发时根目录下的app.js,最后是小程序各个页面的 js 文件,这个加载的顺序和 app-config.json 文件的加载顺序是一致的(这个文件的介绍你可以看看我今天的第二篇推文)。
找找页面逻辑
如果你把所有的函数都压缩起来,你会发现整个文件长这个样子:
我们可以看出,整个文件的关键是 这个函数,我们只要找到这个函数,就能找到我们要的文件了。
我们再打开其中一个看看
在去除了外层函数的包裹和声明后,小程序的app对象一下就出现在了我们的眼前。
同样的,我再找个 page 的定义也看一下。
同样的,我们的 Page 对象也能很轻松的找到。
剩下的就是,打开我们要查看的页面的定义,查看具体的函数代码了。
总结
如何找到小程序的页面逻辑?
解包
找到 app-service.js 文件,将其代码进行格式化,此处推荐 BeJSON 的格式化工具
找到 app-service.js 文件中的 函数,这个函数的中会包含我们要查询的库文件、应用文件和页面文件的页面逻辑部分。
此文章仅用做学习!