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

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

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

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

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

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

此處省略微信生活以及醫(yī)藥服務(wù)等等開發(fā)的知識,直接進入小程序環(huán)節(jié)。小程序是什么,相信點進來看的人已經(jīng)都知道了,所以就不在這里再放小程序的介紹圖了。

一.關(guān)于小程序產(chǎn)品層面

1.關(guān)于小程序的性能

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

演示demo

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


演示案例

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

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

2.關(guān)于小程序的注冊以及開發(fā)

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

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

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

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

3.關(guān)于小程序產(chǎn)品體驗常見問題

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

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

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

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

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

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

二.關(guān)于小程序技術(shù)開發(fā)

1.關(guān)于小程序的數(shù)據(jù)結(jié)構(gòu)和視圖渲染

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

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

2.關(guān)于小程序的開發(fā)者組件

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

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

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

3.關(guān)于小程序的unionID

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

所以就可以用這個unionid把公眾號的一些用戶,以及之前你開發(fā)過的微信生態(tài)下的應(yīng)用,和小程序里面的用戶建立起聯(lián)系,你會發(fā)現(xiàn),他們都是同一批人。

4.關(guān)于小程序的cooike不生效問題

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

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

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

5.關(guān)于小程序常見問題答疑

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

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

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

A:編譯的規(guī)范還在開發(fā),因為編譯之后的大小并沒有達到預(yù)期,還需要測試。

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

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

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

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

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

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

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

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

這么干,還不打賞?

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

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

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