微信小程序開發學習——小程序基本架構

1.創建一個包含:首頁、咨詢、關于我們 3個標簽的小程序,每個標簽都有對應的頁面、圖標和標簽文字。

知識點:app.json文件對小程序進行全局配置,同名.json文件對本窗口進行配置

app.json屬性:

pages用于指定小程序由哪些頁面組成,每一項都對應一個頁面的路徑信息,文件名不需要寫后綴,編譯后會自動尋找.json,.js,.wxml,.wxss四個文件,若為空,則自動創建。

window屬性:

tabBar屬性:

list屬性:

實現效果:

完整代碼如下:

//app.json{"pages": ["pages/index/index","pages/logs/logs","pages/flex/flex","pages/float/float","pages/index/flexlayout","pages/temperature/tem","pages/tiaojian/tiaojian","pages/chengji/chengji","pages/xunhuan/xunhuan","pages/jishiqi/jishiqi","pages/suijiflag/suijiflag","pages/zixun/zixun","pages/guanyu/guanyu","pages/bangding/bangding","pages/zuoyongyu/zuoyongyu","pages/ifxuanran/ifxuanran"],"window": {"backgroundTextStyle": "light","navigationBarBackgroundColor": "#fff","navigationBarTitleText": "礦研友歡迎您","navigationBarTextStyle": "black"},"tabBar": {"color": "#000000","selectedColor": "#00f","list": [{"pagePath": "pages/index/index","text": "首頁","iconPath": "/images/home-off.png","selectedIconPath": "/images/home-on.png"},{"pagePath": "pages/zixun/zixun","text": "資訊","iconPath": "/images/zixun-off.png","selectedIconPath": "/images/zixun-on.png"},{"pagePath": "pages/guanyu/guanyu","text": "關于我們","iconPath": "/images/guanyu-off.png","selectedIconPath": "/images/guanyu-on.png"}]},"style": "v2","sitemapLocation": "sitemap.json"
}
//zixun.json
{"navigationBarBackgroundColor": "#0f0","navigationBarTitleText": "咨訊","navigationBarTextStyle": "black"
}

?2.小程序的執行順序

小程序注冊函數App(Object object)的參數屬性:

注冊函數App(Object object)用于注冊小程序,該函數必須在app.js中調用,且只調用一次。

包含屬性:

Page(Object object)函數:

用于注冊小程序中的頁面。包含的屬性有:

小程序整個生命周期的執行順序為:

3.數據及事件綁定

wxml:是框架設計的一套標簽語言,結合基礎組件、事件系統,可以構建出頁面的結構。

data對象:是頁面第一次渲染時,使用的初始數據,wxml中的動態數據均來自對應的Page的data。頁面加載時,data以JSON字符串的形式由邏輯層傳至渲染層,數據類型包括:字符串,數字,布爾值,對象,數組等。

數據綁定:渲染層可以通過wxml對數據進行綁定,數據綁定使用Mustache語法(即雙括號:{{var}})將變量包起來,可以用作:內容、組件屬性、控制屬性、關鍵字、運算、組合、數組、對象等場景。

setData()函數:用于將數據從邏輯層發送到視圖層(異步過程),同時改變對應的this.data的值(同步過程)

事件綁定:事件是視圖層到邏輯層的通訊方式,它可以將用戶的行為反饋到邏輯層進行處理。事件可以綁定在組件上,當觸發事件后,就會執行邏輯層中對應的事件處理函數。事件對象可以額外攜帶信息,如id,dataset,touches。

樣例:

實現代碼:

<!--pages/bangding/bangding.wxml-->
<view class="box">
<view class="title">數據綁定示例</view>
<view>算術運算綁定:{{a}}+{{a}}+{{a}}={{a+b+c}}</view>
<view>對象綁定-學號:{{Student.idnumber}}</view>
<view>對象綁定-姓名:{{Student.name}}</view>
<view>對象綁定-生日:{{Student.birthday}}</view>
<view>數組綁定-array[0]:{{array[0]}}</view>
<view>數組綁定-array[1]:{{array[1]}}</view>
<view>數組綁定-array[2]:{{array[2]}}</view>
<button type="primary" bindtap="modify">修改綁定數據</button>
</view>
// pages/bangding/bangding.js
Page({data: {a : 10,b : 20,c : 30,Student :{idnumber:"2010110225",name:"Ann","birthday":"20011230"},array:['2018','2019','2020']},modify:function(){this.setData({a:100,b:200,c:300,Student:{idnumber:"2010110221",name:"fish",birthday:"20011123"},array:['2021','2022','2023']})}
})

