前段時間比較流行的微信小程序,因為一直沒有所謂內測碼也沒具體關注。拖到現(xiàn)在正好借組內分享的時機來仔細了解一下微信小程序。了解一個新的事物無外乎從是什么(本質),怎么用(具體用法),為什么用(優(yōu)缺點)來學習,首先分析一下微信小程序是什么,聽起來比較高大上,說實話原來我確實挺疑惑,到底這一套是什么開發(fā)機制,native?hybrid?純h5?看網(wǎng)上各種教程上來就說api說語法,感覺不先理清楚是什么的問題就去搬api過來純粹是耍流氓。

  一、微信小程序是什么:     

  言歸正傳,微信小程序的本質是什么?個人理解微信小程序本質還是一套前端框架,微信團隊基于原來第三方h5頁面在微信里只能通過h5實現(xiàn)原本可以由native實現(xiàn)的功能,例如上傳圖片等。進而采取的開放部分jsbridge的api來方便開發(fā)者。不過既然作為大廠肯定不會僅僅開放部分jsbridge的api就完了,順便微信類似vue、react一樣實現(xiàn)了一套自己的mvvm的框架就是目前的微信小程序。官方文檔這樣描述:框架提供了自己的視圖層描述語言 WXML 和 WXSS,以及基于 JavaScript 的邏輯層框架,并在視圖層與邏輯層間提供了數(shù)據(jù)傳輸和事件系統(tǒng),可以讓開發(fā)者可以方便的聚焦于數(shù)據(jù)與邏輯上。

  本質還是一套前端框架,代碼最終將會打包成一份 JavaScript并在小程序啟動的時候運行,直到小程序銷毀。模版語法類似vue,接近原生的自定義標簽。數(shù)據(jù)綁定和渲染類似vue的語法,不過是以wx:開頭(vue 以v: 作為標識) 事件系統(tǒng)類似react一樣定義了一套自己的事件系統(tǒng)。

  二、微信運行環(huán)境:

  微信小程序運行在三端:iOS、Android 和 用于調試的開發(fā)者工具
  在 iOS 上,小程序的 javascript 代碼是運行在 JavaScriptCore 中
  在 Android 上,小程序的 javascript 代碼是通過 X5 內核來解析
  在 開發(fā)工具上, 小程序的 javascript 代碼是運行在 nwjs(chrome內核) 中
  頁面的腳本邏輯是在JsCore中運行,JsCore是一個沒有窗口對象的環(huán)境,所以不能在腳本中使用window等bom對象。所以類似jquery、zepto等通過window或者document來獲得dom對象的庫是不能用來使用的。

網(wǎng)友評論