加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入
  • 正文
    • 第一步、申請(qǐng)一個(gè)小程序賬號(hào)!
    • 第二步、小程序基本文件介紹
    • 第三步、頁(yè)面創(chuàng)建
    • 第四步、條件渲染 介紹
    • 第五步
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

最簡(jiǎn)單上手微信小程序

04/29 15:47
1039
閱讀需 20 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

微信小程序的開(kāi)發(fā)跟普通前端網(wǎng)頁(yè)開(kāi)發(fā)很像很像,都有三劍客(html、css、JavaScript),但小程序也有一些它的特點(diǎn)。如果之前有了一些前端的基礎(chǔ),那小程序上手會(huì)非???,如果沒(méi)有,也沒(méi)關(guān)系,下面會(huì)從零開(kāi)始教你搭建一個(gè)簡(jiǎn)單實(shí)用的備忘錄小程序。奔著一個(gè)目標(biāo)結(jié)果去學(xué)習(xí),才是最高效的學(xué)習(xí)方法。

如果想了解提前了解一下html和css歡迎康康我的文章哦 高效入門(mén)html5 ,高效入門(mén)css3 。

如果想快速體驗(yàn)效果,app.json、wxml、wxss、js 文件的源碼下面已經(jīng)給出,粘貼進(jìn)小程序就可以。

在這里插入圖片描述

以下所有內(nèi)容基于 小程序官方文檔 和個(gè)人開(kāi)發(fā)經(jīng)驗(yàn)。

第一步、申請(qǐng)一個(gè)小程序賬號(hào)!

小程序賬號(hào)注冊(cè) ,在這個(gè)網(wǎng)頁(yè)注冊(cè)好自己的賬號(hào)后,進(jìn)入 小程序后臺(tái) ,查看并記錄自己的AppID,有了這個(gè)你的小程序才能上線!在這里你可以管理你的小程序的權(quán)限,如查看數(shù)據(jù)報(bào)表,發(fā)布小程序等。

在這里插入圖片描述

下載并打開(kāi)微信開(kāi)發(fā)者工具

微信開(kāi)發(fā)者工具就是開(kāi)發(fā)小程序的IDE,當(dāng)然也可以用VsCode,看個(gè)人習(xí)慣,新手用開(kāi)發(fā)者工具沒(méi)毛病。 進(jìn)入下面網(wǎng)頁(yè)按電腦配置下載相應(yīng)安裝包就行啦。

開(kāi)發(fā)者工具下載

在這里插入圖片描述

我們打開(kāi)微信開(kāi)發(fā)者工具

在這里插入圖片描述

起一個(gè)項(xiàng)目名,選一個(gè)目錄,不使用云服務(wù),模板選JavaScript-基礎(chǔ)模板,ok!

第二步、小程序基本文件介紹

  • app.js:全局入口文件,onLaunch()里放初始化的內(nèi)容。(我們不需要?jiǎng)舆@里)
  • app.json:全局配置文件。(里面不能有注釋)(單獨(dú)頁(yè)面的.json文件的配置項(xiàng)會(huì)覆蓋 app.json 中相同的配置項(xiàng))

三劍客

  • wxml:可以理解為就是微信的html哈哈哈,跟html是一個(gè)邏輯,是整個(gè)小程序的框架文件,比如當(dāng)前頁(yè)面顯示什么內(nèi)容,按什么結(jié)構(gòu)框架去顯示等等。
  • wxss:可以理解為就是小程序的css文件,是整個(gè)小程序的樣式文件,就是渲染,讓頁(yè)面看起來(lái)更美觀,比如設(shè)置頁(yè)面的內(nèi)容顏色,字體大小等等。
  • js:如果一個(gè)app一打開(kāi)只顯示頁(yè)面而沒(méi)有任何交互功能,跟報(bào)紙沒(méi)有區(qū)別。js文件是開(kāi)發(fā)的核心,與前端的js文件一樣,跑的是JavaScript代碼,是小程序的邏輯文件,負(fù)責(zé)整個(gè)小程序的邏輯功能,比如按一下某個(gè)地方就響應(yīng)上面功能,這些都在js文件里定義。

第三步、頁(yè)面創(chuàng)建

在pages目錄下新建文件夾,命名為demo

在這里插入圖片描述

demo文件夾下新建頁(yè),命名也是demo,回車(chē)

在這里插入圖片描述

直接自動(dòng)生成 js、json、wxml和wxss 四個(gè)基本文件,方便得不行!

在這里插入圖片描述

有個(gè)更絕的方法,進(jìn)入app.json,在pages里加入一個(gè)頁(yè)面的地址,直接生成改名稱的文件夾并包含四個(gè)基本文件。

在這里插入圖片描述

