欧美91精品国产自产I国产精品免费麻豆入口I国产99久久久国产精品免费看I国产一区网I黄色在线成人I2019天天干夜夜操I久草91视频I91福利专区

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 通信架構在微信開發者工具里面的運用,可以先給大家看下。


www.youjizz.com在线| 天堂影视av | 免费一级特黄 | 男裸体无遮挡网站 | 99在线小视频 | 国产做受高潮漫动 | 操操操免费视频 | 成人自拍视频在线 | 欧美日韩国产麻豆 | 色婷婷综合激情 | 18禁网站免费无遮挡无码中文 | 久久91| 日本精品一二三 | 欧洲亚洲另类 | 18禁裸男晨勃露j毛免费观看 | 99久久亚洲精品 | av我不卡 | 国内久久久久 | 国产精品ww | 国产精品一区二区在线播放 | 国产欧美一区二区三区在线看蜜臀 | 高清国产在线 | 中文字幕二区在线观看 | 99久久久久成人国产免费 | 青青青草视频在线 | 国产999精品视频 | 久久一级电影 | 成人性生交大片免费看vrv66 | 日本欧美一区二区 | 国偷自产av一区二区三区 | 在线观看黄色国产 | 欧美日韩中日 | 久久国产精品精品国产色婷婷 | 有码中文 | 色综合天天综合 | 女人床技48动态图 | 国产欧美亚洲一区二区 | 亚洲福利一区二区 | 毛利兰被扒开腿做同人漫画 | 在线日韩免费 | 国产suv精品一区二区6 | 黄色1级片 | 午夜毛片电影 | 人人超碰人人 | 中文字幕二区在线观看 | 欧美激情免费观看 | 色多多视频网站 | 天天想你在线观看完整版高清 | 天天爽夜夜| 一区二区三区视频 | 久久久国产精华液 | 一区二区三区免费毛片 | 色综合91 | 亚洲第四页 | 毛片国产精品 | 国产成人在线播放视频 | 日韩午夜精品视频 | 欧美黄一级| 丁香久久| 青春草久久 | 亚洲欧美日韩在线一区二区 | 国产精品二区视频 | 女人张开腿让男人插 | 亚洲伊人影院 | a黄色片| av夜夜 | 综合色播 | 成人禁污污啪啪入口 | 91情侣在线| 久久亚洲一区二区三区四区 | 欧美激情黑白配 | 伊人网av在线 | 秋霞一区二区三区 | 国内自拍小视频 | 欧美日韩亚洲激情 | 国产精品国产a级 | 狠狠干快播| 超碰资源 | 操综合| 奇米四色在线视频 | 精品国产乱码久久久久久鸭王1 | 国产爽爽爽 | 武林美妇肉伦娇喘呻吟 | 国产欧美久久久精品免费 | 精品视频无码一区二区三区 | 噜噜噜噜私人影院 | 26uuu欧美日本 | 亚洲国产精一区二区三区性色 | 强乱中文字幕av一区乱码 | 精品少妇久久久 | 日韩三区视频 | 99久久精品无码一区二区毛片 | 午夜xxxxx| 8x8ⅹ国产精品一区二区 | 在线免费观看黄网 | 亚洲成a人片777777久久 | 自拍偷拍综合 | 很黄的网站在线观看 | 99久久久国产精品无码免费 | 天天插夜夜 | 男生和女生一起差差差很痛的视频 | 黄色片免费在线 | 午夜一级视频 | 自拍视频啪 | 丝袜av电影| 日本性视频网站 | 国产二三区 | 国产又粗又大又爽视频 | 亚洲射 | 欧美大片一区二区三区 | 婷婷午夜精品久久久久久性色av | 天天爽夜夜爽一区二区三区 | 欧美bbbbb| 日本成人精品 | 亚洲综合中文字幕在线 | 国产乱码精品一区二区三区五月婷 | 国产毛片视频 | 亚洲色图40p| 天天想你在线观看完整版高清 | 国产99久久久久久免费看 | av中文字幕免费 | 岛国av网址| 91精品久久久久久久久久久 | 亚洲在线国产 | 国产成人精品一区二区色戒 | 日韩国产成人在线 | 国产做受91 | 四季av在线一区二区三区 | 黄色av片三级三级三级免费看 | 亚洲xxxx视频 | 91精品视频免费看 | 国产亚洲第一页 | 91传媒在线视频 | 蜜桃一区二区 | 97精品国产97久久久久久春色 | 99热热热| 国产福利精品在线观看 | 中文字幕23 | 99riav3国产精品视频 | 天天摸天天爽 | 好吊妞视频在线 | 欧洲三级视频 | 舐丝袜脚视频丨vk | 捆绑japanhdxxxxvideos| 国产精品国产精品国产专区 | 欧洲色区| 激情国产精品 | 9色视频 | 在线视频中文字幕 | 青青草亚洲 | sm调教羞耻姿势图片 | 久久久久婷婷 | 奇米影视888| 青青草手机在线观看 | 一本色道综合久久欧美日韩精品 | 日韩激情久久 | 真实的国产乱xxxx在线91 | 成年人免费观看视频网站 | 欧美黑人一级爽快片淫片高清 | 亚洲激情成人网 | 免费网站成人 | 国产av无码专区亚洲精品 | 亚洲精品视频中文字幕 | 青青草社区 | 不卡日韩| 午夜在线观看视频网站 | 翔田千里x88aⅴ | 亚洲欧美在线视频观看 | 色免费看 | 色悠悠网 | 人人看人人射 | 一起草av在线 | 在线视频1卡二卡三卡 | 国产天堂视频 | 亚洲精品无码久久久久久久 | 国产精品日韩一区二区三区 | 91视频免费在观看 | 日本不卡视频一区二区三区 | 最近日韩免费视频 | 日韩精品一区二区三区视频 | 欧美日韩视频无码一区二区三 | 黄色三级视屏 | 欧美精品国产 | 一级黄大片| 欧美日韩中文视频 | 日韩欧美手机在线 | 天堂色网 | 日本猛少妇色xxxxx猛叫 | 国产欧美日韩精品一区二区三区 | www.香蕉.com | 日本在线视频一区 | 日本丰满大乳奶做爰 | 天天操天天碰 | 国产碰碰 | 天天操穴| 苍井空浴缸大战猛男120分钟 | 99久久国产综合 | 成人拍拍 | wwwwww国产 | 亚洲一区欧美一区 | 天天干天天插 | 蜜桃无码一区二区三区 | 亚洲国产成人精品女人 | 国模无码视频一区二区三区 | 日韩亚洲精品中文字幕 | 4438x五月天 国产精品玖玖玖 | 亚洲精品视 | 合欢视频污 | 在线亚洲人成电影网站色www | 精品一区二区三区欧美 | 成年人免费看 | 欧美123区 | 久久久综合色 | 人妻丰满熟妇aⅴ无码 | 久久一视频 | 在线视频观看一区 | 免费男女乱淫真视频免费播放 | 在线亚洲综合 | 国产精品一区二区三区在线免费观看 | 全黄一级片 | 日韩激情一区二区三区 | 日日夜夜操操 | 国产一伦一伦一伦 | 亚洲视频四区 | 神马午夜久久 | 97久久人国产精品婷婷 | 夜夜爽影院 | 天天操女人 | 超碰免费97 | 久久亚洲综合国产精品99麻豆精品福利 | 亚洲19p| 韩国成人免费视频 | 女王人厕视频2ⅴk | 夜夜撸网站 | 日韩h在线 | 182在线视频| 日本变态折磨凌虐bdsm在线 | 有码在线播放 | 日韩久久高清 | 欧洲美女粗暴牲交免费观看 | 亚洲国产欧洲 | 无人码人妻一区二区三区免费 | 成人特级毛片69免费观看 | 亚洲自拍色| 成人黄色激情视频 | 中文字幕免费高清视频 | 俄罗斯av片 | 少妇被狂c下部羞羞漫画 | 九一福利视频 | 日韩精品视频中文字幕 | 日韩色网| 中文字幕一二三四 | 在线色图| 亚洲人成人网 | 男女午夜视频在线观看 | 97人人视频 | 曰本黄色片 | www毛片com| 粉嫩av蜜桃av蜜臀av | 亚洲色图导航 | 免费国产精品视频 | 色99色| 91欧美一区二区三区 | 天堂男人在线 | 38在线视频| yy4138理论片动漫理论片 | 日本少妇激三级做爰在线 | 亚洲风情亚aⅴ在线发布 | 久久精品日韩 | 成人啪啪18免费游戏链接 | 日韩天堂在线观看 | 俺也来俺也去俺也射 | 男女猛烈无遮挡 | 欧美日韩黄 | 午夜亚洲AV永久无码精品蜜芽 | 夜夜骚视频 | 国产aⅴ爽av久久久久成人 | 综合伊人久久 | www.av在线免费观看 | 亚洲人精品午夜射精日韩 | 亚洲欧洲中文字幕 | 中文精品无码中文字幕无码专区 | 久久久欧洲 | 亚洲污片 | 欧美三日本三级少妇99 | 成人午夜视频在线播放 | 国产色图片 | 荫蒂被男人添免费视频 | 国产精品久久久久9999 | 高清二区 | 97欧美 | 99re这里| 操女人视频网站 | 黄色aa视频| www.com亚洲| 娇妻被老王脔到高潮失禁视频 | 精品久久人妻av中文字幕 | 激情网综合 | 欧美va天堂| 日韩片在线 | 成人精品在线播放 | 精品成人18 | 三上悠亚三级 | 午夜精品视频在线 | 国产高清在线免费 | 日韩av一区二区三区在线观看 | 中文幕无线码中文字蜜桃 | 中国性猛交 | 久久久久女人精品毛片九一 | 夜间福利在线 | 黄色动漫免费在线观看 | 蜜桃av一区二区三区 | 国产在线免费视频 | 国产精品大全 | 开心黄色网 | 午夜www| 国产黄色大全 | 天天综合色网 | 国产精品wwww | 在线中文字幕亚洲 | 欧美日本亚洲 | 一区二区三区四区在线观看视频 | 国产福利资源在线 | 成人 黄 色 免费播放 | 日本福利在线观看 | 欧美人妻精品一区二区免费看 | 精品人妻一区二区三区在线视频 | 亚洲狼人综合 | 男女啪啪十八 | 黄色一级视频免费看 | 少妇精品视频一区二区 | 黑人性高潮 | 最新激情网站 | 日韩欧美视频在线 | 成年人午夜免费视频 | 高清视频在线播放 | 欧美熟妇激情一区二区三区 | 久久国内视频 | 国产精品国产三级国产专播精品人 | 不卡福利视频 | 尤果网福利视频在线观看 | 原创av| 一级全黄裸体免费视频 | 天天插天天搞 |