首頁 微信小程式 小程式開發 微信小程式開發實戰教程之手勢解鎖

微信小程式開發實戰教程之手勢解鎖

Feb 22, 2017 pm 02:48 PM
小程式開發

這篇文章主要介紹了微信小程式開發實戰教程之手勢解鎖的相關資料,本文分步驟給大家介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下

微信小程式開發實戰教程之手勢解鎖

代碼:https://github.com/jsongo/wx-gesture-lock

這個手勢解鎖的demo使用了https://github.com/lvming6816077/H5lock  這個專案的演算法和主邏輯,整合到微信小程式來,修改了很多地方的語法來適配小程序,去掉了window、document等函數,同時也加入了新的機制來解耦介面的操作和第三方庫,這個下面會介紹到。

不過可惜的是,這個demo也只能在開發工具上玩玩,到真機上測試的時候,手指一滑動,頁面會跟著滾動,手勢沒法使用。

下面我們從這個例子中,來分析兩個可以學習的點。

1、引入第三方函式庫

我們上面提到的H5lock這個函式庫,是個大神寫的、專給H5用的一個功能。我們對它進行了一翻修改,把它引入到小程式上來了。

這裡討論下如何把第三方js函式庫引入到小程式來,分以下幾個步驟:

(1)模組化

小程式碼中,只能透過module.exports來導出的模組才能被引用,所以第一步,我們要對程式碼進行第一個改造,做exports導出:

module.exports = {
...
}
如果要在被引入的时候,执行一些操作,可以用以下两种方式:
//// mylib.js
module.exports = (function() {
// 这里写上你要执行的代码
…
return xxx; //返回你要导出的方法,如果多个就写成一个map
})();
…
//// 其它文件中这么引用和执行:
let MyLib = require('mylib.js');
let lib = Mylib();
lib.xxx(); // 执行
或es6中的class:
//// mylib.js
module.exports = class {
constructor() { // 
// 这里写上你要执行的代码
}
// 其它方法
xxx() { 
...
}
}
…
//// 其它文件中这么引用和执行:
let MyLib = require('mylib.js');
let lib = new Mylib(); // 用new来生成类的对象
lib.xxx(); // 执行
登入後複製

# #(2)將第三方函式庫中的一些函數進行改造

小程式不支援以下幾個函數或api:

window

document
frames
self
location
navigator
localStorage
history
caches
screen
alert
confirm
prompt
XMLHttpRequest
WebSocket

#跟以上相關的程式碼一個個搜尋出來,想辦法替換掉。

最常見的一般是document操作,第三方函式庫主要是用它來引用dom,並對它進行設定或修改。這個可以透過下面第2點會講的解耦技巧來巧妙地繞過。其它的就靠開發者自己去想了,這裡沒辦法一一列出所有的狀況。

本文的demo用的是class的方式來改造了第三方函式庫。

2、一種解耦的方式

在小程式開發的時候,如果一個頁面的js寫得太長,甚至超過了上千行,那你就要考慮把這個文件分拆成幾個。或者你寫的邏輯程式碼,可以幾個頁面共用,那你也是要把程式碼從這個頁面的js拆出來的。

這裡就引出了一個比較顯明的問題:在其它文件中,要修改頁面上的數據,又不能耦合性太大,因為你的這段邏輯代碼,在頁面A中會引用到,在頁面B中也會引用到,這樣總不能把setData操作放到這個共用的檔案裡吧。

那有什麼辦法可以解耦呢?

這個時候,可能你會想到一般頁面開發時,用到的trigger機制,可惜這個只能在dom上綁定。也或許你用過http://www.php.cn/ 這個函式庫,透過狀態機的變化來觸發某些特定的操作,這個方法非常巧妙,沒接觸過這個函式庫的開發者,建議學習一下。

不過我們還不需要再引入一個函式庫,這裡,我們來寫個簡單的。簡單到只有幾行程式碼。

程式碼在這裡:http://www.php.cn/

module.exports = function(app) {
app && (app.trigger = function(eventType, data) {
var pages = getCurrentPages(),
curPage = pages[pages.length-1],
methodName = 'on' + eventType.charAt(0).toUpperCase() + eventType.substr(1),
callback = curPage[methodName];
callback && callback.call(curPage, data);
});
};
登入後複製

如何使用這個函式庫?分析一下大概的過程,其實非常簡單,就是為app添加一個trigger方法,當它被呼叫的時候,去查找當前頁面是否在onXXX方法,有的話就調用。這個方法名,是透過eventType這個參數變形而成的,如app.trigger('textChange') ,則這裡會去查找頁面中是否有onTextChange方法。所以其實這個解耦方法,本質上,是定義了一種規範。

首頁在app.js裡引入,並在onLaunch裡呼叫:

var event = require('lib/event.js');
App({
onLaunch: function () {
event(this); // 在onLaunch里调用,传入的this就是app本身
},
globalData:{
}
});
登入後複製

然後在共用的抽離出來的檔案中,在需要用到setData的地方,寫成如下形式:

app.trigger('titleChanged', '请解锁');
登入後複製

#接著在頁面的js程式碼裡,加入對這個trigger的回應:

#

Page({
…
onTitleChanged: function(newTitle) { // 文字变化的事件,自定义
this.setData({
title: newTitle
});
}
...
});
登入後複製

這三步做完就ok了。

以上所述是小編給大家介紹的微信小程式開發實戰教程之手勢解鎖,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。在此也非常感謝大家對PHP中文網的支持!