將pages/demo/demo往上移到第一位,再按一下編譯,發(fā)現(xiàn)小程序一開(kāi)始進(jìn)入的頁(yè)面就變成了我們新建的demo頁(yè),因?yàn)槲覀冞€沒(méi)加代碼,所以只顯示了一條默認(rèn)的地址,下面開(kāi)搞!

在這里插入圖片描述
在這里插入圖片描述

app.json配置

我們可以看到app.json里面的window代碼如下

在這里插入圖片描述

把它改為

"backgroundTextStyle": "dark",
"navigationBarBackgroundColor": "#f60",
"navigationBarTitleText": "第一個(gè)小程序",
"navigationBarTextStyle": "white"

編譯,發(fā)現(xiàn)上方顯示欄變了,#f60是橙色

在這里插入圖片描述

wxml文件配置

打開(kāi)demo.wxml文件,會(huì)發(fā)現(xiàn)只有一條<text>pages/demo/demo.wxml</text>, 我們會(huì)發(fā)現(xiàn)頁(yè)面中的確也只顯示pages/demo/demo.wxml,試一下改動(dòng)一下<view>…</view> 里面的內(nèi)容,小程序頁(yè)面就會(huì)顯示相應(yīng)內(nèi)容。

實(shí)際上html文件,或wxml文件,由一個(gè)個(gè)標(biāo)簽< ></ >組成,標(biāo)簽之間的就是內(nèi)容,標(biāo)簽決定了整個(gè)頁(yè)面的框架。標(biāo)簽的種類非常多,只能在一步步學(xué)習(xí)中積累。放內(nèi)容的標(biāo)簽可以理解為容器,wxml里分塊狀容器<view> 和條狀容器<text>。

要想使用邏輯,可以直接在標(biāo)簽里加兩個(gè)雙引號(hào),如<text>{{ 10 + 20 }}</text>,頁(yè)面會(huì)直接算出30.

<text>{{ 10 + 20 }}</text>  <!-- 注釋-->

js文件配置

data: {
    mytext:"hhh",
    datalist:["111","222","333"]
},  /*注釋*/

data中放的就是初始化的數(shù)據(jù),試一下放上上面的數(shù)據(jù),在wxml中:
<view>{{ mytext }}</view> , 則 “hhh” 會(huì)被拿到并打印出來(lái),所以雙括號(hào)里還能放變量。

試一下在wxml跑下面的代碼:

<view wx:for="{{datalist}}"> 
    {{item}}--{{index}}
</view>

結(jié)果如下,它能把data中定義的datalist數(shù)組中所有數(shù)據(jù)打印出(動(dòng)態(tài)數(shù)組遍歷),我們的備忘錄需要用到這個(gè)功能!

在這里插入圖片描述

wxss文件配置

每個(gè)標(biāo)簽都可以定義一個(gè)class,如

<view class="hello"> hello </view>

這時(shí)這個(gè)hello就可以在css文件里定義樣式!
打開(kāi)wxss,

.hello{
    color:red;                         /*字體紅色*/
	font-size:50px;                    /*字體大小為30像素*/
	background-color:lightblue;        /*背景為天藍(lán)色*/
	text-align:center;                 /*居中顯示*/
    }

發(fā)現(xiàn)hello變成了

在這里插入圖片描述

也可以直接對(duì)view進(jìn)行定義,這樣所以的view標(biāo)簽都會(huì)被統(tǒng)一定義,class就會(huì)更靈活一點(diǎn)。

view{
    color:red;                         /*字體紅色*/
	font-size:50px;                    /*字體大小為30像素*/
	background-color:lightblue;        /*背景為天藍(lán)色*/
	text-align:center;                 /*居中顯示*/
    }

注意!定義class的樣式需要前面加個(gè)小數(shù)點(diǎn) . ,直接對(duì)標(biāo)簽操作則不需要。

第四步、條件渲染 介紹

其實(shí)不是所有的邏輯都必須在js中定義,簡(jiǎn)單的條件判斷,如 if else, 可以在wxml中定義。

先在js文件的data中加入

isCreated : true

然后在wxml中,加入

<view wx:if="{{isCreated}}">條件渲染if</view>
<view wx:else>條件渲染else</view>

編譯,會(huì)發(fā)現(xiàn) 條件渲染if 被打印出,如果data中把 isCreated 改成 false,則 條件渲染else 被打印出,這就是條件渲染,選擇性地顯示內(nèi)容。

事件 介紹

就是按一下按鍵后觸發(fā)的功能,我們叫為觸發(fā)事件。我們先來(lái)創(chuàng)建一個(gè)按鍵,在wxml使用<button>標(biāo)簽:

<button type="primary" bindtap="handleTap">click</button>

