【微信官方開發者培訓班】小程序開發你遇到的問題,這里都有答案

今天是一篇沒有歌的文章,因為貨足夠干,可能會干到你欲罷不能。

請注意,以下內容,只展示大家在開發小程序過程中遇到的公共問題解答方案至于其他相關的開發知識,由于騰訊要求,不方便透漏太多,見諒。如還是有泄露的內容,必會盡快刪除。

小程序自公測到現在已經將近一個月時間了,相信已經有很多相關從業人員已經投身到了小程序的開發中。盡管是騰訊,我相信,所做的產品也肯定是從0到1然后慢慢迭代完善的,所以,大家在開發的過程中,也一定會遇到很多問題。

我們也是其中開發的一份子,恰巧微信開發者培訓課程第二十一期開在了北京,那么也很恰巧的,我被選中成為了這一期的學員,于是就有了這篇除官方以外的答疑文章。

先上一張進門的標志性照片(婚禮和培訓班招牌同框,什么鬼!)

此處省略微信生活以及醫藥服務等等開發的知識,直接進入小程序環節。小程序是什么,相信點進來看的人已經都知道了,所以就不在這里再放小程序的介紹圖了。

一.關于小程序產品層面

1.關于小程序的性能

可能所有關心小程序的人,第一個想到的問題,就是小程序的流暢度是否能夠達到預期。來看一個例子(由于沒有開發環境,第一個例子是網上找的,所以不夠精細,開發人員可以自己登錄后臺看demo)。

演示demo

下面插入一個視頻,是課程上面錄制的展示demo。視頻較大,建議wifi下觀看。


演示案例

在我的概念里,小程序的交互是非常流暢的。雖然說小程序也是在微信的頁面里面展示的,也和前端正常的開發流程是類似的。但是它整個頁面的底層框架,都是微信自己定義的wx協議,和普通的html是還是有區別的,所以開發的時候,也盡量不要用html開發的眼光和思維去對待它。為什么不能用html開發的眼光對待它,后面一些例子會講到。

前面說到,小程序有獨有的協議,所以也造就了它自己獨有的離線能力。也就是說只要你第一次在網絡情況下打開過頁面,下一次就算是沒有網絡,也是可以看到內容的,這一點是和傳統的web頁面有著很大的區別。另外一點,就是小程序的兼容性很好,比如開發原生app需要適配不同的系統,而小程序只需要開發一次即可。

2.關于小程序的注冊以及開發

小程序的開發,需要申請賬號,完善信息,提交代碼,審核發布等流程。它們是可以和小程序代碼的編寫同步進行,所以小程序更加偏向是一個開發者工具,而不是像訂閱號或者服務號那樣的運營工具。

先說賬號申請,閱讀過官方文檔的應該清楚,小程序目前,只支持兩種類型的賬號。第一種是企業,這個只需要注冊賬號,然后綁定對公賬號即可。還有一種是一些類似政府企業,無法使用對公賬戶打款。也就是說第一種企業只要注冊就可以使用,而第二種注冊完需要認證才行,并且目前不支持個人賬號。

第二步就是完善信息,這里很簡單,唯一需要特別注意的是,基本信息中,選擇小程序的服務范圍的時候,一定要特別謹慎,不能隨意修改。因為這樣容易造成數據混亂,比如你選的分類是打車,而用戶搜完之后,發現你其實是做的美食,這就尷尬了。

做好之后就可以去代碼開發并且上傳,上傳代碼只能是管理員賬號才行。這里需要注意的第一點,是小程序不支持代碼的合并和修改,所以,當你準備上傳代碼的時候,一定要確定,這是個完整的包,如果需要合并和修改,需要在其他類似git這樣的平臺進行。第二點是當你提交審核的時候,盡量不要在小程序頁面里面出現例如test之類的文字,以及測試數據,盡可能做到完善,否則有可能會影響你的信用分。

3.關于小程序產品體驗常見問題

Q:郵箱無法與公眾號,開放平臺,綁定個人微信號的郵箱重復。

A:這里是騰訊開發公眾號時候遺留的詬病,所以現在騰訊所有開放平臺的所有賬號都不能使用已經注冊過的郵箱賬號,請大家見諒。

Q:是否需要認證,認證與不認證有什么卻別?

A:不認證除了不能調用微信支付之外,和認證用戶沒有任何其他區別。

Q:管理員、開發者、體驗者的不同是什么?

