「微信小程序」剖析(一):運(yùn)行機(jī)制

在上一篇《微信小程序「官方示例代碼」淺析【上】》中辈讶,我們只是簡(jiǎn)單的羅列了一下代碼,這一篇沪斟,讓我們來(lái)玩點(diǎn)刺激的——就是看看IDE的代碼,了解它是怎么運(yùn)行的.http://www.helloxcx.com/article-8.php

還好微信的開(kāi)發(fā)團(tuán)隊(duì)在軟件工程的實(shí)踐還有待提高,我們才有機(jī)會(huì)可以深入了解他們的代碼——真想建議他們看看Growth的第二部分,構(gòu)建系統(tǒng)。

首先你需要有下面的工具 .hello 小程序

Mac電腦

微信web開(kāi)發(fā)者工具.app

WebStorm / 其他編程器 或 IDE,最好可以支持重命名 

首先墓阀,我們需要右鍵微信web開(kāi)發(fā)者工具.app,然后顯示包的內(nèi)容拓轻,在 Contents/Resources/app.nw下面的內(nèi)容即是我們的代碼斯撮,拷貝出來(lái)啦:

article8-1.jpg

簡(jiǎn)單的說(shuō)明一下:

app/ 目錄下放置了app的代碼

modified_modules/ 即一些修改后的模塊

node_modules/ 地球人都知道

package.json 呵呵,你一定是知道的扶叉,配置了NW相關(guān)的內(nèi)容

在modified_modules目錄下有兩個(gè)子模塊:
modified_modules目錄下有兩個(gè)子模塊:

anyproxy勿锅,從名字就可以看起來(lái)這是一個(gè)代理模塊

weinre帕膜,遠(yuǎn)程調(diào)試工具

我們已經(jīng)知道了這是一個(gè)NodeWebkit封裝的Web應(yīng)用了。

在package.json中的"main": "app/html/index.html",溢十,即定義了這個(gè)APP的入口是這個(gè)index.html垮刹,而不是別的文件。

很順利的我們看到了他們調(diào)用的文件了:

article8-2.jpg

這里面有一個(gè)init方法张弛,看來(lái)他就是NodeWebkit相關(guān)的入口了荒典。用WebStorm的shift + f6RENAME 這些變量好十幾次,終于看到了下面的代碼了:

