麻豆做爰免费观看-日本熟妇一区二区三区-欧美午夜精品一区二区-xxxxx国产-精品欧美日韩-五月天黄色小说-亚洲熟妇一区-jizz国产视频-国产91九色-www好男人-国产精品久久久免费-九九热精彩视频-www..com国产-午夜簧片-欧美一区中文字幕-在线观看亚洲一区二区-一级少妇精品久久久久久久-www.欧美国产-日韩欧美综合视频-成人性视频免费网站

027-81331413

實現微信小程序最新運行環境系列

發布時間:2020-10-31 瀏覽:2268

實現微信小程序編譯和運行環境系列 (初始篇)

前言

最近一段時間在研究實現微信小程序和小游戲編譯打包和運行環境平臺開發。

目前基本可以支持微信基礎庫 2.8.2 功能迭代了。

所以想通過記錄分享一下自己的認知過程中遇到的一些問題和解決方案來更好的理解小程序設計上的優點和一些不足的地方。

在此之前網上有存在開源的一些基于微信基礎庫版本 1.0 的一些參考。核心作者是由開源大牛 啟明兄 的 wept 項目基礎上構建的 (目前有幸和啟明兄成為同事對這個小程序整體的架構理解幫助了我很多)。

由于 wept 的運行環境是基于微信基礎庫 1.0 的版本上實現之后也不維護了,時間上是 2016 的在后續的更新的版本中新加的一些特性如自定義組件 npm 包很多 api 等開發實現都不支持,最主要是的微信在后續架構中更換底層的通信方式采用了 webstock 的方式等一些其他變化。

正文

后面我會通過幾篇文章來整體描述一下從工具到破解到源碼解析和原理到實現的處理流程

最開始的時候也在網上找了很多的資料,看了有一些人寫的解析微信小程序架構的文章,從中學習了解了很多,

但如果想模擬實現出來這么個東西還是有蠻迷糊的,所以我想通過我們所實現的過程來一點點 從現象 看本質 來解析下微信小程序編譯和運行原理。

凡事對自己多點信心,多堅持下,多學習下,想想我們遇到的問題,當時感覺我,搞不定了,弄不了,最后隨著時間的推移和認知的迭代問題總會慢慢消滅掉。

本文將先通過全面解析微信開發者工具來知道那些基本的文件和內容組成一一講述 (從現象 看本質)。

在此之前我們通過官方文檔可以了解一些內容

  • 整個小程序框架系統分為兩部分:邏輯層(App Service)和 視圖層(View);

  • 小程序提供了自己的視圖層描述語言 WXML 和 WXSS;

  • 基于 JavaScript 的邏輯層框架,并在視圖層與邏輯層間提供了數據傳輸和事件系統他們兩個線程里運行;

  • 視圖層使用 WebView 渲染,邏輯層使用 JSCore 運行, 視圖層和邏輯層通過系統層的 JSBridage 進行通信,邏輯層把數據變化通知到視圖層,觸發視圖層頁面更新,

    視圖層把觸發的事件通知到邏輯層進行業務處理。

從上述說明中我們可以得知一些重要信息邏輯層(App Service)和 視圖層(View) 以及兩者之間的通信協調。

下面通過微信開發工具來展示說明,小程序邏輯層的 javascript 代碼是運行在 NW.js 中,視圖層是由 Chromium 60 Webview 來渲染的

他們之間是通過 webstock 協議來通信的。

以下我們主要是以 mac 環境為主

我們先打開 微信開發工具官方 demo 如圖:

從上圖和我們的一些理解我們知道微信小程序的文件格式主要組成:

  • .js 主要頁面邏輯;

  • .wxml 頁面結構,框架設計的一套標簽語言,結合基礎組件、事件系統,可以構建出頁面的結構;

  • .wxss 是一套樣式語言,用于描述 WXML 的組件樣式;

  • .json 頁面配置按照『約定優于配置』的原則。

接下來我們先找到本機微信開發者工具應用包里面如圖

我們后面分析的主要代碼都在 package.nw 里面和 core.wxvpkg。

