從技術角度分析微信小程序開發(fā)(微信小程序的技術可行性分析)
本篇文章給大家談談從技術角度分析微信小程序開發(fā),以及微信小程序的技術可行性分析對應的知識點,希望對各位有所幫助,不要忘了收藏本站喔。
寫給Android開發(fā)者看的『微信小程序和Android開發(fā)的對比』
微信小程序近期可謂是動作頻出,僅最近新增的能力就有:
種種跡象表明,微信對小程序的期望值是很大,所以在它推出的幾個月效果沒到達預期的情況下,之前的很多『克制』也就逐漸變成『放肆』了 —— 不過不管小程序以后的發(fā)展到底怎樣,對我們開發(fā)者來發(fā),多了解一些總是沒有壞處的。
他山之石,可以攻玉。
對于是技術人來說,多了解一些不同的技術、不同的開發(fā)模式、不同的架構思想,提高技術『廣度』,對于自己的成長是十分必要的。
所以,本文就是從一個 Android 開發(fā)者的角度,從項目工程方便切入,來分析一下『微信小程序』跟『Android App』開發(fā)上的一些異同。
『微信小程序』開發(fā)是一個相對較新的技術,希望通過本文,能讓你對它多一些了解。
因為內容是從Android開發(fā)的角度來談的,所以我假設你已經對 Android 開發(fā)比較熟悉了。并且對微信小程序的開發(fā)也比較感興趣,如果要是再能有些 javascript、css 的基礎的話那就更好了!
Android 開發(fā)我們已經比較熟悉——
作為對比,進行微信小程序開發(fā)所用的語言是這些——
wxml (WeiXin Markup Language) 基本約等于是 xml。微信之所以沒有直接使用 xml ,可能是為了以后擴展方便一些(野心很大)。
同理, wxss (WeiXin Style Sheets) 基本約等于是 css。也是微信擴展了一些功能,比如統(tǒng)一的尺寸單位 rpx 。
對于 Android 來說,對于頁面的描述基本上在 xml 中定義的,比如:
這是一個簡單的典型的示例,這個文件就是描述了兩部分內容:
some.wxss:
很明顯可以看出:wxml 是負責了 頁面結構 的展示;而 wxss 則負責了對 頁面樣式 的定義。
這種把結構和樣式分離的做法,其實是延續(xù)了網頁開發(fā)中的習慣(html + css)。
這樣做的好處起碼有兩個:
——看起來還是挺簡單的結構:
這三個文件用以描述小程序 app 相關的內容,他們的命名是固定這樣的,位置也固定是在根目錄下。
app.js 基本相當于 Android 中的 Application 類,文件中主要是有一個 App() 函數,來進行小程序的初始化操作。
app.json 的作用跟 Android 中的 AndroidMainifest.xml 文件很相似 —— 都是靜態(tài)化的配置文件。
app.wxss 定義全局的樣式 —— 其定義的樣式會作用于每個頁面。比如在 app.wxss 中加入:
就可以給所有的 text 控件添加 5px 的 padding 。
當然,頁面本身的 xxPage.wxss 可以定義局部樣式來覆蓋全局樣式。
根目錄下的 utils 文件夾中有一個 util.js 文件,這個故名思意,是類似于 Java 中的一些工具類的存在。
utils 文件夾其實是一個非必須的結構,而它之所以出現在官方的 HelloWorld 工程中,是作為一個代表,表明了開發(fā)者在這里是可以自定義新的文件夾和結構的。微信小程序作為一個使用 js 來開發(fā)的平臺,是可以使用許多第三方的 js 庫的,對于這些第三方庫,以及其他的圖片資源等,都可以放到自定義的文件夾中。
pages 文件夾下包含兩個子目錄:index 和 logs ,兩個目錄的結構都是基本一樣的,都是包含四個相同主名稱的文件: xx.js、xx.wxml、xx.json、xx.wxss 這幾個文件。
這樣的一個典型結構表明它是一個小程序的頁面,四個文件的作用分別是:
在視圖的動態(tài)顯示上,微信小程序使用了 數據綁定(data-binding) 的方式。
如果你之前使用過 AngularJS 或者 Vue.js 等這些流行的 js 框架,那么你肯定對 數據綁定 并不陌生。它是一種把一個控件的屬性綁定到某個數據對象(view-model)的屬性的方法,這樣在改變數據對象屬性的時候,所對應的控件屬性也就會相應變化 —— 在開發(fā)中,這種方式會使得對 View 層的顯示控制變得十分簡單、自然。
基于此,軟件工程的流行架構方式也在之前的 MVC 、 MVP 之外,又多了一個 —— MVVM(Model-View-ViewModel) 。
數據綁定 這種方式現在是如此的流行,以致于 Android 官方都出了一個 [Data Binding Library] ( ) 來支持數據綁定,但是由于成熟度等原因,目前還并沒有成為主流,Android 中的主流視圖顯示方式,還是通過開發(fā)者手動給每個控件 set 數據。
—— 單從這一點上看,微信小程序的開發(fā)模式是比原生 Andorid 要『先進』一些的~ ??
小程序雖然是和前端 H5 頁面一樣是用 js 來開發(fā),但是由于它最終運行的平臺不再是瀏覽器,而是和 App 的表現幾無二致,所以頁面的生命周期也是和 App 差不多的。
一個小程序頁面的典型生命周期如下:
對比一下 Android 的 Activity 生命周期 :
微信小程序的頁面生命周期稍微簡單一些,但主要的思想跟 Activity 生命周期基本是一致的。
小程序的官方 IDE 是微信自己出品 微信Web開發(fā)者工具 ,它內置了一個小程序的運行環(huán)境,本質上是基于 Chrome 內核的一個瀏覽器框架,算是一個模擬器了。
——它雖然跟 Android 的各種高大上的模擬器相比起來略顯簡陋,但是基本該有的功能也基本都有(斷點、Log、網絡監(jiān)控等),而且由于是基于瀏覽器內核的頁面 DOM 解析,所以運行的速度也是像瀏覽器打開網頁一樣流暢,不會像 Android 模擬器那樣對系統(tǒng)資源要求很高。
另外,在綁定了開發(fā)者賬號之后,也可以用手機進行真機調試來調試小程序,所以也能在上線前用不同的機器來進行充分的兼容性測試。
總體來說,小程序作為一個新的形態(tài),從開發(fā)的角度,它可以算作是一個【Native開發(fā)】和【H5開發(fā)】的結合,它吸收了原生開發(fā)和 H5 開發(fā)的優(yōu)點。對于前端開發(fā)人員和原生開發(fā)人員來說,都可以在微信小程序中找到許多熟悉的東西。再細節(jié)的許多點這里就不在贅述了,大家如果有興趣,可以自己上手去體驗一下。
綜上,自然也就有兩種人特別適合去做小程序的開發(fā)——H5的前端開發(fā)人員,以及之前的 Android/iOS 原生 App 開發(fā)者。
微信小程序的開發(fā)總體來說是很簡單的。
—— 對于前端開發(fā)者來說,了解一下原生 App 的一些相關思想即可,這些工作其實只要讀一遍小程序的開發(fā)者指南基本就差不多了。
—— 而對于原生開發(fā)者來說,只要稍微補一下 js 的相關知識(html/css),也基本就差不多可以上手去做了。如果你之前恰好已經有過一些 js 的使用經驗,那就不用多說了,花半個小時看一下小程序的文檔,直接上!
關于作者 :
微信小程序開發(fā)有哪些特點
微信小程序從本質上來說就是一個HTMI5應用
微信雖然用了 HTML5 技術來做小程序,但是它并沒有真正用到 HTML5 的精髓——開放、互聯,也就決定了它可能無法實現“微信OS”的最終野心
小程序的開發(fā)過程會用到大量H5相關的技術,但并不是使用H5開發(fā)。有 HTML5經驗的前端工程師學習微信小程序的開發(fā)相對會更容易一些。微信小程序的運行并不需要一個完整支持H5特性的標準瀏覽器內核,但也可以通過添加一些輔助設施,讓小程序在個完整支持
小程序開發(fā)需要哪些技術
小程序開發(fā)需要用到的技術如下:
1、微信小程序wxml,這個語言的編程理念和html網頁的編程技術是類似的。
2、微信小程序之wxss,就是微信的css。微信把網頁編程里運用的css,換成了自己的開發(fā)語言,wxss,其實主要的實現思想理念也和網頁的開發(fā)技術基本沒什么不同,也是一些標簽的簡單替換,大部分和原先的css、基本不誤。
3、微信小程序之js,如果你想開發(fā)一款微信小程序學會微信小程序的js是必須要精通的。
4、微信小程序之json,簡單來說json就是微信小程序的一門主次的界面,工程師們可以通過json控制上下菜單欄、主次的頁面展示順序,不過用的頻率不高,只是在基本的小程序的框架構架才會應用到。
其實,小程序類似于H5面,提供了視圖層描述語言,需要掌握WXML 和 WXSS 以及基于JavaScript的邏輯層框架,這里wxml相當于html,wxss相當于css。
如何看待微信小程序
最近微信小程序比較火,我趕快在書架上拿出三年前買的書,把上面的土擦干凈,壓壓驚。
作為一個并不是資深的程序員。 從程序員的角度分析一下微信小程序,歡迎指點。
首先吐槽
微信小程序只發(fā)了200個邀請?zhí)?,和我預想的一樣,張小龍并沒有翻我牌,難道就不能雨露均沾嗎?
先來了解下什么是微信小程序。 轉自知乎
微信也許重申了"我們是一款約炮軟件"
微信還提供了一大堆接口和組件(不好意思,說了句廢話)。
下面是禪叔的觀點:
小程序原理就是用JS調用底層native組件,和React Native非常類似。恰恰又證明了,凡是能用JS開發(fā)的最終都會用JS開發(fā)。
證明:凡是能用JS開發(fā)的最終都會用JS開發(fā)
解:
據我多年經驗,這句話是一個真命題。
語言的設計者是有兩個派系的,有些人認為程序員語言應該防止程序員干蠢事,另一些認為程序員應該可以用編程語言干一切他們想干的事。 C/Java語言是前一個陣營的代表, JS是后一個陣營的代表。
往往第一個陣營的語言強調性能, int就是int,double就是double 還第二個陣營就是強調便利性 ,int是var , double還是var。
選擇語言的時候,其實就是在做選擇題。是選擇便利還是選擇性能。
往往新出的語言便利性都很強,是因為硬件性能提高了,從而可以為了便利性放棄性能要求。
編程語言的主要矛盾就是程序開發(fā)的便利性和硬件水平的矛盾。
如果能夠穿越回到70年代(首先在中南海西面買塊地), 那時候你坐在龐大的計算機面前寫代碼的時候,無意間小手一抖,多敲倆空格,然后程序oom。
不要感覺上面的事情不可思議,那時候內存低的可憐,每一個字符都是嚴格定義的,不允許任何浪費。能運行java虛擬機都是天方夜譚,怎么可能會有java語言。
節(jié)儉是一種美德,浪費不一定是壞事情
隨著硬件性能的提高,出現了越來越多的編程語言,新出的語言往往性能上浪費,便利性上提高。要是按照幾十年前的標準衡量,有一些使用新語言開發(fā)的熱門應用程序對硬件資源浪費非常驚人。
不僅編程語言有這種現象,這實際是一種普遍的歷史趨勢, 隨著技術的發(fā)展,每一代人都在做上一代人覺得浪費的事情。你可以想象下30年前打個長途電話,而現在,別說長途電話了, 有的人都就坐飛機去約炮了,這個在以前很難想象。
浪費可以分成好的浪費和壞的浪費。用更多的浪費換來簡單的設計,并不是什么壞事。
如何才能充分利用新硬件更強大的性能最有利地“浪費”他們?
這時候問題就回到了開始, 證明:凡是能用JS開發(fā)的最終都會用JS開發(fā)
JS這種語言擴展性極強, 性能比起其它語言只能呵呵了。 但是硬件速度會提高很快。
Paul Graham算過,如果摩爾定律一直成立。一百年后計算機的運行速度是現在的74乘以10的18次方倍。(準確地說是73 786 976 294 838 206 464倍)
終有一天,你會在選擇的時候忽略性能,選擇便利性。
以前上學的時候,經常去網吧玩大話西游和傳奇。而現在隨便一個頁游就能做出這種游戲效果。10年前你很難想象在網頁上能玩這種游戲。
你現在就可以嘗試想象一下若干年后,打開網頁能玩魔獸世界。這并不是不可能實現的。
強調性能的語言還能否生存
我們都知道C/C++ 就是強調性能的語言, 我們做游戲或者視頻播放的都是要求性能的。他們會不會被新的語言取代呢?
我可以鄭重證明,不會的。
雖然上面我說的Java語言屬于強調性能的第一陣營的語言。但是相對于C/C++ 它顯然是增強了便利性。
語言是發(fā)展的,是迭代的, 隨著硬件性能提高,基本上每個節(jié)點下都會產生新的語言,相對于之前的語言浪費性能,增強便利性。
但是很難取代之前的語言,對性能要求高的程序依然會出現的, 即使以后可以在網頁上玩魔獸世界,但是還會出現 超級魔獸世界,泰坦世界, 宇宙世界 等等一大堆新的對性能要求較高的游戲。
微信小程序會取代其它APP嗎?
問題回到我們的主題微信小程序上,微信小程序會取代其它APP嗎?
我的觀點很明確,
現在不會取代,以后會,但是以后會出現以后的微信取代不了的;以后的以后會取代以后的,但是以后的以后會出現以后的以后的微信取代不了的 .....
其實也不難解釋,10年前我們不能在網頁上玩?zhèn)髌妫?但是現在可以。但是現在又有了魔獸世界,也許10年后網頁上就能玩了,但那時候肯定還會出現 超級魔獸世界之類的游戲不能在網頁上玩。
作為一個程序員,我們需要學什么?
有的人會擔心,微信小程序出來了, 做Android、iOS開發(fā)的會不會失業(yè)啊。
其實你大可放心,只要你會學習,永遠不會失業(yè),你不學習,就算微信小程序沒有推出你也會失業(yè)。
就目前而言,小程序始終是小,場景有限。還不能完全取代APP , 還可以通過小程序引導用戶下載APP。就像簡書一樣,網頁端能瀏覽不代表不開發(fā)APP軟件。
但是要認清大的趨勢, 這段時間就是用來給你學習的。
具體怎么學?。?/p>
看文檔學習唄, 首先了解JS語法基礎, 了解React Native原理,學習JS , RN,H5,CSS,運營,測試,產品設計規(guī)范,圖形設計,神經網絡,OpenGL.........
總之,根據具體文檔,用到什么學什么。
作為一個程序員,你可以忘了學習的高數,可以忘了學習的英語,可以忘了學習的線性代數.... 但是千萬別忘了學習。
微信小程序平臺開發(fā)需要哪些技術
開發(fā)微信小程序需要用到以下技術:
1、wxml,小程序常用語言為wxml,wxml是微信但是你熟悉wxml之后會發(fā)現其實它的編程理念和HTML的網頁編程比較類似。
2、wxss,wxss更趨向于CSS,wxss,其實主要的實現思想理念也和網頁的開發(fā)技術差別不大,主要是一些標簽的一些簡單替換,大部分和原先的css、基本不誤,都是通過同頁面調用的方式實現的。
3、js,開發(fā)小程序還必須掌握js技術,如果html+css+js的基礎打的好,再來學習一下微信小程序js,之后在前端開發(fā)上就沒有什么問題了。
4、服務器語言,如果不是專業(yè)的后端開發(fā)者,可能后端有一定的難度其學習曲線較陡。但是,仍然建議開發(fā)者學習一下后端語言,至少需要了解大致的原因框架,能夠看懂其代碼邏輯,這樣不僅可以很好地實現前后端的配合,也能夠在小程序出現bug的時候使用。常見的有PHP、Java、Python、ASP等技術。
5、數據庫語言,如果公司數據量不大,架構不復雜的話數據庫語言相對來說是比較簡單的,一般學會一些常用的命令以及常出現的問題就能夠應付使用。常用的數據庫有免費的MySQL、msSQL、MongoDB、Oracle等數據庫。
微信小程序開發(fā)主要用到什么技術
1.前端基礎,如JS、HTML、css
2.一門后臺語言,如PHP、JAVA,后端什么語言都可以,自己定?!军c擊查看小程序開發(fā)底價】
3.學習微信接口文檔如果用到了微信本身相關功能,如支付、分享等功能,加個微信jssdk就可以了。
4.還需要美工,保證制作的小程序有美感。
想要了解更多有關小程序開發(fā)的相關信息,推薦咨詢豬八戒網。豬八戒網成立于2006年,是中國領先的企業(yè)服務平臺,服務交易獨角獸企業(yè)。豬八戒網現有注冊用戶2800萬、在全國布局線下數字化創(chuàng)業(yè)園區(qū)超過100個。十余年來,累計有10萬余個人通過平臺孵化成長為公司,超過100萬人通過平臺實現靈活就業(yè),千萬企業(yè)通過平臺解決專業(yè)服務需求;專業(yè)性值得選擇。
從技術角度分析微信小程序開發(fā)的介紹就聊到這里吧,感謝你花時間閱讀本站內容,更多關于微信小程序的技術可行性分析、從技術角度分析微信小程序開發(fā)的信息別忘了在本站進行查找喔。