A:能夠登錄小程序管理后臺的只有管理員,開發者可以被授權使用。管理員的權限是最高的,開發者只有在后臺進行開發的權限。而體驗者,則是不能參與后臺的管理和使用,只能參與體驗。

二.關于小程序技術開發

1.關于小程序的數據結構和視圖渲染

小程序和其他前端非常不一樣的一個地方,就是渲染方式、執行方式以及執行時間,都是由小程序自己自定的,并且可以在后臺進行編譯。

以下圖為例,appservice管理的是數據,視圖層管理的是渲染,數據和視圖層是完全分離的。這種視圖結構中,你的腳本是沒辦法直接操控視圖的,所以使用習慣了jQuery的人,這里就比較遺憾了,是完全不能用。第一是因為它是跑在兩個獨立線程中,另一個是因為開發者寫的腳本文件,都是跑在jscode當中的,所以有很多dom是沒有的。

2.關于小程序的開發者組件

為了方便開發者,微信官方推出了一系列的小程序組件,這些組件會有一些自己的功能,比如說一些button和cheakbox等等,會有自己微信的樣子,所以說,即使是一些ui資源很弱的團隊,也可以開發出來很不錯的小程序。

由于html對于組件的支持比較差,所以這些組件基本上都是微信自己自定義的。在技術上,微信吸取了web-component的精髓,研發了wx-component,研發的時候,假如你熟悉前者,你就會發現,他們的接口是很相似的。

其實了解技術的人都清楚,這么做一套自定義組件,是非常耗時耗力的,微信之所以會做,一個是因為方便web和native之間的切換,另一個是可以和自己的自定義框架很好的結合起來。

3.關于小程序的unionID

如果開發者擁有多個移動應用,網絡應用,和公眾賬號(包括小程序),可通過unionid來區分用戶的唯一性。因為只要是同一個微信開放平臺賬號下的移動應用,網站應用和公眾賬號(包括小程序),用戶的unionid是唯一的。換句話說,同一用戶,對同一個微信開放平臺下的不同應用,unionid是相同的。

所以就可以用這個unionid把公眾號的一些用戶,以及之前你開發過的微信生態下的應用,和小程序里面的用戶建立起聯系,你會發現,他們都是同一批人。

4.關于小程序的cooike不生效問題

很多開發者會問,為什么某些set-cookie之類的不會生效,這里其實是因為,小程序開發并不是在一個瀏覽器的環境中把請求發了出去,所以服務器發回來的返回頭,小程序是無法理解的。小程序的請求是jscode通過native發出去的,所以他們并不理解,但是以后可能會優化理解。

處于安全需要,需要服務器支持Https。然后TLS(Transport Layer Security)版本需要支持到1.2,即最新版本,它可以在不支持TLS的環境中模擬。但是如果真機運轉的話,還是需要把服務器版本升級到最新。

在app.json中聲明的頁面,需要有相應的Page()函數進行注冊。開發者經常遇到,在app.json寫了a頁面,但是沒有創建a.js文件,那就會出錯,并且如果你創建了a.js,沒有在里面生成page()的函數,那也會出錯。

5.關于小程序常見問題答疑

Q:為什么設置了scrool-view之后,頁面不能滾動到底部,對滾動條不檢測?

A:因為Native層是在webview層之上的,所以無法檢測到scroll-view的滾動。如果只是單獨的一個scroll-view,是可以通過scroll-into這樣的屬性操作。如圖:

Q:編譯的規范,小程序會開放嗎?

A:編譯的規范還在開發,因為編譯之后的大小并沒有達到預期,還需要測試。

Q:為什么邏輯層要和視圖層分離?

A:因為簡單、效率比較高,并且比較安全。

Q:小程序會加入開源力量嗎?

A:作為程序人員,還是很希望小程序可以開源的,但是這是一個微信的商業項目,所以不會這么做。

Q:編譯器,為什么wxs文件轉換成了js而不是css?

A:如果在后臺直接轉成css文件的話,我們是不知道屏幕的寬度和分辨率的,所以沒辦法做rpx的轉換。保存js的主要目的,是為了讓它在運行的時候,實時去計算react.js對應的值。

以上,就是今天部分的課程內容,希望可以幫助到一些做小程序開發的童鞋。

最后,如果希望了解更多專業信息,請關注我的簡書,最近會整理更新關于微信支付的內容。

這么干,還不打賞?

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

推薦閱讀更多精彩內容