?通過.js中的data對象初始化綁定的數據,通過setData()函數修改綁定的數據。注意,不是所有的綁定數據都要進行初始化,setData()函數綁定的數據直接重新渲染,不進行初始化。

4.變量和函數的作用域以及模塊化

實現效果示例:

跟其他編程語言一樣,在JavaScript中文件中聲明的變量和函數,只在該文件中有效。不同文件中的同名變量、函數互不影響。通過全局函數getApp()可以獲取全局的應用實例。

可以將一些公共的代碼抽離成一個單獨的js文件作為一個模塊,模塊通過module.exports或者exports對外暴露接口,在需要這些模塊的文件中,使用require(path)將公共代碼引入。值得注意的是,path只支持相對路徑!

完整代碼如下:

<!--pages/zuoyongyu/zuoyongyu.wxml-->
<view class="box">
<view class="title">變量模塊化示例</view>
<view>全局變量:{{msg1}}</view>
<view>全局函數:{{msg2}}</view>
<view>本文件變量:{{msg3}}</view>
<view>本文件函數:{{msg4}}</view>
<view>其他模塊變量:{{msg5}}</view>
<view>其他模塊函數:{{msg6}}</view></view>
// pages/zuoyongyu/zuoyongyu.js
const app = getApp()//獲取全局應用實例
var util = require('../utils/utils.js');
var zuoyongyuMsg = "我是來自zuoyongyu.js的變量";
function zuoyongyufunc(){return "我是來自zuoyongyu.js的函數";
}Page({data:{msg1:app.globalMsg,msg2:app.globalFunc(),msg3:zuoyongyuMsg,msg4:zuoyongyufunc(),msg5:util.utilMsg,//使用utils模塊變量msg6:util.utilFunc()//使用utils模塊函數}
})
// app.js
App({globalFunc: function(){return "這是來自app.js的函數";},globalMsg : '這是來自app.js的變量',})
  // pages/utils/utils.jsvar utilMsg = "這是來自utls.js的變量";function utilFunc(){return "這是來自utils.js的函數";}module.exports = {utilMsg:utilMsg,utilFunc:utilFunc}

?5.條件渲染

wx:if:

在框架中,使用wx:if="{{condition}}"來判斷是否需要渲染該代碼塊。

如:<view?wx:if="{{color=='red'}}">紅色</view>的含義為如果color值是紅色,那么頁面顯示紅色二字。

同理的,有wx:if那么就會有wx:elif,wx:else。

block wx:if:

因為wx:if是一個控制屬性,需要將它添加到一個標簽上。如果要一次性判斷多個組件標簽,可以使用一個<block/>標簽將多個組件包裝起來,并在上邊使用wx:if控制屬性。

如:

?<block?wx:if="{{length>10}}">

????<view?class="view-item?bc-red">紅色</view>

????<view?class="view-item?bc-green">綠色</view>

????<view?class="view-item?bc-blue">藍色</view>

??</block>

如果length的值>10,那么就會渲染3個view-item組件。

需要注意的是,<block/>并不是一個組件,它僅僅是一個包裝元素,不會在頁面中做任何渲染,只接收控制屬性。

示例:編寫一個利用wx:if 實現顏色顯示的小程序當wx:if放在view中并通過is文件傳遞一種顏色時窗口將顯示該顏色名稱和顏色。當 wx:if 放在block中并傳遞給變量length的值大于10時,將在窗口下方顯示紅、綠、藍三種顏色條,否則將不顯示。

<!--pages/ifxuanran/ifxuanran.wxml-->
<view style="margin:20px;text-align:center;">利用view中的wx:if進行條件渲染<view wx:if="{{color=='red'}}">紅色</view><view wx:elif="{{color=='green'}}">綠色</view><view wx:elif="{{color=='blue'}}">藍色</view><view wx:else>其他顏色</view><view class="view-item" style="background-color:{{color}}"></view>
</view><view style="margin:20px;text-align:center;">利用block中的wx:if進行條件渲染<block wx:if="{{length>10}}"><view class="view-item bc-red">紅色</view><view class="view-item bc-green">綠色</view><view class="view-item bc-blue">藍色</view></block>
</view>
/* pages/ifxuanran/ifxuanran.wxss */
.view-item{width: 100%;height:50px
}.bc-red{background-color:red;
}.bc-blue{background-color: blue;
}.bc-green{background-color: green;
}
// pages/ifxuanran/ifxuanran.js
Page({data:{color:'blue',length:15}
})

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/166126.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/166126.shtml
英文地址,請注明出處:http://en.pswp.cn/news/166126.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

設計模式之建造者(Builder)模式

目錄 1、什么是建造者Builder模式&#xff1f; 2、建造者Builder模式的利與弊 3、建造者Builder模式的應用場景 4、建造者模式中的指導者&#xff08;Director&#xff09;有什么作用&#xff1f; 5、建造者Builder模式與其他模式的關系 小結 1、什么是建造者Builder模式…

百分點科技入選《2023年央國企數字化升級研究報告》

近日&#xff0c;艾瑞咨詢發布了《2023年央國企數字化升級研究報告》&#xff0c;報告總結了央國企數字化升級的方向和特點&#xff0c;并重點研究了基礎平臺及關鍵技術工具、通用及綜合型應用、重要配套建設等方面。報告指出&#xff0c;數據治理是央國企數字化升級過程中的重…

【鴻蒙應用ArkTS開發系列】- 云開發入門實戰二 實現省市地區三級聯動地址選擇器組件(上)

目錄 概述 云數據庫開發 一、創建云數據庫的對象類型。 二、預置數據&#xff08;為對象類型添加數據條目&#xff09;。 三、部署云數據庫 云函數實現業務邏輯 一、創建云函數 二、云函數目錄講解 三、創建resources目錄 四、獲取云端憑據 五、導出之前創建的元數據…

HTML新手入門筆記整理:特殊符號

音標符 音標符 字符 Construct 輸出結果 ?、 a a a? ?′ a a a?n ? a a a? ?&#xff5e; a a a? ??、 O O O? ??′ O O O? ? O O O? ?&#xff5e; O O O? 字符 顯示結果 描述 實體名稱 實體編號 空格 <…

【數據結構】F : 道路建設 (Ver. I)

F : 道路建設 (Ver. I) Description 有N個村莊&#xff0c;編號從1到N&#xff0c;你應該建造一些道路&#xff0c;使每個村莊都可以相互連接。 兩個村A和B是相連的&#xff0c;當且僅當A和B之間有一條道路&#xff0c;或者存在一個村C使得在A和C之間有一條道路&#xff0c;并…

編程實例,隨機抽獎編程

編程實例&#xff0c;隨機抽獎編程 操作步驟&#xff1a; 1、將在本店消費的會員數據導入到抽獎池&#xff0c;可以設定最近多少天內的記錄。 2、點擊 開始隨機抽獎&#xff0c;軟件將從抽獎池隨機抽取9名&#xff0c;并不斷變化&#xff0c;每0.02秒重新隨機抽取9名顯示到屏…

Java 項目中常用注解匯總!! (自整理)

Spring框架的注解 PostMapping("/getDetails") post請求 映射到接口 RequestBody 用來接收HTTP請求體中參數 GetMapping("/getDetails") get請求 映射到接口 RequestParam 用來接收URL中的查詢參數 PutMappi…

7:kotlin 數組 (Arrays)

數組是一種數據結構&#xff0c;它保存固定數量的相同類型或其子類型的值。kotlin中最常見的數組類型是對象類型數組&#xff0c;數組由array類表示。 什么時候使用 當你在kotlin中有特殊的底層需求需要滿足時&#xff0c;可以使用數組。例如&#xff0c;如果你有超出常規應用…

關于js的find的基本用法

Array.prototype.find() 是 JavaScript 的一個數組方法&#xff0c;它被用來在數組中查找一個符合條件的元素。一旦找到第一個符合條件的元素, find() 會立即返回這個元素的值&#xff0c;否則返回 undefined。 以下是 find() 方法的基本語法&#xff1a; arr.find(callback(el…

?LeetCode解法匯總1410. HTML 實體解析器

目錄鏈接&#xff1a; 力扣編程題-解法匯總_分享記錄-CSDN博客 GitHub同步刷題項目&#xff1a; https://github.com/September26/java-algorithms 原題鏈接&#xff1a;力扣&#xff08;LeetCode&#xff09;官網 - 全球極客摯愛的技術成長平臺 描述&#xff1a; 「HTML 實…

利用企業被執行人信息查詢API保障商業交易安全

前言 在當今競爭激烈的商業環境中&#xff0c;企業為了保障商業交易的安全性不斷尋求新的手段。隨著技術的發展&#xff0c;利用企業被執行人信息查詢API已經成為了一種強有力的工具&#xff0c;能夠幫助企業在商業交易中降低風險&#xff0c;提高合作的信任度。 企業被執行人…

如何使用 JavaScript 實現圖片上傳并轉換為 LaTeX 公式

在本教程中&#xff0c;我們將學習如何使用 JavaScript 創建一個上傳圖片的功能&#xff0c;并將所選圖片轉換為 LaTeX 公式。我們將使用 FileReader 對象來讀取圖片并將其轉換為 Base64 格式&#xff0c;然后利用 img2latex API 將其轉換為 LaTeX 公式。 1. HTML 結構 首先&…

SpringMVC日志追蹤筆記整理

新建logback-spring.xml <?xml version"1.0" encoding"UTF-8"?> <configuration><property name"PATH" value"./log/business"></property><appender name"STDOUT" class"ch.qos.logback…

linux進程調度(三)-進程終止

文章目錄 2.3 進程退出的幾種情況2.4 進程終止過程分析2.4.1 exit_notify函數2.4.1.1 forget_original_parent函數2.4.1.1.1 find_child_reaper函數2.4.1.1.2 find_new_reaper函數2.4.1.1.3 reparent_leader函數 2.4.1.2 do_notify_parent函數2.4.1.3 release_task函數 2.4.2 d…

GitHub桌面版

GitHub桌面版 一、GitHub 桌面版二、clone 倉庫三、更新倉庫 一、GitHub 桌面版 二、clone 倉庫 三、更新倉庫

穆桂英掛帥

《穆桂英掛帥》 作家&#xff0f;羅光記 穆桂英掛帥破敵&#xff0c; 威風凜凜立戰場。 鐵甲如云奔雷急&#xff0c; 英姿颯爽傲寒霜。 烽火連天戰鼓擂&#xff0c; 旌旗翻飛壯心驚。 刀光劍影映紅日&#xff0c; 豪情壯志天地驚。 風云變幻戰事急&#xff0c; 英勇穆桂英…

Azure Machine Learning - Azure可視化圖像分類操作實戰

目錄 一、數據準備二、創建自定義視覺資源三、創建新項目四、選擇訓練圖像五、上傳和標記圖像六、訓練分類器七、評估分類器概率閾值 八、管理訓練迭代 在本文中&#xff0c;你將了解如何使用Azure可視化頁面創建圖像分類模型。 生成模型后&#xff0c;可以使用新圖像測試該模型…

溫馨提示!辦理流量卡千萬不要填寫別人的身份證信息,切記!

可以用別人的身份證辦理流量卡嗎&#xff1f;是很多朋友都比較關注的一個問題&#xff0c;在這里明確的告訴大家一下&#xff0c;當然是不可以的。 ?  不管你是在線下營業廳辦理&#xff0c;還是在線上申請&#xff0c;都是需要提供本人的證件信息才能辦理&#xff1a; 1、…

TIDB拓撲結構

TiDB Server&#xff1a;SQL層&#xff0c;負責接受客戶端的連接&#xff0c;執行SQL解析和優化&#xff0c;最終生成分布式執行計劃。TiDB Server為無狀態的&#xff0c;可增加節點負載均衡。 PD (Placement Driver) Server&#xff1a;整個TiDB集群的元信息管理模塊&#xf…

【超詳細】手搓一個微信日記本

&#x1f380; 文章作者&#xff1a;二土電子 &#x1f338; 關注公眾號獲取更多資料&#xff01; &#x1f438; 期待大家一起學習交流&#xff01; 這里對之前的微信記事本小程序進行了重新編寫&#xff0c;增加了更加詳細的步驟描述&#xff0c;將全部圖片都改成了本地圖…