本篇文章帶大家了解微信小程式中的wxs模組,介紹一下wxs的使用,希望對大家有幫助!
寫在前面,關(guān)於一些想法:
開發(fā)微信小程式已經(jīng)有一段時間了,不得不說微信小程式的API以及各種封裝好的組件確實很厲害,很大程度上節(jié)約了開發(fā)者的時間,但是對我來說,我是更傾向於自己寫一些東西的,一切都在微信封裝的組件、 API內(nèi)開發(fā),久而久之只能實現(xiàn)如同熟練工的操作。
雖然說小程式也是一層的封裝,但是拿現(xiàn)成的和自己寫的總是有所不同的。舉個例子,全依賴與微信官方封裝和在原生小程式基礎(chǔ)上自我開發(fā),就像是裝修精裝房和毛胚房的區(qū)別一樣,完全依賴於微信的封裝,你只需要往精裝房內(nèi)搬家具就好了,可謂是快速搭建,當(dāng)然我也不排斥微信封裝的API,畢竟在某些程度上,他們性能更加卓越,我只是希望,不管在什麼時候,都不要喪失自己從零開發(fā)的能力,畢竟前端,不隻小程式。
正文:
最近有一個需求,在一個頁面中有一個滑塊,能夠用手指拖動滑塊到頁面的任意位置,並且在鬆手的時候,滑塊能夠自動吸邊。
由於在小程式中無法直接操作DOM元素,也就無法透過js直接設(shè)定style,如果想要滑桿快速回應(yīng)手指的滑動的話,透過頁面的data去定位元素位置,無異於是毫秒級的setData,一次setData 的回應(yīng)需要經(jīng)過2 次的邏輯層和渲染層的通訊以及一次渲染,通訊的耗時比較大。此外 setData 渲染也會阻塞其它腳本執(zhí)行,這種頻率的setData容易造成卡頓,因此這個方案是不可行的。
在微信小程式中,官方有提供一個視圖容器,叫做movable-view,這個應(yīng)該是可以解決需求的,但是在上文中有提到,在性能差別不大的時候,我更傾向於自己寫,這個作為一個備選方案。
WXS的使用
#也就是說,wxs是專門用於wxml頁面的,它實現(xiàn)的是在視圖層調(diào)用函數(shù)的功能
#調(diào)用方式
雖然在微信文檔中有說明, wxs是小程式的一套腳本語言,有自己的文法,但大部分文法還是跟js差別不大,有興趣的可以自行翻看文件。微信小程式中提供了兩種呼叫方式,這裡不做過多贅述,直接貼程式碼
wxml:
<view class="main"> <view>主頁</view> <wxs module="IndexWxs" src="./index.wxs"></wxs>//新建index.wxs文件,在wxs標(biāo)簽中自定義路徑引入,IndexWxs為自定義的module名 <view change:prop="{{IndexWxs.chooseShow}}" //change:prop是起到類似observe的監(jiān)聽作用,當(dāng)prop中的data屬性有更新的時候,會觸發(fā)change:prop的方法 prop="{{monitor}}" //data屬性 data-navHeight="{{navHeight}}" //可以使用data-自定義傳入屬性 data-edge="{{edgeData}}" catch:touchstart="{{IndexWxs.touchStartByBlock}}" //要調(diào)用wxs的方法需使用{{ }} catch:touchmove="{{IndexWxs.touchMoveByBlock}}" catch:touchend="{{IndexWxs.touchEndByBlock}}"> </view> </view>
\
wxs:
var x = 0,y = 0; //viewData 使用小程序獲取節(jié)點信息的方法,通過data-傳入 var viewData = { height: 0,//滑塊的寬高 width: 0, windowHeight: 0,//屏幕的寬高 windowWidth: 0 } var eventInstance = null module.exports = { //觸摸開始 touchStartByBlock: function (event) { eventInstance = event;// event.instance為組件實例 var setViewData = event.currentTarget.dataset//獲取data-傳入的值 if (setViewData && setViewData.edge && setViewData.edge.windowHeight) { viewData = setViewData.edge } x = event.changedTouches[0].clientX - viewData.width/2//滑動過程中保持手指在模塊中心位置 y = event.changedTouches[0].clientY - viewData.height/2 }, //觸摸移動中,可以給x,y寫一些邊界值判斷,防止滑塊越界,此處不做展示 touchMoveByBlock: function (event) { x = event.changedTouches[0].clientX - viewData.width/2 y = event.changedTouches[0].clientY - viewData.height/2 event.instance.setStyle({//使用setStyle設(shè)置的樣式權(quán)重比wxml設(shè)置的樣式高 transform: 'translate('+x+'px'+','+y+'px)'//setStyle需使用字符串 }) }, //松開手指,觸摸結(jié)束時 touchEndByBlock: function (event) { //吸邊處理,判斷當(dāng)前手指位置在屏幕的哪一邊 x = viewData.windowWidth/2 < x ? viewData.windowWidth-viewData.width : 0; y = y > viewData.windowHeight-viewData.height ? viewData.windowHeight-viewData.height : y event.instance.setStyle({ transform: 'translate('+x+'px'+','+y+'px)', }) }, //當(dāng)props的monitor數(shù)據(jù)發(fā)生變化的時候觸發(fā)該方法,會自動傳入monitor當(dāng)前值,一些業(yè)務(wù)邏輯可以在此處處理 chooseShow: function (monitor) { console.log('監(jiān)聽到更新,monitor=',monitor); } }
最終效果:(掘金好像不支持視頻,由於是知乎直接搬運的,也就沒有轉(zhuǎn)成gif,想看視頻的可以移步知乎文章 )
wxs的基本使用大概就是這樣,由於我也是第一次使用wxs,若有說的不足或錯誤之處歡迎補(bǔ)充指正。
【相關(guān)學(xué)習(xí)推薦:小程式開發(fā)教學(xué)】
以上是聊聊微信小程式中的wxs模組,介紹使用方法的詳細(xì)內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

