[WeChat] 說(shuō)微信小程序


微信小程序在技術(shù)圈里也爆炸了不少天了,但是縱觀公眾號(hào)的各類文檔,似乎高質(zhì)量的文章不多見(jiàn),往往都是官方開(kāi)發(fā)文檔的搬運(yùn)工,缺乏系統(tǒng)性的剖析帖,讓我很是失望?。ù笈K坪醵荚谥醮痤}和寫(xiě)天書(shū))。當(dāng)然,我寫(xiě)這篇文章不是《解密微信小程序》或者《微信小程序完全手冊(cè)》之類標(biāo)題的技術(shù)帖,就是隨便聊聊這個(gè)技術(shù)圈的新寵(順便證明下我也是技術(shù)圈一份子)。

作為一位名不副實(shí)的程序員,見(jiàn)到此類消息的本能反應(yīng)也和廣大碼農(nóng)一樣是莫名有點(diǎn)興奮的,但苦于沒(méi)有內(nèi)測(cè)資格,只能望洋興嘆。轉(zhuǎn)機(jī)來(lái)的太快,第二天就有人在Github上放出了開(kāi)發(fā)工具的破解版和官方Demo程序,而我僅僅是點(diǎn)開(kāi)了網(wǎng)頁(yè),隨后便去喝茶啃瓜、一覺(jué)到天明(名不副實(shí)的程序員就是這樣的)。然而一覺(jué)醒來(lái)發(fā)現(xiàn)又轉(zhuǎn)機(jī)了,官方公開(kāi)了設(shè)計(jì)指南、開(kāi)發(fā)文檔和開(kāi)發(fā)者工具。比起摸索開(kāi)發(fā)者工具和Demo程序,我更喜歡「官方解密文檔」(名不副實(shí)again),于是我也毫不猶豫的在第一時(shí)間入了這坑。

從設(shè)計(jì)指南到開(kāi)發(fā)文再到工具,都讓我感受到了一股蘋(píng)果的作風(fēng),可見(jiàn)微信對(duì)這個(gè)新功能的重視。微信這回是布了個(gè)大局,瞬間從App(程序)晉升為OS(操作系統(tǒng)),這個(gè)一上線即擁有7億用戶的“操作系統(tǒng)”想想也是惹開(kāi)發(fā)者醉啊,因此火爆也是必然的。從內(nèi)測(cè)第一天起技術(shù)圈就掀起了有關(guān)技術(shù)的各種討論,比如「HTML5又火了」、「JavaScript程序員要吃香了」、「前端開(kāi)發(fā)者要漲薪了」……然而總是有少數(shù)神龍見(jiàn)首不見(jiàn)尾的大牛在評(píng)論區(qū)里忍不住顯擺道出天機(jī),我也是一不小心抓住了點(diǎn)大牛的尾巴看到了「Native」和「RN」等奇怪的字母才稍微找到了點(diǎn)方向,摸清了點(diǎn)門(mén)道。下面就來(lái)進(jìn)入正題說(shuō)一說(shuō)這個(gè)微信「小程序」。

關(guān)于設(shè)計(jì)指南

講到設(shè)計(jì)指南就不得不看看業(yè)界標(biāo)桿:谷歌和蘋(píng)果。無(wú)論是《Material Design》還是《iOS Human Interface Guidelines》,對(duì)自身的界面風(fēng)格和細(xì)節(jié)定義都是極其詳細(xì)。一流企業(yè)定規(guī)格,這樣的設(shè)計(jì)指南絕地稱得上一流之作,也確實(shí)給設(shè)計(jì)師和開(kāi)發(fā)者起到了指南的作用。微信小程序的這份「指南」雖說(shuō)沒(méi)有達(dá)到谷歌和蘋(píng)果的高度,但也根據(jù)微信本身的產(chǎn)品理念、界面風(fēng)格和交互方式給出了明確的設(shè)計(jì)思路,給設(shè)計(jì)師和開(kāi)發(fā)者指明了方向。

由于這份指南內(nèi)容比較簡(jiǎn)要,我也分分鐘就看完了。鑒于之前已經(jīng)看過(guò)《iOS Human Interface Guidlines》,除了這次用的是中文省了我很多時(shí)間外,關(guān)于交互設(shè)計(jì)方面倒是沒(méi)啥新意,這份文檔更趨向于是給程序員看的,設(shè)計(jì)師看了也許會(huì)很不屑。我認(rèn)為這份文檔最具價(jià)值的信息大概就是闡明了「小程序」可以之于微信的界面中而擁有高于微信的設(shè)計(jì)。意思就是有些元素固定這樣了,微信不讓你動(dòng)所以你動(dòng)不了,但是又給了你修改配色之類的具體界面參數(shù)的能力,用于統(tǒng)一「小程序」自身的風(fēng)格。

然而我并不是設(shè)計(jì)圈的人,只能從程序員的角度一表拙見(jiàn)。這份設(shè)計(jì)指南更大意義上是讓微信這個(gè)生態(tài)更加完善了,也讓很多脫離設(shè)計(jì)的程序員能夠避免「一看就是程序員做的界面」這種尷尬,當(dāng)然這份指南也很有可能作為微信平臺(tái)審核上架應(yīng)用的依據(jù)。

關(guān)于技術(shù)棧

