WXAPKG 解包后如何提取页面逻辑?

前天小程序分发下载执行包,我也下载了一些,用来学习。

按照我的规划,这部分的内容整体会分为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 文件中的 函数,这个函数的中会包含我们要查询的库文件、应用文件和页面文件的页面逻辑部分。

此文章仅用做学习!

本文来自企鹅号 - 西秦说云媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ShaoYL

源代码管理SVN的使用

43670
来自专栏开源优测

AutoLine源码分析之调度管理器

AutoLine采用了Apscheduler库来实现AutoLine的测试用例的执行任务的调度管理

10910
来自专栏WindCoder

“仿OpenStack开发云计算管理软件”第一周实验报告

熟悉了git提交等基本命令、了解了用于创建独立的 Python 开发环境的Virtualenv,虽然初窥了Flask框架,但仍需要学习实验楼的Flask框架基础...

15510
来自专栏Core Net

用内网服务器对接微信公众号服务

58750
来自专栏Jerry的SAP技术分享

Chrome浏览器扩展程序的本地备份

由于众所周知的原因,有些朋友可能很难在线下载Chrome扩展程序。一种选择是可以让朋友把他成功安装的Chrome扩展程序导出成本地文件,然后让朋友发送给自己,在...

21340
来自专栏ytkah

Centos安装elasticsearch教程

elasticsearch安装是ytkah在做laravel电商站内搜索要实现的,通过自己的搜索和学习能力不算很费力解决了。下面就整理一下安装elasticse...

21630
来自专栏前端正义联盟

小程序开发-梳理登录流程-v1.0

在小程序官网里面会提到一个小程序的登录逻辑,这是官方推荐的登录逻辑,也就是所谓的小程序登录态维护逻辑,这里是官方的图:

26620
来自专栏服务端技术杂谈

搞定分库后数据冗余和数据一致

当单个数据库数据量达到一定程度后,我们可以采用多个从库解决读请求的系统瓶颈。 而写请求的系统瓶颈往往需要通过分库解决。

31330
来自专栏zaking's

走近webpack(0)--正文之前的故事

  在前端工作的过程中,只要你接触过vue,angular,react,gulp就一定知道webpack或者听说过或者使用过webpack,但是或许你对webp...

29240
来自专栏python3

python-web环境

Web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件。应用程序有两种模式C/S...

14910

扫码关注云+社区

领取腾讯云代金券