type定義按鍵的大小,primary是正常,mini是迷你。bindtap=“handleTap” 把按鍵綁定到了一個(gè)叫 handleTap 觸發(fā)事件,這個(gè)事件需要到j(luò)s文件定義。

在這里插入圖片描述

在js中,接著data,新建一個(gè)函數(shù) handleTap

 handleTap(){
        console.log("click")
    },

點(diǎn)一下編譯,按一下按鍵,發(fā)現(xiàn)終端打印出了click!點(diǎn)一下就打印一下,說(shuō)明我們的事件觸發(fā)功能成功!
進(jìn)階一下,如果想要按一下就改變前面定義的mytext和isCreated變量,怎么辦?easy:

 handleTap(){
        console.log("click"),
        this.setData({
            mytext:"xiaoming",
            isCreated:!this.data.isCreated  //取反
        })
    },

需要注意,小程序里改變量的值必須得這么搞,直接mytext:。。。會(huì)報(bào)錯(cuò)。

第五步

我們所需的基礎(chǔ)知識(shí)已經(jīng)介紹完啦,下面正式做備忘錄!

頁(yè)面框架

先把你的wxml代碼刪掉,把下面這段代碼粘貼進(jìn)你的wxml里,編譯,先看看結(jié)果,再解釋

<view class="box">
    <input type="text" bindinput="handleInput" value="{{mytext}}"/>
    <button bindtap="handleAdd">add</button>
</view>

<view wx:if="{{datalist.length>0}}">
    <view wx:for="{{datalist}}" wx:key="index" class="list"> 
        <text>{{item}}</text>
        <button size="mini" bindtap="handleDelete" data-myid="{{index}}">delete</button>
    </view>
</view>

<view wx:else>空空如也</view>

在這里插入圖片描述

結(jié)果應(yīng)該長(zhǎng)這樣,add按鍵左邊是輸入框,因?yàn)檫€沒(méi)有css定義它的長(zhǎng)度和邊框,所以看不見(jiàn)。從代碼可以看出總共就三個(gè)大的view標(biāo)簽,其實(shí)功能上只有兩個(gè),下面兩個(gè)組成一個(gè)條件渲染塊。

第一個(gè)view標(biāo)簽里面包了一個(gè)<input> 標(biāo)簽(格式定義為輸入文本,綁定了一個(gè)input的事件,命名為 handleInput,就是輸入框內(nèi)容一旦變化就會(huì)觸發(fā),最后的value是定義初始化時(shí)輸入框的內(nèi)容)和一個(gè)<button> 標(biāo)簽(綁定了一個(gè)按鍵觸發(fā)事件,命名為 handleAdd)。

下面的一大坨view里面看著很復(fù)雜,其實(shí)easy啦。先條件判斷一下datalist中有無(wú)數(shù)據(jù),如果有數(shù)據(jù)(有備忘事件),就進(jìn)入里面的view。

我們看到一個(gè)前面介紹過(guò)的 for 循環(huán)遍歷datalist,并把里面每個(gè)數(shù)據(jù)都標(biāo)上key,就是wx:key=“index” 這句代碼,方便之后對(duì)單獨(dú)地?cái)?shù)據(jù)進(jìn)行操作(刪除),當(dāng)然為了在css中定義它的樣式讓它更好看點(diǎn),給它定義一個(gè)class。

再往里看,就是遍歷出的每個(gè)數(shù)據(jù),先以text標(biāo)簽裝著數(shù)據(jù),再在它后面跟上一個(gè)delete按鍵,在按鍵中,綁定了一個(gè)按鍵事件 handleDelete ,data-myid="{{index}} 用于給每個(gè)按鍵都帶上一個(gè)id,跟前面讓數(shù)據(jù)帶上key是一樣的道理,為了區(qū)別出每一個(gè)按鍵。

若datalist里面沒(méi)數(shù)據(jù),就會(huì)在頁(yè)面顯示“空空如也” 哈哈哈 <view wx:else>空空如也</view> 應(yīng)該很容易理解

頁(yè)面美化

同上,把wxss里面代碼刪掉,將下面的代碼粘貼進(jìn)去。

input{
    border:1px solid black;
    height:50px;
    /*line-height: 50px;*/
    border-radius: 10px;
}

.box{
    display: flex;
    flex-direction: row;
}

.list{
    display: flex;
    flex-direction: row;
}


.list text{
    width: 150px;
}

在這里插入圖片描述

加了wxss渲染頁(yè)面后,整個(gè)頁(yè)面看起來(lái)就符合標(biāo)準(zhǔn)了。代碼其實(shí)大家看著應(yīng)該就能懂,我再啰嗦幾句。