這些文件在后面實現過程中都會使用說明用途的。

  • js 文件里面的內容主要是在頁面和邏輯層的渲染用,后面將會看到;

  • core.wxvpkg 是這個里面的核心文件破解這個包可以知道很多邏輯可以先給大家看下解壓后包的結構:

core.wxvpkg 解壓代碼上傳在 unwxvpkg 大家有興趣可以自己先試試。

接下來我們回到開發者工具中打開:

微信開發者工具–》調試–》調試微信開發者工具

打開調試后我們可以看到的界面如下:

從上面的現象我們可以看出他的兩層渲染層和邏輯層結構是包含在兩個 webview 里面

第一個對應的 webview 是渲染層的每個頁面都對應一個地址

但邏輯層 appservice 只有一個不變的

下來我們可以看看這個 webview 里面是個什么東

如果我們直接把 view 層的 webview 標簽改成 iframe 的話

可以看到微信就直接不在里面展示給你頁面白屏了

如果你更改 appservice 的 webview 的話微信還會給你各種 alert 彈框,反正應該就是不想讓你分析他的代碼

點擊確定消都消不了只能重新重啟編譯了 有點小惡心啊

居然不讓我們正大光明的看,那我們只能搞一些旁門左道來破壞了

我們第一步還是打開:微信開發者工具–》調試–》調試微信開發者工具

在控制臺輸入

 復制代碼

document.getElementsByTagName('webview')

可以看到對應的有 4 個 webview, 我們先要關注的是第一個 webview 因為你點開可以發現第一個對應的就是渲染層的 webview

后面的幾個可以先不關注,后續我們會詳解

然后我們執行命令打開第一個 webview:

 復制代碼

document.getElementsByTagName('webview')[0].showDevTools(true,null)

可以看到如圖

現在我們就可以看到微信頁面渲染層的頁面結構了

(這里說明下本篇文章中文件里面的內容每一個文件的來源和用途,我都會在后續章節中講解出來 因為里面涉及的內容過多 我怕放在一篇文章里會太長大家看了會厭煩,所以我會分為幾篇來說明,后面的 appservice 和 一些基礎包和 WAWebview.js WAService.js 以及使用的同步 api 和請求在頁面的 appservice.js 等等,在本篇中只會簡單描述出來 不做過多講解,后續會逐步更新)

上面的 webview 可以找到對應的頁面層的結構,那么 appservice 要怎么找到呢?

其實最簡單的我們直接在首頁里面的控制臺打 document 就可以直接看到展示的邏輯層代碼

(我的做法是從寫了微信的 alert 和基礎庫的一些文件都可以看到這個結構)

注意點在微信小游戲里面微信重寫了 window 和 document 對象 所以不能直接按照我們平常操作頁面那樣使用

接下面我們看下微信小程序的基礎庫庫文件

方法是我們在首頁控制臺里面輸入 openVendor()

我們可以看到彈出的文件系統,這里面對應的就是你選擇本地的

詳情 ==》調試基礎庫 ==》選擇基礎庫版本

  • .wxvpkg 文件就是每個基礎庫版本的包我們,解壓這個包我們可以看到他的組成;

  • wcc 可執行程序,用于將 wxml 轉為 view 模塊使用的 js;

  • wcsc 可執行程序,用于將 wxss 轉為 view 模塊使用的 css。

.wxvpkg 包里面這個基礎庫文件的 WAWebview.js 和 WAService.js,對應這兩個 webview 里面的 js 引用你可以仔細觀察下.wxvpkg 文件解包后的格式:

解壓.wxvpkg 格式包的代碼地址 github

對于 wcc 和 wcsc 源碼現在沒必要去研究他,但我們可以通過腳本劫持方法可以看到他運行了什么命令操作

這里告訴大家一個方法劫持他的運行命令

找到微信開發者工具 wcc 和 wcsc 的地方然后新建兩個同名的腳本,然后把原文件從命名,然后重啟微信開發者工具 一定要重啟不然不生效

wcc wcsca 劫持腳本代碼地址 github

然后我們到首頁控制臺還是輸入 openVendor() 可以看到輸出的文件

