微信小程序開發(fā)--從零開始(簡(jiǎn)介)

從零開始

微信小程序中只有四種類型的文件

  • js-----------JavaScript文件
  • json---------項(xiàng)目配置文件聪铺,負(fù)責(zé)窗口的顏色等等
  • wxml---------類似html文件
  • wxss---------類似CSS文件

在根目錄下用app來命名的這四種類型的文件计寇,就是程序入口文件脂倦。

app.json

必須要有這個(gè)文件,如果沒有這個(gè)文件蝶押,IDE就會(huì)報(bào)錯(cuò)火欧,因?yàn)槲⑿趴蚣馨堰@個(gè)作為配置文件入口苇侵,我們只需要?jiǎng)?chuàng)建這個(gè)文件榆浓,在里面寫個(gè)大括號(hào)就行。以后我們會(huì)在這里對(duì)整個(gè)小程序的全局配置烘浦。記錄了頁(yè)面的組成闷叉,配置小程序的窗口脊阴、背景嘿期、配置導(dǎo)航條的樣式,配置默認(rèn)標(biāo)題孽查。

app.js

必須要有這個(gè)文件盲再,沒有也是會(huì)報(bào)錯(cuò)的,但是這個(gè)文件創(chuàng)建一下就行贷揽,什么都不用寫禽绪,以后我們可以在這個(gè)文件中監(jiān)聽并且處理小程序的生命周期函數(shù)印屁、聲明全局變量斩例。

app.wxss

這個(gè)文件不是必須的念赶。一位內(nèi)他只是全局的css文件的樣式叉谜。

app.wxml

這個(gè)也不是必須的,而且這個(gè)指的并不是主界面很钓,因?yàn)樾〕绦蛑械闹鹘缑媸强縅SON文件中的配置類決定的履怯。

有了app.js,app.json這兩個(gè)文件在運(yùn)行程序的時(shí)候IDE就不會(huì)報(bào)錯(cuò)了裆泳,也意味著這就是最簡(jiǎn)單的微信小程序

Hello Word

創(chuàng)建程序?qū)嵗?/h4>

app.js文件管理整個(gè)程序的生命周期工禾,所以在里面添加如下的代碼:(輸入App IDE會(huì)有提示)

App({
    onlaunch: function() {
        console.log('App Launch')
    },
    onShow: function() {
        console.log('App Show')
    },
    onHide: function() {
        console.log('App Hide')
    }
})

具體的API解釋如下

App()

App() 函數(shù)用來注冊(cè)一個(gè)小程序闻葵。接受一個(gè)Object參數(shù)槽畔,其制定小程序的生命周期函數(shù)胁编。

object參數(shù)說明
屬性 類型 描述 觸發(fā)時(shí)機(jī)
onLaunch Function 生命周期函數(shù)--監(jiān)聽小程序的初始化 當(dāng)小程序初始化完成時(shí),會(huì)出發(fā)onLaunch(全局只觸發(fā)一次)
onShow Function 生命周期函數(shù)--監(jiān)聽小程序的顯示 當(dāng)小程序啟動(dòng)寥假,或從后臺(tái)進(jìn)入前臺(tái)顯示糕韧,會(huì)觸發(fā)onShow
onHide Function 生命周期函數(shù)--監(jiān)聽小程序的隱藏 當(dāng)小程序從前臺(tái)進(jìn)入后臺(tái)會(huì)出發(fā)onHide
其他 Any 開發(fā)者可以添加任意的函數(shù)或數(shù)據(jù)到Object參數(shù)中喻圃,用this可以訪問

前臺(tái)斧拍、后臺(tái)定義: 當(dāng)用戶點(diǎn)擊左上角關(guān)閉饮焦,或者按了設(shè)備的Home鍵離開溫馨,小程序并沒有直接銷毀转绷,而是進(jìn)入了后臺(tái)硼啤;當(dāng)再次打開微信或者進(jìn)入小程序的時(shí)候议经,又會(huì)從后臺(tái)進(jìn)入前臺(tái)。只有當(dāng)小程序進(jìn)入后臺(tái)一定的時(shí)間谴返,或者系統(tǒng)資源占用過高煞肾,才會(huì)被真正的銷毀。

