前言
本文將介紹我們的表單解決方案?@femessage/el-form-renderer,展示我們?cè)?Vue?技術(shù)棧下,我們是如何處理以下問題的:
表單項(xiàng)動(dòng)態(tài)顯示或隱藏
表單數(shù)據(jù)聯(lián)動(dòng)
表單輸入/輸出數(shù)據(jù)格式化
非常規(guī)表單項(xiàng)的處理
復(fù)雜的表單驗(yàn)證
方案 表單項(xiàng)動(dòng)態(tài)顯示或隱藏(hidden)可以通過?hidden?控制某一表單項(xiàng)的顯示或隱藏。
表單數(shù)據(jù)聯(lián)動(dòng)(on)
可以通過 on?來監(jiān)聽 blur?, focus?等事件來實(shí)現(xiàn)表單聯(lián)動(dòng)。
舉個(gè)例子,填寫 fullName?后,自動(dòng)填充 lastName?
輸入/輸出格式化(inputFormat/outputFormat)
拿 日期范圍選擇器?為例,組件輸出的值是一條字符串,但后端接口格式是兩個(gè)字段 {startDate, endDate},則此時(shí)需要對(duì)數(shù)據(jù)進(jìn)行格式化處理。
inputFormat轉(zhuǎn)換輸入的數(shù)據(jù), 使其變成表單項(xiàng)需要的數(shù)據(jù)格式
outputFormat
轉(zhuǎn)換輸出的數(shù)據(jù), 使其變成需要的(接口期望的)數(shù)據(jù)格式
@femessage/el-form-renderer?默認(rèn)支持的?type?有限, 只能渲染常見的表單項(xiàng)。對(duì)于個(gè)性化的需求,?比如想渲染一個(gè)上傳組件,type?就不夠用了, 那怎么辦呢? 這時(shí)候 component? 選項(xiàng)就派上用場了。
component可以渲染自定義組件,而編寫自定義組件的關(guān)鍵是在組件內(nèi)部實(shí)現(xiàn) v-model:
有一個(gè) props 為 value
對(duì)外觸發(fā) input 事件
幫我輸入點(diǎn)東西
則可以用 component? 屬性讓?@femessage/el-form-renderer?渲染此自定義組件
目前團(tuán)隊(duì)對(duì)常見的表單擴(kuò)展組件都根據(jù)標(biāo)準(zhǔn)實(shí)現(xiàn)了 v-model, 因此都可以不寫 template, 由?@femessage/el-form-renderer?實(shí)現(xiàn)數(shù)據(jù)驅(qū)動(dòng)渲染
上傳組件?https://github.com/FEMessage/upload-to-ali
富文本編輯器?https://github.com/FEMessage/v-editor
省市區(qū)選擇器?https://github.com/FEMessage/el-select-area
范圍輸入框?https://github.com/FEMessage/el-number-range
版本號(hào)輸入框?https://github.com/FEMessage/el-semver-input
復(fù)雜的表單驗(yàn)證(rules)一個(gè)復(fù)雜的表單項(xiàng)配置, 往往需要定義一些規(guī)則(rules)來限制用戶輸入, 規(guī)則里面可能還會(huì)有自定義的驗(yàn)證器(validator), 這樣的表單項(xiàng)多了之后, 就會(huì)導(dǎo)致頁面文件的配置項(xiàng)變得很長很長。
解決方案是在組件內(nèi)部設(shè)置校驗(yàn)規(guī)則, 從而達(dá)到封裝隱藏目的。 使用者不用關(guān)心表單的驗(yàn)證規(guī)則,直接引入組件并使用就好。
下面展示一個(gè)結(jié)合自定義組件(基本輸入框)封裝的驗(yàn)證規(guī)則,?其規(guī)則如下:
不允許空值
只能輸入3位數(shù)或以上
必須以123開頭
同樣地,使用 component 渲染此組件
結(jié)語
我們內(nèi)部項(xiàng)目都在使用?@femessage/el-form-renderer,可以在 github?上找到更多信息。
歡迎大家使用,提高項(xiàng)目開發(fā)效率~
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/106052.html
摘要:在實(shí)際開發(fā)項(xiàng)目中,有時(shí)我們會(huì)用到自定義按鈕因?yàn)橐粋€(gè)項(xiàng)目中,眾多的頁面,為了統(tǒng)一風(fēng)格,我們會(huì)重復(fù)用到很多相同或相似的按鈕,這時(shí)候,自定義按鈕組件就派上了大用場,我們把定義好的按鈕組件導(dǎo)出,在全局引用,就可以在其他組件隨意使用啦,這樣可以大幅度 在實(shí)際開發(fā)項(xiàng)目中,有時(shí)我們會(huì)用到自定義按鈕;因?yàn)橐粋€(gè)項(xiàng)目中,眾多的頁面,為了統(tǒng)一風(fēng)格,我們會(huì)重復(fù)用到很多相同或相似的按鈕,這時(shí)候,自定義按鈕組件就...
摘要:代碼整潔之道整潔的代碼不僅僅是讓人看起來舒服,更重要的是遵循一些規(guī)范能夠讓你的代碼更容易維護(hù),同時(shí)降低幾率。另外這不是強(qiáng)制的代碼規(guī)范,就像原文中說的,。里式替換原則父類和子類應(yīng)該可以被交換使用而不會(huì)出錯(cuò)。注釋好的代碼是自解釋的。 JavaScript代碼整潔之道 整潔的代碼不僅僅是讓人看起來舒服,更重要的是遵循一些規(guī)范能夠讓你的代碼更容易維護(hù),同時(shí)降低bug幾率。 原文clean-c...
摘要:接著我之前寫的一篇有關(guān)前端面試題的總結(jié),分享幾道比較經(jīng)典的題目第一題考點(diǎn)作用域,運(yùn)算符栗子都會(huì)進(jìn)行運(yùn)算,但是最后之后輸出最后一個(gè)也就是那么其實(shí)就是而且是個(gè)匿名函數(shù),也就是屬于,就輸出第二和第三個(gè)都是類似的,而且作用域是都是輸出最后一個(gè)其實(shí)就 接著我之前寫的一篇有關(guān)前端面試題的總結(jié),分享幾道比較經(jīng)典的題目: 第一題: showImg(https://segmentfault.com/im...
對(duì)比內(nèi)容UCloudStackZStackVMwareQingCloud騰訊TStack華為云Stack優(yōu)勢(shì)總結(jié)?基于公有云自主可控?公有云架構(gòu)私有化部署?輕量化/輕運(yùn)維/易用性好?政府行業(yè)可復(fù)制案例輕量化 IaaS 虛擬化平臺(tái)?輕量化、產(chǎn)品成熟度高?業(yè)內(nèi)好評(píng)度高?功能豐富、交付部署快?中小企業(yè)案例多全套虛擬產(chǎn)品及云平臺(tái)產(chǎn)品?完整生態(tài)鏈、技術(shù)成熟?比較全面且健全的渠道?產(chǎn)品成熟度被市場認(rèn)可,市場占...
摘要:能跨平臺(tái)地設(shè)置及使用環(huán)境變量讓這一切變得簡單,不同平臺(tái)使用唯一指令,無需擔(dān)心跨平臺(tái)問題安裝方式改寫使用了環(huán)境變量的常見如在腳本多是里這么配置運(yùn)行,這樣便設(shè)置成功,無需擔(dān)心跨平臺(tái)問題關(guān)于跨平臺(tái)兼容,有幾點(diǎn)注意 cross-env能跨平臺(tái)地設(shè)置及使用環(huán)境變量, cross-env讓這一切變得簡單,不同平臺(tái)使用唯一指令,無需擔(dān)心跨平臺(tái)問題 1、npm安裝方式 npm i --save-de...
摘要:引入的模塊引入的使用將打包打包的拆分將一部分抽離出來物理地址拼接優(yōu)化打包速度壓縮代碼,這里使用的是,同樣在的里面添加 const path = require(path); //引入node的path模塊const webpack = require(webpack); //引入的webpack,使用lodashconst HtmlWebpackPlugin = require(ht...
閱讀 3178·2021-10-13 09:40
閱讀 4039·2021-09-22 15:51
閱讀 1566·2021-09-22 15:48
閱讀 1135·2021-09-06 15:00
閱讀 1878·2019-08-30 15:43
閱讀 2431·2019-08-29 18:35
閱讀 1768·2019-08-29 16:18
閱讀 3691·2019-08-29 12:49