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

一款開箱即用的電子簽名組件

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

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

圖片

我們可以使用它輕松的實(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 () =>
<Sign width={400} notallow={(c) =>;

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

圖片

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

圖片

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

圖片

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

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

實(shí)現(xiàn)思路

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

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

對(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é)的部分, 如果大家對(duì)圖形學(xué)感興趣可以參考我的專欄:

100+前端幾何學(xué)應(yīng)用案例 100+前端幾何學(xué)應(yīng)用案例

具體實(shí)現(xiàn)的源碼我已經(jīng)上傳到github, 感興趣的朋友大家可以參考一下, 有問題隨時(shí)交流反饋.

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

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

react-sign2 官方演示文檔

擴(kuò)展

這里給大家聊點(diǎn)題外話, 也是大家比較關(guān)注的話題——如何持續(xù)維護(hù)開源項(xiàng)目. 就拿本文中實(shí)現(xiàn)的 react-sign2 舉例,  以上分享的只是組件的第一階段實(shí)現(xiàn), 為了讓我們的開源組件能被更多的人使用, 我們必須與時(shí)俱進(jìn), 隨著技術(shù)的發(fā)展持續(xù)迭代優(yōu)化技術(shù)底層實(shí)現(xiàn), 比如跨平臺(tái), 跨終端, 跨框架, 優(yōu)化或者增加新功能:

圖片

這樣我們的開源組件庫(kù)才能覆蓋更多場(chǎng)景, 被更多人使用.

所以, 開源的正確打開方式, 你學(xué)會(huì)了嗎? 如果對(duì)上面的迭代方向感興趣, 歡迎在評(píng)論區(qū)交流, 一起共建v3.0.0.

參考資料

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

2023-10-31 08:03:33

開源電子簽名組件

2021-07-01 07:51:44

Vite管理模版

2013-11-01 09:37:19

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

2015-06-30 09:49:19

管理平臺(tái)開源KVM

2024-08-19 09:25:42

2021-08-31 15:53:48

Nuxt 開箱服務(wù)

2023-11-04 12:43:44

前端圖片參數(shù)

2023-03-08 21:25:58

開源工具庫(kù)開箱

2022-08-08 08:29:55

圖片壓縮前端互聯(lián)網(wǎng)

2023-01-15 20:28:32

前端圖片壓縮

2011-04-14 14:55:02

超云云計(jì)算

2021-09-26 05:41:47

基礎(chǔ)設(shè)施連接無線技術(shù)網(wǎng)絡(luò)

2020-12-03 09:33:58

前端開發(fā)工具

2021-09-01 17:43:32

StreamNativ開源

2021-09-28 09:30:18

uni-appVue 3.0uniCloud

2022-08-02 09:01:55

后臺(tái)管理模版

2022-02-28 08:19:25

圖片預(yù)覽動(dòng)畫前端

2016-09-19 13:44:54

vue翻頁組件Web

2021-09-14 08:38:57

組件開源前端
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 国产精品国产a | 国产激情一区二区三区 | 日韩中文一区二区 | 天天射网站 | 久草.com| 超碰人人爱 | 欧美国产精品一区二区 | 国产精品成人69xxx免费视频 | 日韩一区二区三区视频 | 亚洲免费视频在线观看 | 999久久久 | 国产一在线 | 国产日韩欧美一区 | av入口| 国产一极毛片 | 日韩亚洲视频 | www.一级毛片 | 美女久久久久久久 | 久久久久久久久久久久久九 | 欧美精品一区二区三区在线播放 | 亚洲精品日韩一区二区电影 | 日韩综合色| 午夜私人影院在线观看 | 亚洲综合色自拍一区 | 天堂在线www | 免费黄色的视频 | 69av在线视频| 国产激情| 日本激情视频在线播放 | 亚洲精品久久久久久久不卡四虎 | 午夜婷婷激情 | 成人欧美一区二区三区 | 日韩有码一区 | 中国一级特黄真人毛片免费观看 | 久久男人天堂 | 超级碰在线 | 欧美成人一区二区 | 成人免费视频网站在线观看 | 一级毛片免费看 | 亚洲欧美一区在线 | 久久高清 |