![article8-4.jpg](http://upload-images.jianshu.io/upload_images/3113151-99cb42d817584c93.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

直接跳轉(zhuǎn)到ContainController.js吞鸭,跳轉(zhuǎn)到render方法寺董,找到了這個(gè):

果然Main里面就是大入口了

article8-5.jpg

對(duì)應(yīng)的就是下面這個(gè)界面了:

article8-6.jpg
edit 就是編輯器及其相關(guān)的事項(xiàng)

detail就是項(xiàng)目的配置

WeAPP運(yùn)行機(jī)制

慢慢的就探索到了打包,其運(yùn)行時(shí)的過(guò)程刻剥。由于我并沒(méi)有拿到內(nèi)測(cè)資格遮咖,所以我只好邊看邊猜測(cè)一下。

在之前的文章中造虏,我們提到了兩點(diǎn)很有意思的東西:wxml和wxss御吞,這兩個(gè)文件會(huì)被分別轉(zhuǎn)換,即wxml -> html漓藕,wxss -> css陶珠。對(duì)應(yīng)的有幾個(gè)不同的transform:

transWxmlToJs

transWxssToCss

transConfigToPf

transWxmlToHtml

transManager

這里的PF指代的是PageFrame的意思,pageFrame有一個(gè)對(duì)應(yīng)的模板文件:

article8-7.jpg

這種風(fēng)格一看就是生成字符串Replace的享钞,然后他們寫(xiě)了一個(gè)名為wcc以及一個(gè)名為wcsc的工具揍诽。

wcc用于轉(zhuǎn)轉(zhuǎn)wxml中的自定義tag為virtual_dom

wcsc,我觀察到的現(xiàn)象是它為轉(zhuǎn)換wxss為css

這樣的話嫩与,我們就可以理解為微信小應(yīng)用有點(diǎn)類(lèi)似于 Virtual Dom + WebView,畢竟上面有個(gè)WAWebView文件 交排,還有一個(gè)webviewSDK文件 划滋。

當(dāng)然無(wú)論是React + WebView,或者Vue + WebView都不重要埃篓,現(xiàn)在有了 WA + WebView了处坪,哈哈。

WeApp采用的是如下圖所示的提交方式架专,所以:

article8-8.jpg

你在本地寫(xiě)的WeApp都會(huì)被提交到微信服務(wù)器同窘,然后打包,上傳到服務(wù)器部脚,交給CDN——畢竟為了分發(fā)想邦。

上傳的過(guò)程大致如下:

APP會(huì)被打包成以日期命名 + .wx文件

IDE會(huì)檢測(cè)包的大小,并提示:代碼包大小為 xx kb委刘,超過(guò)限制 xx kb丧没,請(qǐng)刪除文件后重試鹰椒。這個(gè)xx好像是1024,所以APP的大小是1M呕童。

APP將會(huì)上傳到 https://servicewechat.com/wxa-dev/commitsource/?appid=xx&user-version=&user-desc=xx
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末漆际,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子夺饲,更是在濱河造成了極大的恐慌奸汇,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,997評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件往声,死亡現(xiàn)場(chǎng)離奇詭異擂找,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)烁挟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)婴洼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人撼嗓,你說(shuō)我怎么就攤上這事柬采。” “怎么了且警?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,359評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵粉捻,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我斑芜,道長(zhǎng)肩刃,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,309評(píng)論 1 292
  • 正文 為了忘掉前任杏头,我火速辦了婚禮盈包,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘醇王。我一直安慰自己呢燥,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布寓娩。 她就那樣靜靜地躺著叛氨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪棘伴。 梳的紋絲不亂的頭發(fā)上寞埠,一...
    開(kāi)封第一講書(shū)人閱讀 51,258評(píng)論 1 300
  • 那天,我揣著相機(jī)與錄音焊夸,去河邊找鬼仁连。 笑死,一個(gè)胖子當(dāng)著我的面吹牛阱穗,可吹牛的內(nèi)容都是我干的怖糊。 我是一名探鬼主播帅容,決...
    沈念sama閱讀 40,122評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼伍伤!你這毒婦竟也來(lái)了并徘?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,970評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤扰魂,失蹤者是張志新(化名)和其女友劉穎麦乞,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體劝评,經(jīng)...
    沈念sama閱讀 45,403評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡姐直,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蒋畜。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片声畏。...
    茶點(diǎn)故事閱讀 39,769評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖姻成,靈堂內(nèi)的尸體忽然破棺而出插龄,到底是詐尸還是另有隱情,我是刑警寧澤科展,帶...
    沈念sama閱讀 35,464評(píng)論 5 344
  • 正文 年R本政府宣布均牢,位于F島的核電站,受9級(jí)特大地震影響才睹,放射性物質(zhì)發(fā)生泄漏徘跪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評(píng)論 3 327
  • 文/蒙蒙 一琅攘、第九天 我趴在偏房一處隱蔽的房頂上張望垮庐。 院中可真熱鬧,春花似錦坞琴、人聲如沸哨查。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,705評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)解恰。三九已至锋八,卻和暖如春浙于,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背挟纱。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,848評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工羞酗, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人紊服。 一個(gè)月前我還...
    沈念sama閱讀 47,831評(píng)論 2 370
  • 正文 我出身青樓檀轨,卻偏偏與公主長(zhǎng)得像胸竞,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子参萄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 在上一篇《微信小程序「官方示例代碼」淺析【上】》中卫枝,我們只是簡(jiǎn)單的羅列了一下代碼,這一篇讹挎,讓我們來(lái)玩點(diǎn)刺激的——就...
    phodal閱讀 1,924評(píng)論 0 6
  • WXML WXML(WeiXin Markup Language)是微信的一套標(biāo)簽語(yǔ)言校赤,結(jié)合基礎(chǔ)組件、事件系統(tǒng)筒溃,可...
    許劍鋒閱讀 6,792評(píng)論 3 51
  • 今天女兒放學(xué)回來(lái)很晚马篮,不免有些憂,什么情況怜奖,怎么被留下了浑测?但女兒回家后十分興奮,對(duì)我說(shuō):“爸爸歪玲,我加入科技實(shí)驗(yàn)...
    不知有漢驥無(wú)論魏晉章閱讀 206評(píng)論 2 0
  • 場(chǎng)景說(shuō)明 把中文漢字迁央、轉(zhuǎn)成漢語(yǔ)拼音,包括: 純漢字轉(zhuǎn)拼音 漢字里面加有字母轉(zhuǎn)拼音 轉(zhuǎn)加聲調(diào)的拼音 轉(zhuǎn)用數(shù)字表示聲調(diào)...
    馬拉松Mara閱讀 10,547評(píng)論 1 7
  • 前言: 在春招的時(shí)候读慎,面了幾家企業(yè)漱贱,但是由于不懂的如何如何準(zhǔn)備,基本都以失敗告終夭委。在面試的過(guò)程中幅狮,經(jīng)常遇到的尷尬事...
    clfeng閱讀 232評(píng)論 0 0