閒魚官方微信小程式悄悄上線,在小程式中可以發(fā)布閒置與買家/賣家私訊交流、查看個人資料及訂單、搜尋物品等,有用好奇閒魚微信小程式叫什麼,現(xiàn)在快來看一下。閒魚微信小程式叫什麼答案:閒魚,閒置交易二手買賣估價回收。 1、在小程式中可以發(fā)布閒置、與買家/賣家私訊交流、查看個人資料及訂單、搜尋指定物品等功能;2、在小程式的頁面中有首頁、附近、發(fā)閒置、訊息、我的5項功能;3、想要使用的話必要要開通微信支付才可以購買;

實現(xiàn)微信小程式中的圖片濾鏡效果隨著社群媒體應(yīng)用程式的流行,人們越來越喜歡在照片中應(yīng)用濾鏡效果,以增強(qiáng)照片的藝術(shù)效果和吸引力。在微信小程式中也可以實現(xiàn)圖片濾鏡效果,為使用者提供更多有趣和創(chuàng)意的照片編輯功能。本文將介紹如何在微信小程式中實現(xiàn)圖片濾鏡效果,並提供具體的程式碼範(fàn)例。首先,我們需要在微信小程式中使用canvas元件來載入和編輯圖片。 canvas元件可以在頁面

實現(xiàn)微信小程式中的下拉式選單效果,需要具體程式碼範(fàn)例隨著行動互聯(lián)網(wǎng)的普及,微信小程式成為了網(wǎng)路開發(fā)的重要一環(huán),越來越多的人開始關(guān)注和使用微信小程式。微信小程式的開發(fā)相比傳統(tǒng)的APP開發(fā)更加簡單快捷,但也需要掌握一定的開發(fā)技巧。在微信小程式的開發(fā)中,下拉式選單是一個常見的UI元件,實現(xiàn)了更好的使用者操作體驗。本文將詳細(xì)介紹如何在微信小程式中實現(xiàn)下拉式選單效果,並提供具

閒魚官方微信小程式已經(jīng)悄悄上線,它為用戶提供了一個便捷的平臺,讓你可以輕鬆地發(fā)布和交易閒置物品。在小程式中,你可以與買家或賣家進(jìn)行私訊交流,查看個人資料和訂單,以及搜尋你想要的物品。那麼閒魚在微信小程式中究竟叫什麼呢,這篇教學(xué)攻略將為您詳細(xì)介紹,想要了解的用戶們快來跟著本文繼續(xù)閱讀吧!閒魚微信小程式叫什麼答案:閒魚,閒置交易二手買賣估價回收。 1、在小程式中可以發(fā)布閒置、與買家/賣家私訊交流、查看個人資料及訂單、搜尋指定物品等功能;2、在小程式的頁面中有首頁、附近、發(fā)閒置、訊息、我的5項功能;3、

微信小程式實現(xiàn)圖片上傳功能隨著行動網(wǎng)路的發(fā)展,微信小程式已經(jīng)成為了人們生活中不可或缺的一部分。微信小程式不僅提供了豐富的應(yīng)用場景,還支援開發(fā)者自訂功能,其中包括圖片上傳功能。本文將介紹如何在微信小程式中實作圖片上傳功能,並提供具體的程式碼範(fàn)例。一、前期準(zhǔn)備工作在開始編寫程式碼之前,我們需要先下載並安裝微信開發(fā)者工具,並註冊成為微信開發(fā)者。同時,也需要了解微信

實現(xiàn)微信小程式中的圖片旋轉(zhuǎn)效果,需要具體程式碼範(fàn)例微信小程式是一種輕量級的應(yīng)用程序,為用戶提供了豐富的功能和良好的用戶體驗。在小程式中,開發(fā)者可以利用各種元件和API來實現(xiàn)各種效果。其中,圖片旋轉(zhuǎn)效果是一種常見的動畫效果,可以為小程式增添趣味性和視覺效果。在微信小程式中實作圖片旋轉(zhuǎn)效果,需要使用小程式提供的動畫API。以下是一個具體的程式碼範(fàn)例,展示如何在小程

使用微信小程式實現(xiàn)輪播圖切換效果微信小程式是一種輕量級的應(yīng)用程序,具有簡單、高效的開發(fā)和使用特點。在微信小程式中,實作輪播圖切換效果是常見的需求。本文將介紹如何使用微信小程式實現(xiàn)輪播圖切換效果,並給出具體的程式碼範(fàn)例。首先,在微信小程式的頁面檔案中,新增一個輪播圖元件。例如,可以使用<swiper>標(biāo)籤來實現(xiàn)輪播圖的切換效果。在該組件中,可以透過b

實作微信小程式中的滑動刪除功能,需要具體程式碼範(fàn)例隨著微信小程式的流行,開發(fā)者在開發(fā)過程中經(jīng)常會遇到一些常見功能的實作問題。其中,滑動刪除功能是常見、常用的功能需求。本文將為大家詳細(xì)介紹如何在微信小程式中實現(xiàn)滑動刪除功能,並給出具體的程式碼範(fàn)例。一、需求分析在微信小程式中,滑動刪除功能的實作涉及以下要點:列表展示:要顯示可滑動刪除的列表,每個列表項目需要包