Web前端的技術(shù)棧大家都知道是HTML + CSS + JavaScript,所以很多開(kāi)發(fā)者認(rèn)為微信這次的「小程序」就是Web開(kāi)發(fā),因此也存在「HTML5這回要更火了」這類的聲音,但即使我沒(méi)有學(xué)過(guò)「HTML5」也知道這跟「HTML5」沒(méi)多大關(guān)系。開(kāi)發(fā)文檔中明確闡明了「小程序」的視圖層采用的是描述語(yǔ)言 WXML ,也就是微信自定義的一套視圖描述語(yǔ)言,這套描述語(yǔ)言可能是和HTML很類似,但這種類似也可以說(shuō)是微信故意為之,就是向前端開(kāi)發(fā)者提供一套類似前端開(kāi)發(fā)的技術(shù)棧。那為何不直接用前端技術(shù)呢,也就是喜聞樂(lè)見(jiàn)的「HTML5應(yīng)用」呢,簡(jiǎn)單的講無(wú)非兩點(diǎn):

  1. 性能不夠,影響體驗(yàn)。
  2. 不利于微信生態(tài)建設(shè)。
前端開(kāi)發(fā) 微信小程序
HTML WXML
CSS WXSS
JavaScript JavaScript

「小程序」的邏輯層代碼是采用JavaScript語(yǔ)言,這就有傳言稱「JavaScript程序員要吃香」,「JavaScript程序員要漲薪」等等。無(wú)可厚非JavaScript程序員極有可能成為第一波享受到「小程序」紅利的開(kāi)發(fā)者。但不幸的是,這套技術(shù)棧不支持像jQuery這類的三方庫(kù),所以很多JavaScript程序員寫(xiě)起代碼來(lái)要不順手嘍,考驗(yàn)JavaScript語(yǔ)言功底的時(shí)候到了。其實(shí)JavaScript的學(xué)習(xí)成本并不高,我也花了兩天就看完了主要的語(yǔ)法知識(shí)點(diǎn),上手是很容易,但是編程的核心并非語(yǔ)言或語(yǔ)法,編程思想更為重要,所以很多編程老司機(jī)要想跨界練練「小程序」的話,我認(rèn)為也是很容易的。這么看JavaScript程序員好像也沒(méi)啥優(yōu)勢(shì)嘛。
WXSS(Weixin Style Sheet),基本就是改了下CSS的名字罷了,唯一的差別可能就只有文檔中所述的:

  1. 尺寸單位(定義了rpx)
  2. 樣式導(dǎo)入

尺寸確實(shí)是個(gè)需要解決的問(wèn)題,畢竟微信是個(gè)跨平臺(tái)的「系統(tǒng)」。

總之,這套技術(shù)棧門(mén)檻不高,我也粗糙地玩了下,簡(jiǎn)單程序還是很容易開(kāi)發(fā)的。而對(duì)于「小程序」后臺(tái)而言,和之前的原生應(yīng)用并沒(méi)有差,該怎樣開(kāi)發(fā)還是怎樣開(kāi)發(fā)。

關(guān)于API

微信提供了網(wǎng)絡(luò)/媒體/數(shù)據(jù)/位置/設(shè)備/界面/開(kāi)放接口……等一系列的接口。

相比于iOS或者Android的原生API,沒(méi)法比……但基本能力都提供了,絕大多數(shù)的問(wèn)題都能解決,有局限性但不妨礙個(gè)性。

對(duì)于接口我想說(shuō)的并不多,接下來(lái)就看開(kāi)發(fā)者的創(chuàng)造力了。

關(guān)于工具

四個(gè)字:不夠好用。

總結(jié)

新鮮的事物總是能激起人們的好奇心,我也是好奇心使然才有了這篇文章。相信很快所有人就能看到「小程序」出現(xiàn)在我們的微信中了。其實(shí)我很期待很多應(yīng)用能上架「小程序」平臺(tái),尤其是那些偶爾使用的低頻軟件,這些軟件刪了呢要用的時(shí)候麻煩,不刪呢絕大多數(shù)時(shí)候也就是占個(gè)硬盤(pán)空間。「小程序」給出了那些低頻應(yīng)用的解決方案,釋放硬盤(pán)空間指日可待。除此之外,我也希望能夠看到這個(gè)新平臺(tái)能誕生一些這個(gè)平臺(tái)獨(dú)有的「小程序」,而不僅僅是原生應(yīng)用的搬運(yùn)工。

I could either watch it happen or be a part of it.--Elon Musk

這話是最近忙著火星移民計(jì)劃的伊隆·馬斯克講的,與君共勉。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,039評(píng)論 25 709
  • 本文把程序員所需掌握的關(guān)鍵知識(shí)總結(jié)為三大類19個(gè)關(guān)鍵概念,然后給出了掌握每個(gè)關(guān)鍵概念所需的入門(mén)書(shū)籍,必讀書(shū)籍,以及...
    dle_oxio閱讀 11,384評(píng)論 6 244
  • 今天的檢視會(huì)很多正能量的同學(xué)分享了很多經(jīng)驗(yàn)、心得、體會(huì)。非常好的!對(duì)我也很受益,有很多感觸。 七組組長(zhǎng)李思睿的分享...
    嬌孋嬌婍閱讀 873評(píng)論 0 0
  • 本周主題,采訪戰(zhàn)友,一個(gè)讓大家互相熟悉的機(jī)會(huì),一個(gè)可以看得見(jiàn)別人的好時(shí)機(jī),同時(shí)找到自己進(jìn)一步成長(zhǎng)的突破口。 跟兵哥...
    張娟麗閱讀 309評(píng)論 2 2

友情鏈接更多精彩內(nèi)容