給產品經理講技術:小程序這么火,你不來學學js?

2 評論 16355 瀏覽 62 收藏 8 分鐘

js本身是非常簡單的。

微信正式發布小程序雖然已經過去一個星期了,但人們討論小程序的熱情似乎絲毫未減。這幾天一打開微信公眾號,隨處可見的是「小程序最全指南」、「如何利用小程序發家致富」之類的文章。確實,互聯網圈子就那么大,微信的每一個小動作都能引發一波小高潮。而且產品經理對微信似乎也特別敏感,就連果果的文章,如果在標題里提到微信二字,閱讀量也是直接上一個臺階。不信?下回咱做個AB test。

果果當然也不落俗套,跟風寫了幾篇關于小程序的技術分析文章。分析來分析去,小程序無非就是一個高度定制的H5頁面。微信自己弄了一套html標簽,稱之為wxml,又封裝了一些樣式規則,叫wxss,不管怎么叫,換湯不換藥,里子里還是web前端里html+css+js那一套。封裝一方面是為了降低開發成本,根本上是為了收攏控制權限,開發者能用的東西越少,微信需要操心的事情也就越少。當然,這些都不是重點。重點是,如果你想自己搞一個小程序出來,你無論如何都繞不過js這個坎兒。

后臺不少同學留言,說他們是如何下決心學習js,又是如何從入門到放棄的。果果聽了很是痛心。當年上學那會兒,有兩條路擺在果果面前,學js還是學java,果果毫不猶豫的選擇了java。理由是,js這么簡單,能干啥?現在想想真是圖樣,正是因為簡單,決定了它有群眾基礎,任憑你java、c++如何如何血統純正、如何如何多才多藝,最終都是要被淹沒在人民群眾的汪洋大海中的。

js真的簡單嗎?

真、簡單。

舉個例子,js里只有5中簡單的數據類型:undefined、null、Boolean、Number和String。前兩個不看,它們表示不存在(計算機里,不存在的東西也是一種東西,叫做「不存在的東西」)。后面三個,Boolean可以表示真假、是非、對錯、你愛不愛我之類的只有兩個值的東西,Number表示數字如1024,String表示一個單詞或者一句話。這就完了,大千世界,盡在掌握。作為對比,C語言里,short、char、int、long都能表示一個整數,我的天吶。還有怎么搞都搞不明白的指針,我一度懷疑就是因為這玩意兒才導致我們專業男女比例7比1的。更惡心的是,指針竟然也他媽的可以表示一個整數。

js除了數據簡單,語法也簡單。語句常用的就兩套,if…else,for….。其他的都屬于高級語法,裝逼用的。函數和C語言里長的一個樣,只是前面多了一個前綴叫function。熟練使用即可行走江湖。

js后來又從java那里學來了對象,從對象的定義到對象的創建,都做了簡化。常用的就3個,Array、Date和RegExp,分別表示數據的集合,日期以及正則表達式。面向對象的那套東西,繼承和封裝,js也支持,不過老版本的js實現起來有點繞,現在的ES6標準,已經簡化許多了。

掌握了基本類型、基本語法、函數和對象,可以說js就算入門了,加起來不會超過兩天。但是,此時你就迫不及待的跑去跟程序員撕,肯定會被鄙視的。他們會非常自信的向你拋出他們面試的時候被折磨慘了的兩個概念,原型和閉包,以此勸你知難而退。

什么是原型和閉包?

請自行百度吧,我果某人自認講不明白。這些東西啊,光背概念是萬萬不行的,等用到的時候再去查,查明白了你也就懂了。

至此,js語言層面的東西,你應該可以應付了。然后要學的是,各種API。

什么API?js運行在瀏覽器里,首先當然是瀏覽器提供的API了。這些API包含了瀏覽器提供的方方面面的能力,比如窗口的打開關閉、前進后退歷史等等。它們大多放在一個叫window的全局對象里。你隨便打開一個網頁,按F12,在console里輸入window,就會知道,這家伙真是大而全。

還有一些API,是用來操作頁面的結構的。最簡單的例子,沒有拉到數據的時候轉菊花,拉倒數據之后替換成真正的數據,界面元素的改變,也可以通過js來完成,術語叫DOM操作。

當然,還要學習小程序的API。微信自己提供了很多終端才有的能力,比如傳感器、打開文件等等。以前的時候,是通過js bridge來做的,其實是一個道理。如果你想理解小程序的運行過程,有一個概念必須要掌握:「事件」。事件是程序里很常見的一種東西,包括我們,也是生活在充滿事件的世界中。如果你對某個事件感興趣,但它還沒有發生,就比如美帝解放朝鮮這一事件,你可以先訂閱,等事件觸發的時候,讓別人給你一個通知,給你一次執行自己代碼的機會。小程序里,APP被打開、APP壓后臺、APP又回來了,都是事件。這樣的事件來臨的時候,你都有機會、而且是一定要做點什么,不然程序怎么出bug的,你都不知道。

總結

js本身是非常簡單的。但是,我一直覺得,如果你接觸一個新的東西,小到一門語言大到一個行業,從入行到入門,一定要砸夠相應時間進去,無論牛人與否,無論效率高低。C++入門需要21天,js嘛,一個星期就夠了。你不妨從你那些可以改變世界卻只差一個程序員的idea 里,隨便挑一個出來,落地成一個小程序,路上有多坑,你走一遍就知道了。

#專欄作家#

給產品經理講技術,微信公眾號(pm_teacher),人人都是產品經理專欄作家。資深程序猿,專注客戶端開發若干年,對前端、后臺技術略懂,熱衷于對新的科技領域的探索。

本文原創發布于人人都是產品經理。未經許可,禁止轉載。

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 這是教人學習JS的吧~

    來自廣東 回復
  2. 之前做h5用過js,現在做產品了

    來自北京 回復