1.text 文本
1⃣️顯示連續空格
<p><text space='ensp'>11</text></p>
<p><text space='emsp'>11</text></p>
<p><text space='nbsp'>111</text></p>
2⃣️文本是否可選,其他組建都無法長按選中
<p><text selectable >11</text></p>
3⃣️是否連續空格,可解析
<p><text decode > & nbsp;& emsp; & lt;</text></p>
2.view 視圖容器
1⃣️hover-class:指令按下去的樣式類;
2⃣️hover-stop-propagation:指定是否阻止本節點的祖先節點出現點擊態;
3⃣️hover-start-time:按住後多久出現點擊態,單位毫秒;
4⃣️hover-stay-time:手指鬆開後點擊態保留時間,單位毫秒;
3.使用全局配置文件app.json
window 節點常用的配置項
//設置導航欄標題文字內容
app.json->window->navigationBarTitleText
//設置下拉loading的樣式
app.json->window->backgroundTextStyle 指定'dark'或者'light'
//設置上拉觸底的距離
app.json->window->onReachBottomDistance 設置新的數值(默認爲50px)
4.wxs 腳本
1⃣️wxs(weiXin Script) 是小程序的一套腳本語言,結合WXML,可以構建出頁面的結構。
wxs 的注意點:
沒有兼容性:不依賴於運行時的基礎庫版本,可以在所有版本的小程序中運行;
與javascript 不同:wxs 與 javascript 是不同的語言,有自己的語法,並不和javascript一致;
隔離性:wxs 的運行環境和其他 javascript 代碼是隔離的,wxs 中不能調用其他 javascript 文件中定義的函數,也不能調用小程序提供的API;
不能作爲事件回調:wxs 函數不能作爲組件的事件回調;
ios設備上比javascript 運行快:由於運行環境的差異,在ios設備上小程序內的wxs 會比javascript 代碼快2~20倍。在android 設備上二者運行效率無差異;
wxs 遵循CommonJS 模塊化規範:
module 對象:每個wxs 都是獨立的模塊,每個模塊均有一個內置的module 對象,每個模塊都有自己獨立的作用域;
module.exports:由於 wxs 擁有獨立作用域,所以在一個模塊裏面定義的變量與函數,默認爲私有的,對其他模塊不可見,通過 module.exports 屬性,可以對外共享本模塊的私有變量與函數;
require 函數:在wxs 模塊中引用其他wxs 文件模塊,可以使用 require 函數;
2⃣️wxs基礎語法
通過module.exports屬性,可以對外共享本模塊的私有變量與函數:
var foo ='hello moto';//定義私有變量 foo
var bar = function(d){//定義私有函數 bar
return d
}
module.exports ={// 通過 module.exports 向外共享私有成員
Foo:foo,//向外共享私有變量 foo
bar:bar//向外共享私有函數 bar
};
module.exports.msg='vivi';//額外向module.exports 中掛載msg 變量
使用 require 引入其它 wxs 模塊:
假設有兩個wxs 模塊,路徑分別爲 /pages/tools.wxs 和/pages/logic.wxs,如果要在 logic.wxs 中引入 tools.wxs 腳本,則示例代碼如下:
// 使用require 倒入 tools.wxs 腳本
var tools =require('./tools.wxs');
//得到的tools對象,可以直接訪問到 tools.wxs 中向外暴露的變量和方法
3⃣️使用 require 的注意點
在wxs 模塊中引用其他的wxs 文件模塊,可以使用 require 函數:
a.只能引用 .wxs 文件模塊,且必須使用相對路徑;
b.wxs 模塊均爲單例:wxs 模塊在第一次被引用時,會自動初始化爲單例對象,多個頁面,多個地方,多次引用,使用的都是同一個wxs 模塊對象;
c.如果一個wxs 模塊在定義之後:一直沒有被引用,則該模塊不會被解析與運行;
4⃣️支持的數據類型
wxs 語言目前共有以下8種數據類型:
number 數值類型;
string 字符串類型;
boolean 布爾類型;
object 對象類型;
function 函數類型;
array 數組類型;
date 日期類型;
regexp 正則;
注意,由於和javascript是不同的語言,不一樣的語法,使用時請先查閱文檔
4.1 內嵌wxs 腳本
a. wxs 代碼可以編寫在wxml 文件中的<wxs></wxs>標籤內,就像javascript 代碼可以編寫在 html文件中的<script></script>標籤內一樣;
b. wxml 文件中的每個<wxs></wxs>標籤,必須提供一個 module 屬性,用來指定當前<wxs></wxs>標籤的模塊名。在單個wxml文件內,建議其值唯一;
//wxml
<wxs module='foo'>
var some_msg ='hello moto';
module.exports = {
msg: some_msg
}
</wxs>
<view>{ {foo.msg } }</view>
4.2 外聯 wxs 腳本
a. wxs 代碼還可以編寫在以 .wxs 爲後綴名的文件內,就像javascript 代碼可以編寫在 .js 爲後綴名的文件中一樣;
b. 在微信開發者工具裏面,右鍵可以直接創建.wxs 文件,在其中直接編寫 WXS 腳本;
// /pages/tools.wxs
var foo ='hello moto';//定義私有變量 foo
var bar = function(d){//定義私有函數 bar
return d
}
module.exports ={// 通過 module.exports 向外共享私有成員
Foo:foo,//向外共享私有變量 foo
bar:bar//向外共享私有函數 bar
};
module.exports.msg='vivi';//額外向module.exports 中掛載msg 變量
c. 在wxml 內引用外聯的 wxs 腳本;
// /pages/index/index.wxml
<wxs src='./../tools.wxs' module='tools'/>
<view> { {tools.msg} } </view>
<view> { {tools.bar(tools.FOO)} } </view>
5.列表渲染
手動指定索引和當前項的變量名。
<view wx:for="{ {array} }" wx:for-item='itemName' wx:for-index='idx'>
索引是 { {idx} } 當前項是:{ {itemName} }
</view>
- wx:for-item:可以指定數組當前元素的變量名;
- wx:for-index:可以指定數組當前下標的變量名;
6.下拉刷新
enablePullDownRefresh:true;
wx.startPullDownRefresh():調用觸發下拉刷新動畫,效果與用戶手動下拉刷新一致;
7.上拉加載更多
data:{
page:1,
msglist:[1,2,3,4,5,6,7,9,10]
}
//設置觸底距離
onReachBottom:function(){
//先讓頁面值自增+1
this.setDate({
page:this.data.page+1
})
const newArr =[]
for(let i =1,i<=10,i++){
const c = (this.data.page-1)*10+i
newArr.push(c)
}
this.setData({
msglist:[...this.data.msglist, ...newArr]
})
}
<view wx-for='{ {msglist} }' wx:key="*this">{ {item} }</view>