美化ActionBar

json文件負(fù)責(zé)配置ActionBar顏色嗓袱,我們只需要在里面添加如下代碼即可

app.json配置項(xiàng)列表
屬性 類型 必填 描述
pages Array 設(shè)置頁(yè)面路徑
windows Object 設(shè)置默認(rèn)頁(yè)面的窗口表現(xiàn)
tabBar Object 設(shè)置底部tab的表現(xiàn)
networkTimeout Object 設(shè)置網(wǎng)絡(luò)超時(shí)時(shí)間
debug Boolean 設(shè)置是否開啟debug模式
屬性 類型 默認(rèn)值 描述
navigationBarBackgroundColor HexColor #000000 導(dǎo)航欄背景顏色籍救,如“#000000”
navigationBarTextStyle String white 導(dǎo)航欄標(biāo)題顏色,僅支持black/white
navigationBarTitleText String 導(dǎo)航欄標(biāo)題文字內(nèi)容

美化界面

美化界面用到的是wxml渠抹、wxss文件,為了讓程序代碼結(jié)構(gòu)簡(jiǎn)潔我們需要在根目錄下創(chuàng)建一個(gè)新文件夾梧却,名字隨意奇颠,這里我們叫pages,然后我們?cè)趐ages文件夾里面在創(chuàng)文件夾放航,名字隨意烈拒,這里我們叫index
然后我們創(chuàng)建index.wxml文件然后在里面寫入以下代碼

<view>
    <text class="window">Hello</text>
</view>

然后我們創(chuàng)建index.wxss文件,在文件中輸入如下代碼

.window{
    color: #4994fa;
}

然后我們?cè)趧?chuàng)建index.js文件
在文件中輸入如下代碼(輸入Page IDE會(huì)有提示)

Page({
    data: {
        //text: "這是一個(gè)頁(yè)面"
    },
    onLoad: function(options) {
        //頁(yè)面初始化options為頁(yè)面跳轉(zhuǎn)所帶來的參數(shù)
    }荆几,
    onReady: function() {
        //頁(yè)面渲染完成
    }吓妆,
    onShow: function() {
        //頁(yè)面顯示
    },
    onHide:function() {
        //頁(yè)面隱藏
    }伴郁,
    onUnload: function() {
        //頁(yè)面關(guān)閉
    }
})

函數(shù)解釋如下:

Page

Page()函數(shù)用來注冊(cè)一個(gè)頁(yè)面耿战。接受一個(gè)Object參數(shù),其制定頁(yè)面的初始化數(shù)據(jù)焊傅、生命周期函數(shù)剂陡、事件處理函數(shù)等。

Object參數(shù)說明

屬性 類型 描述
data Object 頁(yè)面的初始數(shù)據(jù)
onLoad Function 生命周期函數(shù)--監(jiān)聽頁(yè)面加載
onReady Function 生命周期函數(shù)--監(jiān)聽頁(yè)面初次渲染完成
onShow Function 生命周期函數(shù)--監(jiān)聽頁(yè)面顯示
onHide Function 生命周期函數(shù)--監(jiān)聽頁(yè)面隱藏
onUnload Function 生命周期函數(shù)--監(jiān)聽頁(yè)面卸載
onPullDownRefeash Function 頁(yè)面相關(guān)處理函數(shù)--監(jiān)聽頁(yè)面下拉動(dòng)作
其他 Any 開發(fā)者可以添加任意的函數(shù)活數(shù)據(jù)到Object參數(shù)中狐胎,用this就可以訪問

配置首頁(yè)

