Android轉(zhuǎn)戰(zhàn)微信小程序 - 01

前言

微信小程序也推出好幾年了,由于微信一直穩(wěn)穩(wěn)占據(jù)國(guó)內(nèi)即時(shí)聊天類App的頭把交椅量瓜,所以微信小程序也順帶著火遍了國(guó)內(nèi),不管是個(gè)人還是公司開發(fā)者都不可避免會(huì)優(yōu)先考慮微信小程序。
年前突然被公司安排去搞一個(gè)微信小程序滓侍,當(dāng)然肯定不是我一個(gè)人了,有其他前端大佬一起做的牲芋,我就順帶著邊學(xué)習(xí)邊開發(fā)撩笆。這里就大概說說個(gè)人的一些體驗(yàn)捺球,當(dāng)然肯定只是一些膚淺的東西,有問題提出來大家一起學(xué)習(xí)探討夕冲。

入手

1氮兵、首先第一部肯定是要去參考官方的教程的:微信小程序官方文檔

2、安裝開發(fā)者工具:微信小程序開發(fā)者工具歹鱼,也可以選擇其他工具來開發(fā)泣栈,我選擇的是VisualStudioCode,后面也會(huì)大概介紹下這個(gè)工具的用法

3弥姻、第一次接觸小程序南片,如果不發(fā)布代碼的話就不需要去申請(qǐng)賬號(hào)了

布局

1、在 Android里面布局代碼都是寫在xml里面庭敦;在小程序里面則是通過wxml(頁面)+ wxss(樣式)疼进;當(dāng)然小程序樣式也可以都寫在wxml里面,類似:

<view style='width:35rpx;height:35rpx;float:right;'></view>

通過style屬性也可以寫樣式秧廉,但是一兩個(gè)還行伞广,多了就會(huì)顯得很亂。

2疼电、Android里面子view都是在viewgroup 里面嚼锄;小程序里面<view>標(biāo)簽既可以是子view,也可以是viewgroup澜沟,通過wxss能展示各種樣式灾票,也能顯示文本。
例如:顯示豎向排列的兩個(gè)文本茫虽。
在Android里面:

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">?
            <TextView
                android:text="test"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>
            <TextView
                android:text="test"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>
  </LinearLayout>

小程序里面:
wxml:

<view class="parent">
    <text>test</text>
    <text>test</text>
</view>

wxss:

.parent{
  display: flex;
  flex-direction: column;
}

可以說小程序里面的flex布局和Android的LinearLayout布局很相似刊苍,flex也是推薦的布局,具體可以看教程:Flex布局教程
如果要想元素都重疊濒析,類似Android里面的FrameLayout正什,則需要設(shè)置position:absolute,然后通過margin号杏、padding來定位到合適的位置婴氮。不得不說小程序的布局相比Android來說還是麻煩不少的,只能通過多練習(xí)來熟悉了盾致。主经。。

3庭惜、Android里面可以通過<include> 來引入布局罩驻,小程序里面也有template布局模版,通過<import> 引入即可护赊。

4惠遏、小程序里面布局推薦使用rpx作為尺寸單位砾跃。

邏輯

1、Android的業(yè)務(wù)邏輯都是寫在Java文件里面节吮,小程序里面都是寫在js里面抽高;同樣的類似Android的頁面生命周期,小程序也有生命周期:

  onLoad: function(options) {
    // 頁面初始化
  },
  onReady: function() {
    // 頁面渲染完成
  },
  onShow: function() {
    // 頁面顯示
  },
  onHide: function() {
    // 頁面推到后臺(tái)
  },
  onUnload: function() {
    // 頁面關(guān)閉
  },

小程序不像Android里面可以監(jiān)聽頁面的返回鍵透绩,所以要在頁面返回時(shí)處理業(yè)務(wù)可以在onUnload中處理翘骂。

2、與Android中Application類相似帚豪,小程序中app.js相當(dāng)于全局入口雏胃,如果開發(fā)者有需要在小程序啟動(dòng)時(shí)執(zhí)行的操作,就可以在onLaunch方法中執(zhí)行志鞍。
app.js還提供了一個(gè) globalData瞭亮,用來存儲(chǔ)整個(gè)小程序使用期間的公共數(shù)據(jù)。
在其他頁面可以通過getApp() 方法用以獲取小程序的 App 實(shí)例固棚,來使用全局公共數(shù)據(jù)统翩。

3、如果有些需要存儲(chǔ)的簡(jiǎn)單數(shù)據(jù)此洲,類似Android中的SharedPreferences厂汗,小程序可以使用wx.setStorageSync("key", value);存儲(chǔ);wx.getStorageSync("key"); 取出呜师;

