91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

微信小程序視圖層的知識點有哪些

發布時間:2022-05-23 13:59:59 來源:億速云 閱讀:181 作者:iii 欄目:移動開發

這篇文章主要介紹“微信小程序視圖層的知識點有哪些”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“微信小程序視圖層的知識點有哪些”文章能幫助大家解決問題。

小程序框架的視圖層由WXML(WeiXin Markup Language,微信標記語言)與WXSS(WeiXin Style Sheet,微信樣式表)編寫,由組件來進行展示。視圖層負責將邏輯層的數據顯示在頁面上,同時將視圖層的事件發送給邏輯層。WXML用來描述頁面的結構,WXSS用于描述頁面的樣式,組件是視圖的基本組成單元。這三者的關系可以類比為HTML,CSS與HTML里面各種標簽的關系。除了這三者之外,還有一套用于小程序的腳本語言——WXS(WeiXin Script)。WXS和WXML結合起來,可以構建出頁面結構。

一、WXML

1、數據綁定

(1)簡單綁定

數據綁定的基本原則:
1)在 data 中定義頁面的數據:在頁面對應的 .js 文件中,把數據定義到 data 對象中即可。

Page({
  data:{
    //字符串類型的數據
    info: 'init data ' ,
    //數組類型的數據
    msgList: [{msg: 'hello'},{msg: "world '}]
  }
})

2)在 WXML 中使用數據:把data中的數據綁定到頁面中渲染,使用 Mustache 語法(雙大括號)將變量包起來即可。語法格式為:

<view>{{要綁定的數據名稱}}</view>

Mustache 語法的主要應用場景如下:
①內容。直接在頁面上顯示數據內容。
②組件屬性。用后端變量來設置前端部分組件的屬性,注意由雙大括號括起來的變量需要在屬性的雙引號內。
③控制屬性。用后端變量來控制前端組件的顯示效果,注意由雙大括號括起來的變量需要在屬性的雙引號內。
④關鍵字。主要用于邏輯判斷。

(2)運算

①三元運算。可以在雙大括號內進行三元運算。
.js中:

Page({
  data: {
    randomNum:Math.random()*10
  }
})

.wxml中:

<view>{{randomNum>=5?'數字大于等于5':'數字小于5'}}</view>

②算術運算。在雙大括號內,可以進行基本的算術運算,會直接顯示運算后的結果。
③邏輯判斷。在雙大括號內,可以進行邏輯運算,返回boolean類型的true或false,可以用于某些屬性的控制。
④字符串運算。在雙大括號內,可以做字符串的拼接運算。
⑤數據路徑運算。對于數組和JSON對象類型的數據,在雙大括號內可以通過索引的方式取其值。

(3)組合

①數組
②對象

2.列表渲染

(1)wx:for

通過 wx:for 可以根據指定的數組,循環渲染重復的組件結構,語法示例如下:
.js中:

Page({
  data: {
    array:['a','b','c']
  }
})

.wxml中:

<view wx:for="{{array}}">
 索引是:{{index}},當前項是:{{item}}
</view>


默認情況下,當前循環項的索引用 index 表示;當前循環項用 item 表示。

(2)手動指定索引和當前項的變量名*

  • 使用 wx:for-index 可以指定當前循環項的索引的變量名

  • 使用 wx:for-item 可以指定當前項的變量名
    .wxml中:

<view wx:for="{{array}}" wx:for-index="idx" wx:for-item="itemName">
 索引是:{{idx}},當前項是:{{itemName}}
</view>

(3)wx:key

類似于 Vue 列表渲染中的 :key,小程序在實現列表渲染時,也建議為渲染出來的列表項指定唯一的 key 值,從而提高渲染的效率,示例代碼如下:
.js中:

Page({
  data: {
    userList:[
      {id:1,name:'冠軍'},
      {id:2,name:'亞軍'},
      {id:3,name:'季軍'}
    ]
  }
})

.wxml中:

<view wx:for="{{userList}}" wx:key="id">{{item.name}}</view>


wx:key的值以如下兩種形式提供:
1)字符串。代表在wx:for循環的數組中某一項的某個屬性,該屬性的值需要是列表中唯一的字符串或者數字,且不能動態改變。
2)保留關鍵字*this。代表在wx:for循環中的某一項本身,這種表示需要這一項本身是一個唯一的字符串或者數字。

