最近這段時間接觸了微信小程序開發,也有一段時間沒寫博文了,也來寫寫簡單的見解以及開發的部分問題與感想。
javascript
本文同步於我的博客:www.imhjm.com/article/593…css
有人可能會困惑微信小程序跟微信內嵌H5有什麼區別?html
其實若是你玩過微信小程序,你就能發現流暢度以及體驗方面,小程序是完勝的
本質其實就是hybrid(混合)的app
介於web app與native 原生app之間,具有豐富的調用手機各類功能的接口,同時又具有靈活性,跨平臺,維護成本也至關原生app較低,開發迭代速度也比較快前端
放一張網上的圖,能夠看出這三者的區別vue
有人這麼評價小程序是「操做系統中的操做系統,生態中的生態」
就像是微信裏面又開了一個app store同樣,而後裏面的app跟着微信自定義的規則來編寫,其實就是個微信操做系統中的appnode
一開始我是拒絕的,微信搞了本身的一套基於原生的規範,還作了大量的限制,因此當時我並無看好微信小程序,可是由於微信影響力的緣故,而且宣傳作得太好了,朋友圈、社區等等各類爆炸新聞,熱度、活躍度也很是高漲,各類《第一個小程序教程》《微信小程序入門指南》等等層出不窮,而後整理小程序教程的repos的star量都能達到幾k,讓人不禁得想去探探小程序的究竟webpack
談到生態的話,開放的時候,不少app很快就上線了相應的小程序,基本都是原生app功能性的弱化版,還有一些功能性較強的小應用之類的,好比什麼親戚計算器等等
然而,有人就會想着,小程序是否會打擊到原有app的流量以及下載,用戶是否會直接放棄原有的app?作小程序的效果反而拔苗助長?這確實要引發開發者們的思考git
過了剛開始的火熱的階段後,小程序就陷入一段低迷,不少人開始以爲它是雞肋,只是微信鞏固它自己的超級流量而誕生的跟公衆號相似的內置應用罷了,流量難以轉入自己的app,用戶粘性也不高,正如小程序的特色「無須安裝、觸手可及、用完即走、無須卸載」github
其實接觸過微信小程序後,發現有些東西實際上是網上的誤導或者自身的誤解。
先來看看上面的問題,小程序是否會打擊到原有app的流量,其實這個問題很好解決,你只要看看這個應用跟用戶的交互度的高低,若是存粹是一些小工具的話,功能相對單一的話,毋庸置疑,必然打擊,我就簡單舉個例子,好比摩拜單車,咱們其實只須要掃碼用車,根本不須要別的東西,我爲什麼還要下載一個app應用,可是相似其餘用戶交互度比較高的,好比滴滴出行,小程序功能就很簡單,只能供用戶簡單使用,打到快車,可是原生應用上則功能較爲豐富,用戶每每不會卸載掉原生的app
說到上面功能的閹割,既然小程序只是一些app應用的弱化版簡化版,那小程序有何做用,它能帶來什麼收益?
曾經我也以爲它很雞肋,可是隨着最近小程序開發團隊的頻繁能力升級以及本身的接觸,彷彿看到了小程序是一塊還沒有挖掘開的巨大市場。
首先是微信小程序的能力升級,先是開放我的開發者,而後公衆號支持添加轉發,再而後開放羣相關能力,小程序碼以及數據分析能力也相應開放,着實讓人看到微信小程序背後開發團隊的活躍以及微信相關方面的重視,一些能力的升級讓小程序的推廣能力更強,讓開發者有更大的權限去拿到用戶關係以及一些用戶信息,讓體驗更好。
其次是「匿名聊聊」小程序帶來的啓發,匿名聊聊經過小程序碼在朋友圈推廣,能夠跟分享小程序的朋友匿名聊天,瞬間刷爆朋友圈,有消息透露,它四小時訪問量高達40萬,雖然由於微信不容許這種「影響朋友圈」的行爲,最後被說因爲「誘導分享「暫停服務了,可是咱們從這裏能夠看到小程序的強大影響力以及在社交關係上的強大優點,在這個移動互聯網的時代,微信基本已經成爲流量主體入口(根據questmobile數據,微信日活已經到達6億),微信一方面利用小程序來鞏固本身的流量超級入口地位,咱們未嘗不能夠利用它的流量以及實體用戶來給本身帶來紅利,就相似匿名聊聊這類的,正經常使用戶不多會去下載這樣的app,這就跟陌生交友這些相似了,可是在微信這個載體下就不同了,用戶身份是相對有保證的,用戶經過微信入口進入你的應用,經過微信用戶之間的關係就能夠作不少事情了,也能夠選擇跟自己app用戶連動,來使得用戶留存
可是值得注意的是,並非全部小程序都能享受到微信流量的紅利,若是隻是單純作一個app簡化版的小程序,又有何用,用戶沒法看到你開發的微信小程序的優點和方便所在,作不到吸引用戶,用戶就只會放棄你的產品,我的以爲,小程序不該該是所謂的「用完即走」,而是「用完很爽,下次還來」,打造一個精心製做的應用,利用微信小程序帶來的社交以及流量的優點打造一個與原有app有所不一樣可是能夠看到用心製做的精緻小程序,這樣用戶用完對產品承認,徹底能夠喚醒產品的更多用戶,不過,這就須要去試驗以及推敲,像「匿名聊聊」這種打着用戶心理將小程序玩成爆款的就是一個很好的例子
微信提供了本身的開發者工具(支持保存編譯,ES5轉ES6,壓縮代碼等),反正從發佈到如今也迭代好多版本了,目前直接使用它的編輯器開發以爲還能夠,沒遇到很大的坑,調試工具中css部分沒有盒子模型、computed style之類的這點還有待提升
對於小程序開發框架,文檔是這麼寫的
小程序開發框架的目標是經過儘量簡單、高效的方式讓開發者能夠在微信中開發具備原生 APP 體驗的服務。
框架提供了本身的視圖層描述語言 WXML 和 WXSS,以及基於 JavaScript 的邏輯層框架,並在視圖層與邏輯層間提供了數據傳輸和事件系統,可讓開發者能夠方便的聚焦於數據與邏輯上。
小程序也的確實現了現代前端框架的數據與視圖綁定的特色,而不是dom的形式,可是它最大的缺點是缺乏自定義組件化的特色,雖然框架中提供了import/include,還有template,還有它內置的組件,這些能夠提供js模塊化,還有wxml模板之類,可是遠遠達不到咱們想要的,小程序很大程度跟vue很接近,包括一些綁定以及條件渲染與列表渲染等等,可是vue還有一個很大的特色就是組件系統,網站最基本就是html/css/js,可是其實咱們就能夠把應用抽象成組件樹,它們都是由一些可複用的組件構成,這樣構建速度會很是快,並且維護方便,極大地提高效率
小程序DEMO:
project
├── pages
| ├── index
| | ├── index.json index 頁面配置
| | ├── index.js index 頁面邏輯
| | ├── index.wxml index 頁面結構
| | └── index.wxss index 頁面樣式表
| └── log
| ├── log.json log 頁面配置
| ├── log.wxml log 頁面邏輯
| ├── log.js log 頁面結構
| └── log.wxss log 頁面樣式表
├── app.js 小程序邏輯
├── app.json 小程序公共設置
└── app.wxss 小程序公共樣式表複製代碼
使用wepy框架後目錄結構:(perfect!)
project
└── src
├── pages
| ├── index.wpy index 頁面配置、結構、樣式、邏輯
| └── log.wpy log 頁面配置、結構、樣式、邏輯
└──app.wpy 小程序配置項(全局樣式配置、聲明鉤子等)複製代碼
回到微信小程序,開發時還遇到一些小坑,好比實現回到頂部,這個在瀏覽器輕鬆實現,可是小程序沒有提供bom/dom,惟一跟scroll搭上鉤的就只有一個組件scroll-view,可是我還須要頂部下拉加載(竟然跟它的scrolltoupper事件衝突了?),只能用一些小技巧來規避這些問題,在切換時我想回到頂部,瞬間將列表項data設爲空,再填入數據,這樣就回到頂部了,雖然也實現了效果,可是未必有些hack
再談談小程序的rpx單位吧
rpx(responsive pixel):
能夠根據屏幕寬度進行自適應。規定屏幕寬爲750rpx。如在 iPhone6 上,屏幕寬度爲375px,共有750個物理像素,則750rpx = 375px = 750物理像素,1rpx = 0.5px = 1物理像素。
設備 | rpx換算px (屏幕寬度/750) | px換算rpx (750/屏幕寬度) |
---|---|---|
iPhone5 | 1rpx = 0.42px | 1px = 2.34rpx |
iPhone6 | 1rpx = 0.5px | 1px = 2rpx |
iPhone6 | Plus 1rpx = 0.552px | 1px = 1.81rpx |
這個還挺不錯的,讓適配比較容易,否則在前端開發中還得使用rem、百分比等等一些技巧
不過須要注意
它官網提醒了在較小的屏幕上不可避免的會有一些毛刺,請在開發時儘可能避免這種狀況。
我也體驗到了這個毛刺
當你使用padding-bottom: 0rpx的時候你會發現實際上是有縫隙的,可是0px是不會有的
總之,小程序總體來看仍是不錯的,並且開發團隊也一直在努力,常常半夜兩三點更新發布小程序的能力😂,也一直在往主流前端框架靠,支持了數據綁定、模塊化、ES6等等,上手也很容易,不過要用它來作出一個讓用戶承認的精緻的產品仍是須要費很大的心思的
謝謝閱讀~
歡迎follow我哈哈github.com/BUPT-HJM
歡迎繼續觀光個人新博客~(老博客近期可能遷移)
歡迎關注