小編給大家分享一下怎樣開發(fā)微信小程序,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
創(chuàng)新互聯(lián)服務項目包括五臺網(wǎng)站建設、五臺網(wǎng)站制作、五臺網(wǎng)頁制作以及五臺網(wǎng)絡營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯(lián)網(wǎng)行業(yè)的解決方案,五臺網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務的客戶以成都為中心已經(jīng)輻射到五臺省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!微信小程序 開發(fā)經(jīng)驗整理
前言:
最近小程序出來了,公司也要求我們開發(fā)一款小程序。
于是,就開始著手做了,做了差不多一周吧,也遇到了很多問題,這里就來總結一下。(主要是從一個Android開發(fā)者的角度來述說的,可能比較零碎的一些知識點和經(jīng)驗,如果大家還有補充,歡迎)
總結
1:傳參,方法判斷
js中 方法中可以傳遞一個方法作為形參,在java中是不可以的。比如start項目中的
getUserInfo:function(cb){ var that = this if(this.globalData.userInfo){ typeof cb == "function" && cb(this.globalData.userInfo) }else{ //調用登錄接口 wx.login({ success: function () { wx.getUserInfo({ success: function (res) { that.globalData.userInfo = res.userInfo typeof cb == "function" && cb(that.globalData.userInfo) } }) } }) } },
這里就是傳遞一個形參,cb的方法,并且這里還有一個很巧妙的判斷方法
typeof cb == "function" && cb(that.globalData.userInfo)
利用的&&的運算規(guī)律,首先判斷cb是不是一個方法, 這里的==可以作為類型是否相當?shù)呐袛?,然后?amp;&中如果前面的不滿足,后面的則不會執(zhí)行;如果是cb是一個方法,調用cb方法,并且傳入success成功回調的userinfo參數(shù)
還有一點,if(this.globalData.userInfo) 可以作為是否為null的判斷條件,在java中不可以。
2:log打印
log的打印,如果直接打印“”+變量 是不可以的,因為人家沒有toString()方法
X console.log("info"+info);
所以只能分開打印
console.log("info"); console.log(info);
3: json取對象
json的使用,可以通過 json["key"]來取其子對象
person: { name: "jafir", age: "11", } var name = person["name"]; var age = person["age"];
info: {persons:[{name:"123",age:11},{name:"jafir1",age:12}]} //如果有數(shù)組 通過這種方法獲取 console.log(that.data.info["persons"][1].name) console.log(that.data.info["persons"][1].age)
4:定義boolean類型值
要注意如果在page的data中要定義一個boolean類型的值,必須是 isSuccess : true而不是 isSuccess :"true"
if (this.data.isSccess) { console.log("true") } else { console.log("false") }
因為如果是isSucees : "true" ,結果為true,沒問題,但是如果是isSucess:"false",結果依舊為true,
因為這里的isSuccess不是boolean,而是一個非空類型,既然非空,if就是為true
如果,默認undefined,if則為false
5:使用"that"
建議在 page{}外面定義一個that變量,然后在onLoad中賦值為this,以后所有的地方,都可以使用that,這樣就避免有些地方,this并不是指向page的上下文對象
//上下文對象 var that; page({ onLoad: function (options) { // 頁面初始化 options為頁面跳轉所帶來的參數(shù) that = this; } ... that.setData({ xxx: xxx, }) })
6:page的生命周期方法
只有onload中有options參數(shù),可以獲取頁面?zhèn)髦档鹊?,onload只會執(zhí)行一次
但是onShow可以每次切換頁面的時候執(zhí)行,所以,需要每次刷新頁面的數(shù)據(jù)請求,可以放在onShow中,測試過,性能體驗基本無影響
page的生命周期沒有Android那么豐富,頁面之間傳值也有一定的限制。
可以通過普通的url的傳值方式傳值,xxx?key = value ,但是要注意:我們傳的值其實是相當于字符串和url拼接在一起,請不要直接傳一個對象,因為對象沒有toString方法。
傳遞json對象的步驟為:
1.把json對象變成字符串,如果本身就是那就直接用,如果是json對象,需要 parseString(json)
2.和url進行參數(shù)拼接?key=value
3.取得時候在onload的options里面取出,
onLoad: function (options) { var value= options.key }
然后JSON.stringify(value)轉為json對象使用
7: 頁面間跳轉
從主頁跳轉一個新的界面 新界面處理完邏輯 成功與否 結束之后怎么通知 主頁結果?
這種情況,一般是沒有辦法解決的。經(jīng)過測試,如果你想要從二級非主頁界面直接navigator打開主頁,是不行的,會報錯。
所以,我們采用的策略是:二級界面處理完數(shù)據(jù)之后,直接返回,然后在主頁界面重新拉取數(shù)據(jù)。所以會出現(xiàn),我們的請求接口是在onShow方法里面執(zhí)行的。因為onload只會執(zhí)行一次
8:wxml
1.text標簽可以使用bindtap
<image src="{{logoUrl?logoUrl:'../../img/paihao.png'}}"></image>
可以使用這種方式來顯示默認的圖片
3.再強調一下 在標簽中使用data-xx-oo ="value",在對應對象中可以通過e.currentTarget.dataset.xxOo獲得,這里的xx-oo ,-其實是會轉義駝峰。這種一般使用場景為 你可以給你所點擊或者綁定事件的view設置一個數(shù)據(jù),比如你一個picker里面有5個view,就可以綁定每個view不同的值,在觸發(fā)事件的時候取到相應的值
4.如果你想要顯隱view你可以通過wx:if="true/false"來處理,但是這樣的話,如果為false,page不會去渲染這個view,它所在的位置空間也不會預留,假如下面的view就會往上排。如果想要留存它的位置空間,可以修改其style樣式來解決
9:統(tǒng)一網(wǎng)絡請求處理結果
你可以封裝一下網(wǎng)絡請求的返回結果,做統(tǒng)一處理
requestWithGet: function(paramsData) { data.method = 'GET' this.requestInternal(paramsData) }, requestWithPost: function(paramsData) { data.method = 'POST' this.requestInternal(paramsData) }, requestInternal: function (paramsData) { var that = this; console.log('requestInternal: 開始請求接口[' + paramsData.url + ']'); //開始網(wǎng)絡請求 wx.request({ url: paramsData.url, data: paramsData.data, method: paramsData.method, success: function (res) { console.log('requestInternal: 接口請求成功[' + paramsData.url + ']'); paramsData.success(res); }, fail: function (res) { console.log('requestInternal: 接口請求失敗[' + paramsData.url + ']'); console.log(res); ////在這里做請求失敗的統(tǒng)一處理 wx.showToast({ title: '網(wǎng)絡訪問失敗', duration: 1500 }) typeof paramsData.fail == "function" && paramsData.fail(res); }, complete: function (res) { //在這里做完成的統(tǒng)一處理 typeof paramsData.complete == "function" && paramsData.complete(res); } }) }
這樣在使用請求的時候,可以直接先wx.request({}) 這樣,就可以IDE給你聯(lián)想生成對應的請求格式,然后直接把“wx.request” 替換 “requestWithGet”或者“requestWithPost”就OK了
以上是“怎樣開發(fā)微信小程序”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注創(chuàng)新互聯(lián)網(wǎng)站建設公司行業(yè)資訊頻道!
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)建站www.rwnh.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
本文名稱:怎樣開發(fā)微信小程序-創(chuàng)新互聯(lián)
當前URL:http://www.rwnh.cn/article14/dciide.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、建站公司、Google、關鍵詞優(yōu)化、定制網(wǎng)站、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內容