4娶桦、頁面之間的數(shù)據(jù)傳遞在小程序里面只能通過路由的方式,就是在跳轉(zhuǎn)鏈接拼接上要傳遞的數(shù)據(jù):
傳數(shù)據(jù):

//let obj = JSON.stringify(obj);
wx.navigateTo({
      url: '/pages/index/index?id=' + id,
 })

接受:

onLoad: function(options) {
 // let obj = JSON.parse(options.obj);
    let id = options.id汁汗;
  }

如果要傳遞對(duì)象衷畦,則可以在傳遞前使用JSON.stringify(obj); 將數(shù)據(jù)轉(zhuǎn)成字符串,在接受時(shí)使用JSON.parse(obj); 轉(zhuǎn)換回對(duì)象;如果傳遞的值里面有特殊字符需要用encodeURIComponent知牌、decodeURIComponent對(duì)要傳值得編碼解碼處理祈争,否則會(huì)報(bào)錯(cuò)。

5角寸、數(shù)據(jù)刷新菩混;在處理完數(shù)據(jù)后我們會(huì)用this.setData({...}) 來更新數(shù)據(jù)源,但是很多初學(xué)者都會(huì)犯一個(gè)錯(cuò)誤扁藕,看如下錯(cuò)誤代碼:

wx.request({
            url: "request_url",
            success: function (res) {
                this.setData({...})
            }
        });

按照上面寫程序就會(huì)報(bào)錯(cuò)沮峡,再看正確代碼:

let that = this;
wx.request({
            url: "request_url",
            success: function (res) {
                that.setData({...})
            }
        });

兩者區(qū)別在于多了一個(gè)變量 that,并且在 onLoad()方法里面對(duì)它進(jìn)行了賦值亿柑,使它等于 this邢疙。其實(shí)說白了就是一個(gè)作用域的問題;其實(shí)在Android里面我們也遇到過,就是在點(diǎn)擊事件里面跳轉(zhuǎn)設(shè)置this的時(shí)候秘症,我們都會(huì)寫上類名,類似:Intent intent =new Intent(MainActivity.this,TestActivity.class);

6:事件攔截:在Android里面會(huì)有很多事件攔截處理式矫;小程序里面也不例外乡摹。看如下小程序布局:

<view bindtap="onclick">
   <image bindtap='tapclick'></image>
</view>

如上我給子父view都設(shè)置了bindtap點(diǎn)擊事件采转,這個(gè)時(shí)候點(diǎn)擊下去會(huì)發(fā)現(xiàn)兩個(gè)事件都執(zhí)行了聪廉,這在小程序里面稱為事件冒泡;要想image被點(diǎn)擊故慈,view不被點(diǎn)擊則得使用catchtap 屬性板熊;修改如下:

<view bindtap="onclick">
   <image catchtap='tapclick'></image>
</view>

這樣view的點(diǎn)擊事件就不會(huì)響應(yīng)了。
ps:還有些情況是頁面層級(jí)導(dǎo)致的察绷,需在wxss里面使用z-index 調(diào)整頁面層級(jí)干签。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市拆撼,隨后出現(xiàn)的幾起案子容劳,更是在濱河造成了極大的恐慌,老刑警劉巖闸度,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件竭贩,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡莺禁,警方通過查閱死者的電腦和手機(jī)留量,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來哟冬,“玉大人楼熄,你說我怎么就攤上這事『葡浚” “怎么了孝赫?”我有些...
    開封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)红符。 經(jīng)常有香客問我青柄,道長(zhǎng),這世上最難降的妖魔是什么预侯? 我笑而不...
    開封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任致开,我火速辦了婚禮,結(jié)果婚禮上萎馅,老公的妹妹穿的比我還像新娘双戳。我一直安慰自己,他們只是感情好糜芳,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開白布飒货。 她就那樣靜靜地躺著魄衅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪塘辅。 梳的紋絲不亂的頭發(fā)上晃虫,一...
    開封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音扣墩,去河邊找鬼哲银。 笑死,一個(gè)胖子當(dāng)著我的面吹牛呻惕,可吹牛的內(nèi)容都是我干的荆责。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼亚脆,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼做院!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起濒持,我...
    開封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤山憨,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后弥喉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體郁竟,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年由境,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了棚亩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡虏杰,死狀恐怖讥蟆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情纺阔,我是刑警寧澤瘸彤,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站笛钝,受9級(jí)特大地震影響质况,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜玻靡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一结榄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧囤捻,春花似錦臼朗、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽绣否。三九已至,卻和暖如春挡毅,著一層夾襖步出監(jiān)牢的瞬間蒜撮,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工慷嗜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人丹壕。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓庆械,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親菌赖。 傳聞我的和親對(duì)象是個(gè)殘疾皇子缭乘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353