Json文件負(fù)責(zé)配置頁(yè)面的路徑
所以我們?cè)诶锩婵梢约尤肴缦麓a
其中index的含義其實(shí)就是指index.js文件
這里需要說明一點(diǎn)pages里面的路徑其實(shí)是指向js文件的
如果一個(gè)目錄下沒有該名稱的js文件是會(huì)報(bào)錯(cuò)的鸭栖!

"pages": [
    "pages/index/index"
]

超級(jí)Hello World

為了學(xué)習(xí)綁定,以及如何將數(shù)據(jù)在頁(yè)面更新
我們來做一個(gè)超級(jí)Hwllo World握巢,就是我點(diǎn)擊他的時(shí)候能讓文字變色晕鹊!

綁定事件

我們打開index.wxml將里面的代碼改成下面這樣

<view>
    <text catchtap="click" class="window">Hello</text>
</view>

其實(shí)也就是增加了

  • catchtap='click'

這兩個(gè)屬性是什么意思呢?慢慢來解釋

類型 觸發(fā)條件
touchstart 手指觸摸
touchmove 手指觸摸后移動(dòng)
touchcancel 手指觸摸動(dòng)作被打斷暴浦,如來電提醒溅话,彈窗
touchend 手指觸摸動(dòng)作結(jié)束
tap 手指觸摸后離開
longtap 手指觸摸后,查過350ms在離開

注:除上表之外的其他組件自定義事件都是非冒泡事件歌焦,如<form/>的submit事件飞几,<input/>的input事件,<scroll-view/>的scroll事件独撇。

事件綁定

事件綁定的寫法同組件的屬性屑墨,以key, value的形式。

  • key以bind或catch開頭纷铣, 然后跟上事件的類型卵史,如bindtap, catchouchstart
  • value是一個(gè)字符串,需要在對(duì)應(yīng)的Page中定義同名的函數(shù)搜立。不然當(dāng)初發(fā)事件的時(shí)候會(huì)報(bào)錯(cuò)以躯。

bind事件綁定不會(huì)阻止冒泡事件向上冒泡,catch事件綁定可以阻止冒泡事件向上冒泡啄踊。

上面展示了事件的一些的屬性名稱寸潦,這里需要注意黃色標(biāo)準(zhǔn)的內(nèi)容,區(qū)分冒泡事件和非冒泡事件社痛,其實(shí)冒泡事件就是需要往上面一層容器傳遞這個(gè)事件。

看了這段代碼我們?cè)賮砝斫鈉atchtap="click"的含義
catch代表非冒泡事件命雀,tap代表點(diǎn)擊事件蒜哀,所以連在一起就是非冒泡點(diǎn)擊事件,后面的click只是一個(gè)變量的名字,我們?cè)趇ndex.js需要用這個(gè)名字綁定接受事件的函數(shù)撵儿。
我們?cè)趇ndex.js文件中添加如下函數(shù)

click: function() {
    console.log("點(diǎn)擊了文字")乘客;
}

添加完成之后index.js中的文件就是如下這樣

Page({
    data: {
        //text: "這是一個(gè)頁(yè)面"
    },
    click: function() {
        console.log("點(diǎn)擊了文字")
    },
    onLoad: function(options) {
        //頁(yè)面初始化options為頁(yè)面跳轉(zhuǎn)所帶來的參數(shù)
        console.log("Page OnLoad")
    },
    onReady: function() {
        //頁(yè)面顯示
        console.log(“Page onReady”);
    },
    onShow: function() {
        //頁(yè)面顯示
        console.log(“Page onShoe”)
    },
    onHide: function() {
        //頁(yè)面隱藏
        console.log("Page onHide")
    },
    onUnload: function() {
        //頁(yè)面關(guān)閉
        console.log("Page onUnload")
    }
})

所以點(diǎn)擊事件的回掉函數(shù)就是catchtap="click"中的click后面加上:function()構(gòu)成的,
當(dāng)我們點(diǎn)擊文字時(shí)控制臺(tái)中打印出了log淀歇。

