成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

開源推薦! 一款開箱即用的電子簽名組

開發(fā) 前端 開源
今天和大家分享一下我最近開源的輕量級電子簽名組件——React-sign2,我們可以使用它輕松的實現(xiàn)電子簽名, 比如說常用的合同簽字, 文稿簽名, 藝術(shù)簽名等, 并支持一鍵將簽名保存。

hello, 大家好, 我是徐夕, 今天又到了分享時間. 今天和大家分享一下我最近開源的輕量級電子簽名組件——react-sign2。

我們可以使用它輕松的實現(xiàn)電子簽名, 比如說常用的合同簽字, 文稿簽名, 藝術(shù)簽名等, 并支持一鍵將簽名保存。

基本使用

我們要想直接使用, 可以在 npm 上安裝 react-sign2 :

# 或者yarn add react-sign2
npm i react-sign2

然后一個簡單的使用如下:

import Sign from 'react-sign2';

export default () => 
  <Sign width={400} onDrawEnd={(c) => console.log(c)} />;

react-sign2還提供了很多可定制的屬性, 來方便使用者靈活定制電子簽名, 以下是開放性屬性介紹:

比如我可以調(diào)整線條的顏色:

調(diào)整線條寬度:

在具體使用的時候靈活配置即可, 我還提供了業(yè)務中經(jīng)常用到的監(jiān)聽事件, 方便使用者靈活調(diào)用:

  • onSave 保存時的回調(diào)。
  • onClear 當畫布清空時的回調(diào)。
  • onDrawEnd 每次繪制結(jié)束時的回調(diào)。

實現(xiàn)思路

按照筆者之前的習慣, 在設計組件之前都會先明確組件的設計需求, 然后根據(jù)健壯組件的設計原則來落地組件, 這里給大家分享一下我總結(jié)的幾條組件設計經(jīng)驗:

  • 對組件進行嚴格的屬性設計, 保證業(yè)務層能低成本使用組件, 并保持一定的可配性。
  • 組件內(nèi)外部類型約定(ts規(guī)范), 并提供對邏輯的兼容性。
  • 可讀性(代碼格式統(tǒng)一清晰,注釋完整,代碼結(jié)構(gòu)層次分明,編程范式使用得當)。
  • 可用性(代碼功能完整,在不同場景都能很好兼容,業(yè)務邏輯覆蓋率)。
  • 復用性(代碼可以很好的被其他業(yè)務模塊復用)。
  • 可維護性(代碼易于維護和擴展,并有一定的向下/向上兼容性)。
  • 高性能(組件具有一定的性能, 如復雜場景的渲染, 計算等)。

對于電子簽名組件, 我們最小化的需求就是能滿足用戶的線上簽名, 并能保存簽名數(shù)據(jù)。

以上就是我們最小化的需求, 為了滿足我總結(jié)的組件設計幾大原則, 我們需要對組件進行近一步的需求分析: 簽名的顏色, 筆觸的粗細, 平滑度, 支持自定義事件等。

這些都是組件第一個階段可以想到的配置點, 也是能應對第一階段業(yè)務需求的功能, 所以有了第一版的組件需求設計:

接下來就需要用 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   設置線條兩端圓角
    * @default       'round'
   */
   lineCap?: string;
   /**
    * @description   線條交匯處圓角
    * @default       'round'
   */
   lineJoin?: string;
   /**
    * @description   畫布背景顏色
    * @default       'transparent'
   */
   bgColor?: string;
   /**
    * @description   true
   */
   showBtn?: boolean;
   /**
   * @description   當保存時的回調(diào), blob為生成的圖片bob
   * @default       -
   */
   onSave?: (blob: Blob) => void;
  /**
   * @description   當畫布清空時的回調(diào), 參數(shù)為畫布的上下文對象,可以直接使用canvas的api
   * @default       -
   */
   onClear?: (canvasContext: CanvasRenderingContext2D) => void;
   /**
   * @description   當畫布結(jié)束時的回調(diào)
   * @default       -
   */
   onDrawEnd?: (canvas: HTMLCanvasElement) => void;
}

接下來就到了我們具體的代碼實現(xiàn)階段. 由于電子簽名的核心技術(shù)采用的是canvas(雖然用dom和svg也可以實現(xiàn)), 所以無論你是用的react還是vue3, 或者似乎原生態(tài)javascript, 都能低成本的封裝. 這里筆者采用全球程序員最愛用的react 來實現(xiàn)。

以上是組件的基本屬性定義和代碼結(jié)構(gòu), 畫圖部分涉及到 canvas 的比較細節(jié)的部分。

具體實現(xiàn)的源碼我已經(jīng)上傳到github, 感興趣的朋友大家可以參考一下。

github: https://github.com/MrXujiang/react-sign

大家如果想直接使用, 可以使用如下方式安裝使用:

react-sign2 官方演示文檔

參考資料

  1. https://developer.mozilla.org/zh-CN/docs/Web/API/Canvas_API。
  2. https://juejin.cn/post/7174251833773752350。
責任編輯:姜華 來源: 趣談前端
相關(guān)推薦

2023-01-29 07:49:57

2021-07-01 07:51:44

Vite管理模版

2015-06-30 09:49:19

管理平臺開源KVM

2024-08-19 09:25:42

2023-03-08 21:25:58

開源工具庫開箱

2021-06-09 09:52:29

開源Pyroscope代碼

2013-11-01 09:37:19

Android系統(tǒng)架構(gòu)工具

2020-12-10 10:00:59

監(jiān)控Java可視化

2025-05-15 08:35:00

2019-08-02 14:45:22

阿里Java命令

2024-08-16 08:31:05

2021-07-23 16:50:19

httpJava框架

2020-08-28 10:40:13

PythonFaker數(shù)據(jù)

2021-11-24 09:12:11

Markdown編輯器Linux

2019-11-25 00:00:00

開源技術(shù) 數(shù)據(jù)

2019-02-25 10:18:43

工具代碼測試

2021-08-31 15:53:48

Nuxt 開箱服務

2022-04-26 09:44:29

算法庫EasyCV開源

2016-02-15 11:44:23

源碼開源項目watch

2024-08-22 12:35:37

點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 久久久99精品免费观看 | 中文成人无字幕乱码精品 | 亚洲va欧美va天堂v国产综合 | 日韩另类视频 | 欧美日韩不卡在线 | 在线观看www视频 | 日韩精品免费一区二区在线观看 | 日韩一区二区精品 | 欧美日韩国产精品 | 亚洲精品在线免费看 | av大全在线 | 免费特黄视频 | 免费在线观看一区二区 | 国产激情视频网站 | 先锋资源吧| 国产免费观看一级国产 | 99精品免费久久久久久久久日本 | 日本在线播放一区二区 | 久久久xx| 亚洲一区二区国产 | 99国内精品久久久久久久 | 91精品国产自产精品男人的天堂 | 国产精品一区二区免费看 | 国产成人精品a视频一区www | 国产在线中文字幕 | 亚洲美女视频 | 黄色大片免费播放 | 成人午夜在线观看 | 中文字幕在线第一页 | 国产精品99久久久久久久久 | 自拍偷拍第一页 | 91久久久久久久久久久 | 日韩图区 | 日本精品一区二区三区在线观看视频 | 精品粉嫩aⅴ一区二区三区四区 | 精品国产区 | 你懂的在线视频播放 | 欧美精品乱码99久久影院 | 精品久久久久久久久久久院品网 | 7777在线视频免费播放 | 在线欧美视频 |