input標(biāo)簽,border定義它的邊框,厚1px(px是像素的意思,就是1個(gè)像素的厚度),height就是輸入框的高度,border-radius定義了邊框的圓角。

輸入框加add按鍵我們希望它們并排在第一行,所以對(duì)它們整體所定義的box類就可以,flex-direction: row; 就是讓他們排成一行,以flex為單位會(huì)自動(dòng)拉伸,很方便。

對(duì)list類的定義同理啦。

當(dāng)然各位也可以再加上點(diǎn)顏色或調(diào)一下大小。

邏輯設(shè)計(jì)

整個(gè)頁(yè)面有了,下面加入靈魂!JavaScript。

將下面代碼的粘貼進(jìn)去js的Page里,注意,三個(gè)事件函數(shù)跟在data的后面,整體在Page里面,別把Page刪了…

    data: {
        mytext:"",
        datalist:["111","222","333"]
    },

    handleInput(evt){
        //console.log("input",evt.detail.value),
        this.setData({
            mytext:evt.detail.value
        })

    },

    handleAdd(){
        console.log(this.data.mytext),
        this.setData({
            datalist:[...this.data.datalist,this.data.mytext],
            mytext:""
        })
    },

    handleDelete(evt){
        console.log("delete",evt.target.dataset.myid),

        this.data.datalist.splice(evt.target.dataset.myid, 1)
        this.setData({
            datalist:this.data.datalist
        })    
    },

編譯一下康康,整個(gè)備忘錄搞定啦!將備忘事件輸入輸入框,按add,事件會(huì)被添加進(jìn)入,然后按delete會(huì)刪除對(duì)應(yīng)的事件。

handleInput函數(shù):定義為只要輸入框內(nèi)容變化,就把當(dāng)時(shí)的值存進(jìn)mytext變量,所以一頓操作后,mytext存儲(chǔ)最后確定的備忘事件,然后等著add函數(shù)把它取出來(lái)。(evt是調(diào)用的參數(shù),可以理解為當(dāng)前頁(yè)面)

handleAdd函數(shù):先用console.log把mytext的值打印出來(lái)看一看對(duì)不對(duì),然后我們用到前面介紹的改變量的值方法,setData,將mytext的值(備忘事件)加入datalist數(shù)組里,但人家數(shù)組里面正常還有別的數(shù)據(jù)呀,怎么在后面加進(jìn)去呢?[…this.data.datalist,this.data.mytext], 前面那三個(gè)點(diǎn)很重要,就是說(shuō)不管datalist前面有多少值,我只在它后面插入一個(gè)mytext,同時(shí)將mytext變量清空,等待下一個(gè)備忘事件輸入。

所以一按下add鍵,datalist就會(huì)多一個(gè)數(shù)據(jù),所以wxml中循環(huán)遍歷數(shù)組時(shí)就會(huì)多生成一個(gè)view標(biāo)簽和delete按鍵,在頁(yè)面實(shí)時(shí)顯示出來(lái)。(頁(yè)面一直處于刷新?tīng)顟B(tài),不是按下了按鍵才刷新)

handleDelete函數(shù):先將按下的delete鍵對(duì)應(yīng)的id打印出來(lái)康康。下面來(lái)個(gè)高端操作,將數(shù)組中對(duì)應(yīng)id的值刪掉,同時(shí)后面的值往前移一位,一行代碼搞定,this.data.datalist.splice(evt.target.dataset.myid, 1), 再將這個(gè)變化了的datalist保存,ok!

在這里插入圖片描述

至此,這個(gè)備忘錄講完啦,這是作為小程序入門(mén)比較高效的小項(xiàng)目,如果想快速體驗(yàn)效果,app.json、wxml、wxss、js 文件的源碼上面已經(jīng)給出,粘貼進(jìn)去就可以。

其實(shí)小程序的開(kāi)發(fā)已經(jīng)有很多很多的模板,比如商場(chǎng)、點(diǎn)餐等,改改數(shù)據(jù)就行,官方的開(kāi)放文檔也很全,但還是要多動(dòng)手。

之后可能會(huì)出更多有趣項(xiàng)目的教學(xué),如果想看其他計(jì)算機(jī)和電子的學(xué)習(xí)內(nèi)容歡迎來(lái)我主頁(yè)逛逛呀哈哈。

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
ABM3-8.000MHZ-D2Y-T 1 Abracon Corporation CRYSTAL 8.0000MHZ 18PF SMD

ECAD模型

下載ECAD模型
$0.47 查看
SN74LVC1G08DCKR 1 Rochester Electronics LLC AND Gate,
$0.23 查看
AT27C512R-70PU 1 Microchip Technology Inc IC OTP 512KBIT 70NS 28DIP

ECAD模型

下載ECAD模型
$3.43 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