接下來我們來寫一下點(diǎn)擊變色的邏輯易核,但是如何讓文字變色的呢,肯定是css浪默,所以我們需要在index.wxss中添加一個(gè)樣式牡直。

.window-red{
    color:#D23933;
}

此時(shí)index.wxss中的代碼為:

.window{
    color: #49bb16;
}
.window-red{
    color:#D23933;
}

然后我們進(jìn)入index.js文件,你會(huì)發(fā)現(xiàn)在代碼里面有一個(gè)data:{}他不是page生命周期函數(shù)纳决,其實(shí)他是一個(gè)變量的數(shù)組碰逸,這個(gè)里面申請(qǐng)的變量都可以在wxml中使用。

data: {
    //text: "這是一個(gè)頁(yè)面"
}

我們?cè)谶@里申請(qǐng)了一個(gè)color

data: {
    //text: "這是一個(gè)頁(yè)面"
    color: "window"
}

color的值就是index.wxss的樣式名稱阔加,然后我們進(jìn)入index.wxml中,將class中的值改成{{color}}

<view>
    <text catchtap='click' class='{{color}}'>Hello</text>
</view>

其實(shí)意思就是將js文件中變量color的值在這里使用饵史,也就是值等于window,然后我們?cè)诨氐絠ndex.js文件胜榔,在最上面申請(qǐng)一個(gè)變量控制點(diǎn)擊胳喷,然后我們?cè)赾lick:function()函數(shù)中添加如下代碼

click: function() {
    console.log('點(diǎn)擊了文字');
    if(flag) {
        color = "window-red";
        flag = false;
    } else {
        color = "window"
    }
    this.setData({
        color
    });

}

其實(shí)就是在點(diǎn)擊后更換color變量的值,而更換的這個(gè)值其實(shí)就是樣式的名稱

更新界面數(shù)據(jù)

這里有一個(gè)問題夭织,就是我們?cè)诟鼡Q完值吭露,但是在wxml中不會(huì)立即生效,所以我們需要調(diào)用this.setData()方法將值同步給wxml讓他立即生效

最后補(bǔ)充一點(diǎn)index目錄下也是可以配置json文件的摔癣,也就是每個(gè)頁(yè)面都可以配置自己獨(dú)特的actionbar顏色等等奴饮,這里的配置會(huì)覆蓋app.json文件的配置。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末择浊,一起剝皮案震驚了整個(gè)濱河市戴卜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌琢岩,老刑警劉巖投剥,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異担孔,居然都是意外死亡江锨,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門糕篇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來啄育,“玉大人,你說我怎么就攤上這事拌消√敉悖” “怎么了?”我有些...
    開封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)氓英。 經(jīng)常有香客問我侯勉,道長(zhǎng),這世上最難降的妖魔是什么铝阐? 我笑而不...
    開封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任址貌,我火速辦了婚禮,結(jié)果婚禮上徘键,老公的妹妹穿的比我還像新娘练对。我一直安慰自己,他們只是感情好啊鸭,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開白布锹淌。 她就那樣靜靜地躺著,像睡著了一般赠制。 火紅的嫁衣襯著肌膚如雪赂摆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天钟些,我揣著相機(jī)與錄音烟号,去河邊找鬼。 笑死政恍,一個(gè)胖子當(dāng)著我的面吹牛汪拥,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播篙耗,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼迫筑,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了宗弯?” 一聲冷哼從身側(cè)響起脯燃,我...
    開封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蒙保,沒想到半個(gè)月后辕棚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡邓厕,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年逝嚎,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片详恼。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡补君,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出昧互,到底是詐尸還是另有隱情赚哗,我是刑警寧澤她紫,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站屿储,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏渐逃。R本人自食惡果不足惜够掠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望茄菊。 院中可真熱鬧疯潭,春花似錦、人聲如沸面殖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)脊僚。三九已至相叁,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間辽幌,已是汗流浹背增淹。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留乌企,地道東北人虑润。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像加酵,于是被迫代替她去往敵國(guó)和親拳喻。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容