這篇文章將圍繞下面幾個方面:javascript
從開發模式(過程)上對比Android和小程序,比較兩種」模式」的異同css
從實現功能上對比,主要是看看微信小程序的侷限html
本身的一些見解,微信的優點前端
開發過程上的對比java
在我看來,開發一款app,須要作的主要是界面佈局以及交互處理,而後是後面的業務邏輯處理。雖然平臺不一樣,可是任務都是趨同的。下面從這兩個大的方面進行對比一下。web
小程序json
微信把這個小程序框架稱爲「MINA」,並聲稱:小程序
MINA(MINA IS NOT APP) 是在微信中開發小程序的框架。微信小程序
MINA的目標是經過儘量簡單、高效的方式讓開發者能夠在微信中開發具備原生APP體驗的服務。api
MINA提供了本身的視圖層描述語言WXML和WXSS,以及基於JavaScript的邏輯層框架,並在視圖層與邏輯層間提供了數據傳輸和事件系統,可讓開發者能夠方便的聚焦於數據與邏輯上。
我的以爲第三點說得特別好。大概說清楚了開發者要幹什麼。大概就是以寫Web的方式寫好前端,而後經過雙向數據綁定技術和業務端交互,業務端經過javascript代碼實現業務處理,必要時調用微信接口完成一些處理。
一些生命週期函數
這裏所說的生命週期函數是指的整個應用以及每一個頁面的聲明周期函數,在Android中,對應着App、Activity類,而在小程序中,對應着App和Page兩個函數對象(注意,javascript是基於原型和構造器的,而java是基於類的,因此這裏就形成了一些寫法的不一樣)。以App爲例,下面是一個代碼實例:
App({ onLaunch: function () { console.log('App Launch') }, onShow: function () { console.log('App Show') }, onHide: function () { console.log('App Hide') } })
每一個小程序起起來時就會有一個App實例,同理每一個頁面打開也會有一個Page實例(這個連接打開往下滑還有生命週期函數的圖解),咱們只須要在這個實例中添加本身的邏輯便可,惟一不一樣的是這是在javascript這種語言上寫的(java和javascript的區別就像是雷鋒和雷峯塔,因此這裏形式上的不一樣仍是蠻大的)。
視圖層代碼
前面說了,寫視圖層的體驗有點像Web前端,主要是寫多了Android,習慣性地會把界面的樣式以及交互放在一起寫(事實上就是你在xml上作的工做),而在Web端,須要html和css文件來共同完成。在小程序裏面,對應的是WXML(WeiXin Markup Language)和WXSS(WeiXin Style Sheets),注意雖然模式和web很像,可是在形式上算是微信本身開發的一套(因此你須要使用他們本身的標籤)。具體來說,你須要作兩件事:
在WXML中經過組件(微信所提供的標籤)構建頁面結構,而且在其中完成數據綁定和事件綁定
在WXSS中完成樣式的定義,用以控制WXML中組件的樣式。WXSS具備CSS大部分特性,同時也有部分擴充。
基本上,視圖層很像在寫Web端。不過你也看到了,和Android比起來,限制因素在於微信給你提供了組件,而後你最多改改樣式,更多的像自定義組件什麼的就不可能了。
邏輯層代碼
不一樣於Android有一堆的組件(Activity、Service..)來支撐邏輯層,小程序就一個Page()函數(相似與App()函數,在框架裏面填邏輯),因此顯得很簡單。基本上,數據經過雙向綁定進行傳遞和刷新的,而後在page內能夠完成一些交互處理,更多的能力(訪問網絡、存儲)是經過微信的API完成的,這些api以wx.開頭,目前來看,不是太多,因此能夠很快看完,固然也意味着其實能夠完成的工做還着實有限,這個後面說。
工程組織
總體來講,小程序的工程組織仍是蠻清晰的,MINA程序包含一個描述總體程序的app和多個描述各自頁面的page,一個MINA程序主體部分由三個文件組成,必須放在項目的根目錄,是app.js,app.json,app.wxss,分別用做生命週期函數、配置文件和樣式文件,一個MINA頁面由四個文件組成,是.js,.wxml,.json,.wxss,分別用做生命週期函數、佈局文件、配置文件和樣式文件,他們須要經過同名且放在同名文件夾下(方便框架經過名字路由)。比起Android來,套路應該是固定而簡單得多。
Android
再回頭看看Android開發,忽然以爲能夠玩的簡直是太多了…下面簡單描述一下,確定是不全的。
一些生命週期函數
App、Activity是確定的,其實套路和小程序仍是差很少的。只不過組織形式是類而不是函數對象。以前說了,這是由於Js和Java語言特性形成的。
視圖層代碼
一般來說,Android的界面在.xml文件中定義,其實仔細想一想就會發現,在文件中,咱們是同時定義了佈局,和交互邏輯的,這是由於本質上這些.xml聲明都是View類的子類,咱們經過重寫View的聲明週期方法來完成了對齊的樣式(onDraw以及LaoutParams)、以及交互的定義(各類on..listener)。因此在.xml中更像是對這些對象進行一系列實例化。至於雙向數據綁定,Android也開始支持了
邏輯層代碼
這一層仍是要複雜得多..放到後面對比來講吧。
工程組織
…..不想說了,一方面寫法多,一方面相對於小程序也蠻複雜的。
下篇內容(待續)
從實現功能上對比,主要是看看微信小程序的侷限
本身的一些見解,微信的優點
「H5程序俱樂部」是一個專一微信小程序學習交流的微信公衆號
天天發佈微信小程序設計/開發/運維知識,小程序最新資訊
「H5程序俱樂部」微信號:wxappclub 或者 微信掃一掃關注