3.條件渲染

(1)wx:if

在小程序中,使用 wx:if="{{condition}}" 來判斷是否需要渲染該代碼塊,也可以用 wx:elif 和 wx:else 來添加 else 判斷。示例如下:
.js中:

Page({
  data: {
    type:1
  }
})

.wxml中:

<view wx:if="{{type === 1}}">男</view>
<view wx:elif="{{type === 2}}">女</view>
<view wx:else>保密</view>

(2)結合 <block> 使用 wx:if

如果要一次性控制多個組件的展示與隱藏,可以使用一個 <block ></block > 標簽將多個組件包裝起來,并在<block> 標簽上使用 wx:if 控制屬性,示例如下:

<block wx:if="{{true}}">
 <view>view1</view>
 <view>view2</view>
</block>

注意: <block> 并不是一個組件,它只是一個包裹性質的容器,不會在頁面中做任何渲染。

(3)hidden

在小程序中,直接使用 hidden="{{ condition }}" 也能控制元素的顯示與隱藏:

<view hidden="{{flag}}">true隱藏,false顯示</view>

(4)wx:if 對比 hidden

1)運行方式不同:
wx:if 以動態創建和移除元素的方式,控制元素的展示與隱藏。
hidden 以切換樣式的方式(display: none/block;),控制元素的顯示與隱藏。
2)使用建議:
頻繁切換時,建議使用 hidden。
控制條件復雜時,建議使用 wx:if 搭配 wx:elif、wx:else 進行展示與隱藏的切換。

4.事件

事件是視圖層到邏輯層的通信方式,它可以將用戶的行為反饋到邏輯層講行處理。事件一般綁定在組件上,當設定監聽的事件被觸發時,視圖層會將攜帶了id、dataset、touches等信息的事件對象發送到邏輯層中,此時框架就會執行邏輯層中
對應的事件處理函數,來響應用戶的操作。

事件分為冒泡事件和非冒泡事件。

  • 冒泡事件:當一個組件上的事件被觸發后,該事件會向父節點傳遞。

  • 非冒泡事件:當一個組件上的事件被觸發后,該事件不會向父節點傳遞。

(1)事件的使用方式

.wxml中:

<button type="primary" bindtap="btnTapHandler">按鈕</button>

.js中定義事件處理函數:

Page({
  // 定義按鈕的事件處理函數
  btnTapHandler(event){
    console.log(event)
  }
})

(2)事件的分類

(3)事件的綁定和冒泡

(4)事件的捕獲階段

(5)事件對象

當組件觸發事件時。邏輯層綁定該事件的處理函數會收到一個事件對象。

(6)在事件處理函數中為 data 中的數據賦值

通過調用 this.setData(dataObject) 方法,可以給頁面 data 中的數據重新賦值。示例如下:
.wxml中:

<button type="primary" bindtap="countChange">+1</button>

.js中定義事件處理函數:

Page({
  data: {
    count:0
  },
  
  //+1 按鈕的事件處理函數
  countChange(){
    this.setData({
      count:this.data.count +1
    })
  }
})

(7)事件傳參

小程序中的事件傳參比較特殊,不能在綁定事件的同時為事件處理函數傳遞參數。可以為組件提供 data-* 自定義屬性傳參,其中 * 代表的是參數的名字,示例代碼如下:

.wxml中:( info 會被解析為參數的名字,數值 2 會被解析為參數的值。)

<button type="primary" bindtap="binTap2" data-info="{{2}}">+2</button>