從上面這個圖就可以看出下面這個圖里面我們可以認知到一些信息

  • 首次加載的時候 wcc 執行了 -ds -d - xc…和 -ds -d - cc…結構的命令可以看到微信首次把所有.wxml 都執行了

  • 可以看到參數里面有個數字其實他對應的有幾種.wxml 文件形式向只存在.wxml 和自定義組件等一些格式他是沒計算在內的

  • -xc -cc 其實對應就是下面圖兩個邏輯層和渲染層里面的 js 方式

  • 我發現當我們修改一個.wxml 里面一點改動的時候,微信又會全部從新編譯執行這些命令很耗時這點其實可以改進的。

  • 另一個微信開發者工具感覺做的不友好的地方是大于 500KB 的 javascript 文件不做給你做 es6 轉換和壓縮,就算你設置了微信也不會給你轉,可以在 source 里面的資源可以看出。

wcc 執行的命令最終生成的就是邏輯層和渲染層的 $gwxc() 方法里面的 js 代碼,大家可以自己手動測試下就會發現。

wxss 生成的主要是渲染層 eval() 這一坨代碼

本篇只是簡單描述了一些關鍵文件的描述。

后面我會對關鍵文件進行一一分析描述下他具體做了什么,為什么用到它。

下一篇會給大家帶來渲染層和邏輯層的具體頁面文件內容結構解析,以及 webstock 通信架構在微信開發者工具里面的運用,可以先給大家看下。


