中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

微信小程序中wxs文件有什么用

發布時間:2022-01-05 17:27:19 來源:億速云 閱讀:250 作者:小新 欄目:開發技術

這篇文章給大家分享的是有關微信小程序中wxs文件有什么用的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

    前言

    wxs文件是小程序中的邏輯文件,它和wxml結合使用。

    不同于js, wxs可以直接作用到視圖層,而不需要進行視圖層和邏輯層的setData數據交互;

    因為這個特性,wxs非常適合應用于優化小程序的頻繁交互操作中;

    應用

    過濾器

    在IOS環境中wxs的運行速度要遠高于js,在android中兩者表現相當。

    使用wxs作為過濾器也可以一定幅度提升性能;讓我們來看一個過濾器來了解其語法。

    wxs文件:

    var toDecimal2 = function (x) {
      var f = parseFloat(x);
      if (isNaN(f)) {
        return '0.00'
      }
      var f = Math.round(x * 100) / 100;
      var s = f.toString();
      var rs = s.indexOf('.');
      if (rs < 0) {
        rs = s.length;
        s += '.';
      }
      while (s.length <= rs + 2) {
        s += '0';
      }
      return s;
    }
    module.exports = toDecimal2

    上面的代碼實現了數字保留兩位小數的功能。

    wxml文件:

    <wxs src="./filter.wxs" module="filter"></wxs>
    <text>{{filter(1)}}</text>

    基本語法:在視圖文件中通過wxs標簽引入,module值是自定義命名,之后在wxml中可以通過filter調用方法

    上面的代碼展示了 wxs的運行邏輯,讓我們可以像函數一樣調用wxs中的方法;

    下面再看一下wxs針對wxml頁面事件中的表現。

    拖拽

    使用交互時(拖拽、上下滑動、左右側滑等)如果依靠js邏輯層,會需要大量、頻繁的數據通信。卡頓是不可避免的;

    使用wxs文件替代交互,不需要頻繁使用setData導致實時大量的數據通信,從而節省性能。

    下面展示一個拖拽例子

    wxs文件:

    function touchstart(event) {
      var touch = event.touches[0] || event.changedTouches[0]
      startX = touch.pageX
      startY = touch.pageY
    }

    事件參數event和js中的事件event內容中touches和changedTouches屬性一致

    function touchmove(event, ins) {
      var touch = event.touches[0] || event.changedTouches[0]
      ins.selectComponent('.div').setStyle({
        left: startX - touch.pageX + 'px',
        top: startY - touch.pageY  + 'px'
      })
    }

    ins(第二個參數)為觸發事件的視圖層wxml上下文。可以查找頁面所有元素并設置style,class(足夠完成交互效果)

    注意:在參數event中同樣有一個上下文實例instance;event中的實例instance作用范圍是觸發事件的元素內,而事件的ins參數作用范圍是觸發事件的組件內。

    module.exports = {
      touchstart: touchstart,
      touchmove: touchmove,
    }

    最后將方法拋出去,給wxml文件引用。

    wxml文件

    <wxs module="action" src="./movable.wxs"></wxs> 
    <view class="div" bindtouchstart="{{action.touchstart}}" bindtouchmove="{{action.touchmove}}"></view>

    上面的例子,解釋了事件的基本交互用法。

    文件之中相互傳參

    在事件交互中,少不了需要各個文件之中傳遞參數。 下面是比較常用的幾種

    wxs傳參到js邏輯層

    wxs文件中:

    var dragStart = function (e, ins) {
    	ins.callMethod('callback','sldkfj')
    }

    js文件中:

    callback(e){
    	console.log(e)
    }
    // sldkfj

    使用callMethod方法,可以執行js中的callback方法。也可以實現傳參;

    • !!!callMethod不支持傳回調函數*

    js邏輯層傳參到wxs文件

    js文件中:

    handler(e){
    	this.setData({a:1})
    }

    wxml文件:

    <wxs module="action" src="./movable.wxs"></wxs> 
    <view change:prop="{{action.change}}" prop="{{a}}"></view>

    wxs文件中:

    change(newValue,oldValue){}

    js文件中的參數傳遞到wxs需要通過wxml文件中轉。

    js文件觸發handler事件,改變a的值之后,最新的a傳遞到wxml中。

    wxml中prop改變會觸發wxs中的change事件。change中則會接收到最新prop值

    wxs中獲取dataset(wxs中獲取wxml數據)

    wxs中代碼

    var dragStart = function (e) {
      var index = e.currentTarget.dataset.index;
      var index = e.instance.getDataset().index;
    }

    上面有提到e.instance是當前觸發事件的元素實例。

    所以e.instance.getDataset()獲取的是當前觸發事件的dataset數據集

    注意點

    wxs和js為不同的兩個腳本語言。但是語法和es5基本相同,確又不支持es6語法; getState 在多元素交互中非常實用,歡迎探索。

    不知道是否是支持的語法可以跳轉官網文檔; wxs運算符、語句、基礎類庫、數據類型

    感謝各位的閱讀!關于“微信小程序中wxs文件有什么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

    向AI問一下細節

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

    AI

    成武县| 达日县| 朝阳市| 靖宇县| 千阳县| 沂源县| 灵山县| 盐池县| 梅州市| 青阳县| 来宾市| 嘉鱼县| 万荣县| 栾城县| 临城县| 水城县| 秦皇岛市| 无极县| 梁平县| 兴化市| 时尚| 五原县| 东阿县| 邵阳市| 庆阳市| 巨鹿县| 河北区| 岫岩| 西丰县| 阿拉善盟| 铁力市| 海兴县| 紫云| 晋宁县| 武穴市| 桐庐县| 宁河县| 德阳市| 三门县| 米林县| 洮南市|