.js中:(在事件處理函數中,通過 event.target.dataset.參數名 即可獲取到具體參數的值)

Page({
  data: {
    count:0
  },
  
  //+2 
  binTap2(event){
    this.setData({
      count:this.data.count + event.target.dataset.info
    })
  }
})

(8)bindinput 的語法格式

在小程序中,通過 input 事件來響應文本框的輸入事件。
.wxml中:

<input bindinput="inputHandler"></input>

.js 中定義事件處理函數:

Page({
  //input輸入框的事件處理函數
  inputHandler(event){
    console.log(event.detail.value)
  }
})

(9)實現文本框和 data 之間的數據同步

實現步驟:①定義數據;②渲染結構;③美化樣式;④綁定 input 事件處理函數。

5.模板

6.引用

WXML提供兩種文件引用方式:import 和 include
1)import 可以在該文件中使用目標文件定義的模板。import 有作用域的概念,即只會導入目標文件中定義的模板,而不會導入目標文件導入的模板。
2)include 可以將目標文件除了<template/><wxs/>外的整個代碼引入,相當于復制到 include 位置。

二、WXSS

WXSS (WeiXin Style Sheets)是一套樣式語言,用于美化 WXML 的組件樣式,類似于網頁開發中的 CSS。WXSS 具有 CSS 大部分特性,同時,WXSS 還對 CSS 進行了擴充以及修改,以適應微信小程序的開發。
與 CSS 相比,WXSS 擴展的特性有:

  • rpx 尺寸單位

  • @import 樣式導入

1.尺寸單位

rpx(responsive pixel)是微信小程序獨有的,用來解決屏適配的尺寸單位。
rpx 的實現原理非常簡單:鑒于不同設備屏幕的大小不同,為了實現屏幕的自動適配,rpx 把所有設備的屏幕,在寬度上等分為 750 份(即:當前屏幕的總寬度為 750rpx)。

  • 在較小的設備上,1rpx 所代表的寬度較小

  • 在較大的設備上,1rpx 所代表的寬度較大

小程序在不同設備上運行的時候,會自動把 rpx 的樣式單位換算成對應的像素單位來渲染,從而實現屏幕適配。

在 iPhone6 上,屏幕寬度為375px,共有 750 個物理像素,等分為 750rpx。則:
750rpx = 375px = 750 物理像素
1rpx = 0.5px = 1物理像素
官方建議:開發微信小程序時,設計師可以用 iPhone6 作為視覺稿的標準。

2.樣式導入

使用 WXSS 提供的 @import 語法,可以導入外聯的樣式表。
@import 后跟需要導入的外聯樣式表的相對路徑,用 ; 表示語句結束。

3.內聯樣式

內聯樣式是框架組件上支持使用 style、class 屬性來控制組件的樣式。
1)style:用于接收動態樣式,在運行時會進行解析。
2)class:用于指定樣式規則。其值是樣式規則中類選擇器名(樣式類名)的集合。一般將靜態樣式寫到對應樣式類名的定義中。多個樣式類名之間用空格分隔。

4.選擇器

和CSS一樣,WXSS也需要使用選擇器來決定樣式的作用對象。

5.全局樣式與局部樣式

1)全局樣式:定義在 app.wxss 中的樣式為全局樣式,作用于每一個頁面。
2)局部樣式:在頁面的 .wxss 文件中定義的樣式為局部樣式,只作用于當前頁面。

注意:
當局部樣式和全局樣式沖突時,根據就近原則,局部樣式會覆蓋全局樣式。
當局部樣式的權重大于或等于全局樣式的權重時,才會覆蓋全局的樣式。

三、WXS

1.概念

WXS(WeiXin Script)是小程序獨有的一套腳本語言,結合 WXML,可以構建出頁面的結構。

2.應用場景

wxml 中無法調用在頁面的 .js 中定義的函數,但是,wxml 中可以調用 wxs 中定義的函數。因此,小程序中 wxs 的典型應用場景就是“過濾器”。

