[WeChat] 說微信小程序


微信小程序在技術圈里也爆炸了不少天了,但是縱觀公眾號的各類文檔,似乎高質量的文章不多見,往往都是官方開發文檔的搬運工,缺乏系統性的剖析帖,讓我很是失望啊(大牛似乎都在知乎答題和寫天書)。當然,我寫這篇文章不是《解密微信小程序》或者《微信小程序完全手冊》之類標題的技術帖,就是隨便聊聊這個技術圈的新寵(順便證明下我也是技術圈一份子)。

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

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

關于設計指南

講到設計指南就不得不看看業界標桿:谷歌和蘋果。無論是《Material Design》還是《iOS Human Interface Guidelines》,對自身的界面風格和細節定義都是極其詳細。一流企業定規格,這樣的設計指南絕地稱得上一流之作,也確實給設計師和開發者起到了指南的作用。微信小程序的這份「指南」雖說沒有達到谷歌和蘋果的高度,但也根據微信本身的產品理念、界面風格和交互方式給出了明確的設計思路,給設計師和開發者指明了方向。

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

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

關于技術棧

Web前端的技術棧大家都知道是HTML + CSS + JavaScript,所以很多開發者認為微信這次的「小程序」就是Web開發,因此也存在「HTML5這回要更火了」這類的聲音,但即使我沒有學過「HTML5」也知道這跟「HTML5」沒多大關系。開發文檔中明確闡明了「小程序」的視圖層采用的是描述語言 WXML ,也就是微信自定義的一套視圖描述語言,這套描述語言可能是和HTML很類似,但這種類似也可以說是微信故意為之,就是向前端開發者提供一套類似前端開發的技術棧。那為何不直接用前端技術呢,也就是喜聞樂見的「HTML5應用」呢,簡單的講無非兩點:

  1. 性能不夠,影響體驗。
  2. 不利于微信生態建設。
前端開發 微信小程序
HTML WXML
CSS WXSS
JavaScript JavaScript

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

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

尺寸確實是個需要解決的問題,畢竟微信是個跨平臺的「系統」。

總之,這套技術棧門檻不高,我也粗糙地玩了下,簡單程序還是很容易開發的。而對于「小程序」后臺而言,和之前的原生應用并沒有差,該怎樣開發還是怎樣開發。

關于API

微信提供了網絡/媒體/數據/位置/設備/界面/開放接口……等一系列的接口。

相比于iOS或者Android的原生API,沒法比……但基本能力都提供了,絕大多數的問題都能解決,有局限性但不妨礙個性。

對于接口我想說的并不多,接下來就看開發者的創造力了。

關于工具

四個字:不夠好用。

總結

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

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

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

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