更多微信小程式開發實戰教學手勢解鎖相關文章請關注PHP中文網!


本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱門文章

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

Java教學
1677
14
CakePHP 教程
1431
52
Laravel 教程
1334
25
PHP教程
1280
29
C# 教程
1257
24
小程式開發中的PHP權限管理與使用者角色設定 小程式開發中的PHP權限管理與使用者角色設定 Jul 04, 2023 pm 04:48 PM

小程式開發中的PHP權限管理與使用者角色設定隨著小程式的普及和應用範圍的擴大,使用者對於小程式的功能和安全性提出了更高的要求,其中權限管理和使用者角色設定是保證小程序安全性的重要一環。在小程式中使用PHP進行權限管理和使用者角色設定能夠有效地保護使用者的資料和隱私,以下將介紹如何實現此功能。一、權限管理的實作權限管理是指依據使用者的身分和角色,授予不同的操作權限。在小

PHP在小程式開發的頁面跳轉與路由管理 PHP在小程式開發的頁面跳轉與路由管理 Jul 04, 2023 pm 01:15 PM

PHP在小程式開發的頁面跳轉與路由管理隨著小程式的快速發展,越來越多的開發者開始將PHP與小程式開發結合。在小程式開發中,頁面跳轉和路由管理是非常重要的一部分,它能夠幫助開發者實現頁面之間的切換和導航操作。 PHP作為常用的伺服器端程式語言,可以很好地與小程式互動和資料傳遞,下面我們來詳細了解PHP在小程式中的頁面跳轉與路由管理。一、頁面跳轉基

小程式開發中的PHP安全防護與攻擊防範 小程式開發中的PHP安全防護與攻擊防範 Jul 07, 2023 am 08:55 AM

小程式開發中的PHP安全防護與攻擊防範隨著行動網路的快速發展,小程式成為了人們生活中重要的一部分。而PHP作為一種強大而靈活的後端開發語言,也被廣泛應用於小程式的開發。然而,安全問題一直是程式開發中需要重視的面向。本文將重點放在小程式開發中PHP的安全防護與攻擊防範,同時提供一些程式碼範例。 XSS(跨站腳本攻擊)防範XSS攻擊是指駭客透過向網頁注入惡意腳本

如何在uniapp中實現小程式開發和發布 如何在uniapp中實現小程式開發和發布 Oct 20, 2023 am 11:33 AM

如何在uni-app中實現小程式開發和發布隨著行動互聯網的發展,小程式成為了行動應用程式開發的重要方向。而uni-app作為一個跨平台的開發框架,可以同時支援多個小程式平台的開發,如微信、支付寶、百度等。以下將詳細介紹如何使用uni-app開發和發布小程序,並提供一些具體的程式碼範例。一、小程式開發前準備在開始使用uni-app開發小程式之前,需要先做一些準備工

微信小程式中PHP開發的下拉式選單實作方法 微信小程式中PHP開發的下拉式選單實作方法 Jun 04, 2023 am 10:31 AM

今天我們來學習微信小程式中PHP開發的下拉式選單實作方法。微信小程序是一種輕量級的應用程序,用戶可以在微信裡直接使用,而且不需要下載安裝,非常方便。而PHP是一種非常流行的後端程式語言,也是與微信小程式配合很好的語言。下面我們就來看看如何在微信小程式中使用PHP開發下拉式選單。首先,我們需要準備好開發環境,包括PHP、微信小程式開發工具和伺服器。然後我們

小程式開發中的PHP資料快取與快取策略 小程式開發中的PHP資料快取與快取策略 Jul 05, 2023 pm 02:57 PM

小程式開發中的PHP資料快取與快取策略隨著小程式的快速發展,更多的開發者開始關注如何提高小程式的效能和回應速度。其中一個重要的最佳化手段是使用資料快取來減少對資料庫和外部介面的頻繁存取。而在PHP中,我們可以利用各種快取策略來實現資料快取。本文將介紹PHP中的資料快取原理,並提供幾個常見的快取策略的範例程式碼。一、資料快取原理資料快取是指將資料存放在記憶體中,以

小程式開發中的PHP頁面動畫效果與互動設計 小程式開發中的PHP頁面動畫效果與互動設計 Jul 04, 2023 pm 11:01 PM

小程式開發中的PHP頁面動畫效果與互動設計導語:小程式是一種在行動裝置上運行的應用程序,能夠提供類似原生應用程式的體驗。而在小程式開發中,PHP作為常用的後端語言,可以為小程式頁面增添動畫效果與互動設計。本文將介紹一些常用的PHP頁面動畫效果與互動設計,並附上程式碼範例。一、CSS3動畫CSS3提供了豐富的屬性與方法,用於實現各種動畫效果。而在小

UniApp實作位元組跳動小程式的開發與上線流程解析 UniApp實作位元組跳動小程式的開發與上線流程解析 Jul 06, 2023 pm 05:01 PM

UniApp實作位元組跳動小程式的開發與上線流程解析位元組跳動小程式作為一種新興的行動應用開發方式,正逐漸在業界流行起來。在開發位元組跳動小程式之前,我們需要了解如何使用UniApp來實現開發和上線的流程。一、UniApp簡介UniApp是一套基於Vue.js開發的以HTML5、App、小程式為多端統一開發的框架,透過編寫一套程式碼,可以同時在多個平台上運行,包括字

See all articles