3.wxs 和 JavaScript 的關系

雖然 wxs 的語法類似于 JavaScript,但是 wxs 和 JavaScript 是完全不同的兩種語言:
(1)wxs 有自己的數據類型:

  • number 數值類型

  • string 字符串類型

  • boolean 布爾類型

  • object 對象類型

  • function函數類型

  • array 數組類型

  • date 日期類型

  • regexp 正則

(2)wxs 不支持類似于 ES6 及以上的語法形式

  • 不支持:let、const、解構賦值、展開運算符、箭頭函數、對象屬性簡寫、etc…

  • 支持:var 定義變量、普通 function函數等類似于 ES5 的語法

(3)wxs 遵循 CommonJS 規范

  • module 對象

  • require() 函數

  • module.exports 對象

4.內嵌 wxs 腳本

wxs 代碼可以編寫在 wxml 文件中的 <wxs> 標簽內,就像 Javascript 代碼可以編寫在 html 文件中的 <script> 標簽內一樣。
wxml 文件中的每個 <wxs></wxs> 標簽,必須提供 module 屬性,用來指定當前 wxs 的模塊名稱,方便在 wxml 中訪問模塊中的成員。
.wxml中:

<view>{{m1.toUpper(username)}}</view>

<wxs module="m1">
  //將文本轉為大寫形式zs -> ZS
  module.exports.toUpper = function(str) {
    return str.toUpperCase()
  }
</wxs>

5.定義外聯的 wxs 腳本

wxs 代碼還可以編寫在以 .wxs 為后綴名的文件內,就像 javascript 代碼可以編寫在以 .js 為后綴名的文件中一樣。示例代碼如下:

//tools.wxs文件
function toLower(str) {
  return str.toLowerCase()
}

module.exports = {
  toLower: toLower
}

6.使用外聯的 wxs 腳本

在 wxml 中引入外聯的 wxs 腳本時,必須為 標簽添加 module 和 src 屬性,其中:

  • module 用來指定模塊的名稱

  • src 用來指定要引入的腳本的路徑,且必須是相對路徑

示例代碼如下:

<!--調用m2模塊中的方法-->
<viewr>{{m2.toLower(country)}}</view>

<!--引用外聯的tools.wxs腳本,并命名為 m2-->
<wxs src=" ../../utils/tools.wxs " module="m2"></wxs>

7.WXS 的特點

(1)與 JavaScript 不同
為了降低 wxs(WeiXin Script)的學習成本, wxs 語言在設計時借大量鑒了 JavaScript 的語法。但是本質上,wxs 和 JavaScript 是完全不同的兩種語言!
(2)不能作為組件的事件回調
wxs 典型的應用場景就是“過濾器”,經常配合 Mustache 語法進行使用。但是,在 wxs 中定義的函數不能作為組件的事件回調函數。
(3)隔離性
隔離性指的是 wxs 的運行環境和其他 JavaScript 代碼是隔離的。體現在如下兩方面:
①wxs 不能調用 js 中定義的函數
②wxs 不能調用小程序提供的 API
(4)性能好
①在 iOS 設備上,小程序內的 WXS 會比 JavaScript 代碼快 2 ~ 20 倍
②在 android 設備上,二者的運行效率無差異

關于“微信小程序視圖層的知識點有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

奎屯市| 南华县| 文安县| 潞西市| 那曲县| 吐鲁番市| 武强县| 白水县| 安新县| 司法| 民乐县| 汝南县| 平原县| 多伦县| 留坝县| 宁海县| 庆安县| 惠州市| 和龙市| 万荣县| 靖安县| 台南县| 乌拉特后旗| 图木舒克市| 克东县| 石首市| 张北县| 宣武区| 星子县| 炎陵县| 博罗县| 油尖旺区| 汉阴县| 即墨市| 钦州市| 田林县| 龙门县| 乐平市| 开鲁县| 拉萨市| 诸城市|