成人免费毛片糖心 | 亚洲欧美bt| 欧美性猛交xxxx乱大交蜜桃 | 动漫av在线播放 | 91在线无精精品一区二区 | 天天天色综合 | 中文字幕制服丝袜 | 无码一区二区三区在线 | 妺妺窝人体色www婷婷 | 日本一区二区精品 | 性生活视屏 | 韩毛片 | 国产高清视频在线 | 岛国av一区二区三区 | 可以看的av网站 | 双性皇帝高h喷汁呻吟 | 农村妇女毛片精品久久久 | 国内精品久久久久久久久久久 | 免费三级黄色 | 成人ay | 蝌蚪自拍网站 | 麻豆亚洲精品 | 男女无遮挡网站 | 国产乱强伦一区二区三区 | 大片视频免费观看视频 | 77久久| 天天摸天天舔天天操 | 亚洲国产成人一区 | 少妇厨房愉情理伦bd在线观看 | 国产精品变态另类虐交 | 熟妇高潮精品一区二区三区 | 一级黄色片免费看 | 95在线视频 | 大陆明星乱淫(高h)小说 | 中文字幕亚洲成人 | 中文字幕成人在线视频 | 天海翼视频在线观看 | 日韩视频在线观看二区 | 非洲黑寡妇性猛交视频 | 国产视频三级 | 青青草激情视频 | 天天射天天干天天操 | 18禁裸乳无遮挡啪啪无码免费 | 人妻熟女一区二区aⅴ水 | 在线视频综合网 | 综合五月天 | 欧美日韩 一区二区三区 | 野外性满足hd | 黄色长视频 | av最新网址 | 久久久极品 | 免费一级a毛片 | www.玖玖玖 | 日本做受| 五月涩| 一级黄色电影片 | 日韩欧美国产网站 | 激情视频在线观看免费 | 久爱精品 | 色呦呦视频在线观看 | 色多多污 | 小视频免费在线观看 | 欧美成人三级在线视频 | 黄色在线观看国产 | 精品人妻一区二区三区日产 | 激情综合丁香五月 | 国产精品99无码一区二区 | 欧美黑人性生活 | 芒果视频在线观看免费 | 超碰97国产| 亚洲 在线| 成人网页在线观看 | 国产成人无码一二三区视频 | 午夜99| 亚洲精品国产精品乱码不99 | 羞羞答答一区 | 强开小嫩苞一区二区三区网站 | 丁香花在线影院观看在线播放 | 欧美黄色三级视频 | 一区二区高清在线 | 午夜爱爱网站 | 欧美另类色图 | 性生活视屏 | 国产伦精品一区二区三区妓女 | 国产在线观看免费视频今夜 | 日本少妇激情视频 | 国产一区二区在线精品 | 91久久精品国产91久久 | 中文在线a√在线 | 精射女上司 | 精品国产一区二区三区久久久久久 | 久久免费播放 | 国产女教师bbwbbwbbw | 欧美黄色录像 | 欧美日韩综合在线 | 中文字幕免费高清在线 | 免费在线观看av网站 | 日日夜夜狠 | 亚洲天堂网站在线 | 黄色中文字幕 | 色噜噜日韩精品欧美一区二区 | 亚洲国产精品一区二区三区 | 69视频网站 | 日本在线一区二区三区 | 麻豆精品视频在线 | 日韩啪| 亚洲天堂久 | 国产在线xxxx | 欧美 日韩 国产 成人 在线 | 国产在线观 | 特黄做受又粗又大又硬老头 | 丰满人妻妇伦又伦精品国产 | 亚洲av日韩av高潮潮喷无码 | 少妇4p | 91大奶| 一级精品毛片 | 亚洲中文字幕一区二区在线观看 | 亚洲美女激情视频 | 亚洲午夜精品久久久 | 一区二区男女 | 成年人三级视频 | 黄页网站免费在线观看 | 欧美挤奶吃奶水xxxxx | 性一交一乱一色一免费无遮挡 | 91视频h| 91亚洲一区二区三区 | 麻豆网站入口 | 在线免费国产 | 婷婷伊人久久 | 五月婷婷婷婷 | 中文av在线播放 | 天躁夜夜躁狼狠躁 | 闫嫩的18sex少妇hd | 91视频网址 | 一区二区三区四区在线视频 | 成人欧美一区二区三区在线播放 | 色又黄又爽 | 日韩avwww | 免费观看一区二区三区毛片 | 日韩啪啪网 | jzzjzz日本丰满成熟少妇 | 五月激情婷婷在线 | 国产精品日韩欧美大师 | 色婷婷av在线 | 亚洲经典视频在线观看 | 91精品在线免费观看 | 国产精品美女一区二区 | 三级在线看中文字幕完整版 | 伊人黄色片 | 超碰97人人爱 | 天天色天天综合 | 国产初高中真实精品视频 | 日本一区二区视频在线播放 | 亚洲四区| 日韩偷拍一区 | 久久精品无码专区免费 | 免费啪啪网 | 久久五月视频 | 国产免费小视频 | 精品国产av无码 | 天海翼一区二区三区 | 色男人网 | 欧美综合图区 | 日韩国产激情 | 18禁一区二区三区 | 男女激情实录 | 婷婷视频在线 | 中国性xxx | 国产手机在线观看 | 精品久久久久久无码中文野结衣 | 美国美女群体交乱 | 中文字字幕在线中文乱码电影 | 成人永久免费视频 | 成人亚洲综合 | 在线观看免费观看在线 | 亚洲最大的成人网 | 手机看片福利永久 | 成年人激情网 | 黄色片免费 | 激情综合网婷婷 | 美女试爆场恐怖电影在线观看 | 韩国av不卡| 好大好爽好舒服 | 97精品久久久 | 91视频成人 | 日本黄色免费观看 | 搞中出 | 韩国三级中文字幕hd久久精品 | 三年大全国语中文版免费播放 | 亚洲国产精 | 在线视频精品一区 | 中文字幕在线观看高清 | 少妇一级淫片免费放2 | 欧美熟妇另类久久久久久不卡 | 国产黄频 | 狠狠爱免费视频 | 亚洲国产天堂 | 成人av中文字幕 | 亚洲国产精品成人综合久久久 | 亚洲精品国产熟女久久久 | 久久女人天堂 | 黄色片不卡 | 日韩免费视频一区二区 | 成人免费黄色小视频 | 性色视频在线观看 | 亚洲精品v日韩精品 | 一区二区日韩视频 | 色久网| 亚洲 欧美 日韩系列 | 最新精品国产 | 夜夜爽夜夜爽 | 伊人久久中文 | 亚洲精品一二三区 | 久久精久久 | 黄色免费网站 | 成人片黄网站久久久免费 | 久久98 | 日韩人妻无码精品综合区 | 日韩av专区片 | 神马午夜在线观看 | 国产精品久久久久久久久免费 | 日韩高清毛片 | 少妇专区 | 黄色一区二区三区 | 一区影视 | 国产成人精品一区二区三区福利 | 日韩专区一区 | 国产精品最新 | 黄色在线观看免费视频 | missav|免费高清av在线看 | 午夜天堂视频 | 亚洲国产伊人 | 欧美少妇一区二区三区 | 激情a | 糖心av| 四虎影院在线观看免费 | 亚洲国产乱 | 欧美性做爰大片免费 | 日本一区二区三区精品视频 | 超碰97在线人人 | 天天谢天天干 | 午夜资源网 | 一级片视频免费观看 | 成人综合激情 | 名校风暴在线观看免费高清完整 | 日韩操 | 欧美日韩亚洲一区二区三区 | 欧美一区二区免费视频 | 亚洲第一大网站 | 蜜臀久久| 秋霞网一区二区 | 亚洲区精品 | 人人看人人草 | 日本肉体xxxⅹ裸体交 | 国产精品久久久久久久久久久久久久久久久 | 色综合一区二区 | 男人天堂你懂的 | av在线片| 国产精品久久久久久久久久久久久久 | 北条麻妃一区二区三区 | 午夜免费福利网站 | 99热r | 国产精品又黄又爽又色无遮挡 | 黄片毛片视频 | 久久久久国产精品区片区无码 | 午夜激情电影院 | 69性视频 | 国产精品视频全国免费观看 | 亚洲婷婷av | 色呦在线 | 女人私密又肥又大 | 自拍亚洲一区 | 97超碰色 | 亚洲又粗又长 | 精品人妻无码一区二区 | 精品国产va久久久久久久 | 日本中文字幕第一页 | a级黄色小说 | 奇米第四色影视 | 美腿丝袜亚洲综合 | 精品人妻av一区二区 | 一对一色视频聊天a | 欧美成综合 | 久久久久国产精品 | 成年人在线免费观看网站 | 色呦呦在线看 | 欧美乱大交xxxxx潮喷l头像 | 免费三级大片 | 欧美裸体xxxx极品少妇 | 久操视频在线观看免费 | www.国产黄色| 欧美精品一区二区三区久久久竹菊 | 波多野结衣在线 | 午夜精品一区二区三区在线观看 | 深夜福利一区 | 国产成人aa | 免费天堂av | 欧美成片vs欧美 | 一区二区三区四区中文字幕 | 人妻激情偷乱视频一区二区三区 | 亚洲精品资源在线 | 污网站在线免费看 | 91jk制服白丝超短裙大长腿 | 网址在线观看你懂的 | 午夜吃瓜| 中国极品少妇xxxx做受 | 91在线免费视频观看 | 午夜精品一二三区 | y11111少妇 | 91亚洲精品久久久蜜桃 | 欧美变态口味重另类在线视频 | 美日韩一二三区 | 嫩模啪啪| 97人妻人人揉人人躁人人 | 男人用嘴添女人下身免费视频 | 艳妇臀荡乳欲伦交换在线看 | 欧美一级免费看 | 国产成人av网站 | 毛片在哪看 | 美女屁股眼视频免费 | 97在线播放免费观看 | 精品美女在线观看 | 日韩二级片 | 丝袜视频在线观看 | 日韩在线亚洲 | 亚洲福利社区 | 91精品一区二区三区在线观看 | 色欲无码人妻久久精品 | 欧美日本在线视频 | 丝袜脚交国产在线观看 | 麻豆免费在线观看 | 欧美精品久久 | 久久中文字幕国产 | 欧美又大粗又爽又黄大片视频 | 91尤物视频在线观看 | 亚洲日本欧美 | 国产在线激情 | 一道本在线观看视频 | 成人av男人的天堂 | 日本一区二区三区免费电影 | 欧美999| 精品一区二区在线视频 | 亚洲大色网 | 久久婷婷五月国产色综合激情 |