掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
hello, 大家好, 我是徐夕, 今天又到了分享時(shí)間. 今天和大家分享一下我最近開源的輕量級(jí)電子簽名組件——react-sign2。

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、微信平臺(tái)小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了石阡免費(fèi)建站歡迎大家使用!
我們可以使用它輕松的實(shí)現(xiàn)電子簽名, 比如說常用的合同簽字, 文稿簽名, 藝術(shù)簽名等, 并支持一鍵將簽名保存。
我們要想直接使用, 可以在 npm 上安裝 react-sign2 :
# 或者yarn add react-sign2
npm i react-sign2然后一個(gè)簡(jiǎn)單的使用如下:
import Sign from 'react-sign2';
export default () =>
console.log(c)} />; react-sign2還提供了很多可定制的屬性, 來方便使用者靈活定制電子簽名, 以下是開放性屬性介紹:
比如我可以調(diào)整線條的顏色:
調(diào)整線條寬度:
在具體使用的時(shí)候靈活配置即可, 我還提供了業(yè)務(wù)中經(jīng)常用到的監(jiān)聽事件, 方便使用者靈活調(diào)用:
按照筆者之前的習(xí)慣, 在設(shè)計(jì)組件之前都會(huì)先明確組件的設(shè)計(jì)需求, 然后根據(jù)健壯組件的設(shè)計(jì)原則來落地組件, 這里給大家分享一下我總結(jié)的幾條組件設(shè)計(jì)經(jīng)驗(yàn):
對(duì)于電子簽名組件, 我們最小化的需求就是能滿足用戶的線上簽名, 并能保存簽名數(shù)據(jù)。
以上就是我們最小化的需求, 為了滿足我總結(jié)的組件設(shè)計(jì)幾大原則, 我們需要對(duì)組件進(jìn)行近一步的需求分析: 簽名的顏色, 筆觸的粗細(xì), 平滑度, 支持自定義事件等。
這些都是組件第一個(gè)階段可以想到的配置點(diǎn), 也是能應(yīng)對(duì)第一階段業(yè)務(wù)需求的功能, 所以有了第一版的組件需求設(shè)計(jì):
接下來就需要用 typescript 來規(guī)范組件的輸入和輸出了. 具體定義如下:
export interface IProp {
/**
* @description 畫布寬度
* @default 400
*/
width?: number;
/**
* @description 畫布高度
* @default 200
*/
height?: number;
/**
* @description 線寬
* @default 4
*/
lineWidth?: number;
/**
* @description 線段顏色
* @default 'red'
*/
strokeColor?: string;
/**
* @description 設(shè)置線條兩端圓角
* @default 'round'
*/
lineCap?: string;
/**
* @description 線條交匯處圓角
* @default 'round'
*/
lineJoin?: string;
/**
* @description 畫布背景顏色
* @default 'transparent'
*/
bgColor?: string;
/**
* @description true
*/
showBtn?: boolean;
/**
* @description 當(dāng)保存時(shí)的回調(diào), blob為生成的圖片bob
* @default -
*/
onSave?: (blob: Blob) => void;
/**
* @description 當(dāng)畫布清空時(shí)的回調(diào), 參數(shù)為畫布的上下文對(duì)象,可以直接使用canvas的api
* @default -
*/
onClear?: (canvasContext: CanvasRenderingContext2D) => void;
/**
* @description 當(dāng)畫布結(jié)束時(shí)的回調(diào)
* @default -
*/
onDrawEnd?: (canvas: HTMLCanvasElement) => void;
}接下來就到了我們具體的代碼實(shí)現(xiàn)階段. 由于電子簽名的核心技術(shù)采用的是canvas(雖然用dom和svg也可以實(shí)現(xiàn)), 所以無論你是用的react還是vue3, 或者似乎原生態(tài)javascript, 都能低成本的封裝. 這里筆者采用全球程序員最愛用的react 來實(shí)現(xiàn)。
以上是組件的基本屬性定義和代碼結(jié)構(gòu), 畫圖部分涉及到 canvas 的比較細(xì)節(jié)的部分。
具體實(shí)現(xiàn)的源碼我已經(jīng)上傳到github, 感興趣的朋友大家可以參考一下。
github: https://github.com/MrXujiang/react-sign
大家如果想直接使用, 可以使用如下方式安裝使用:
react-sign2 官方演示文檔

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流