摘要:起源今天在閱讀一個(gè)庫(kù)的關(guān)于處理元素自定義屬性的時(shí)候,發(fā)現(xiàn)了將駝峰風(fēng)格的字符串轉(zhuǎn)化成中劃線風(fēng)格的字符串的技巧,以方便根據(jù)來(lái)移除實(shí)際元素對(duì)應(yīng)的,至于對(duì)象的和自定義屬性的對(duì)應(yīng)規(guī)則,你可以閱讀這邊文檔發(fā)現(xiàn)代碼位置文件匹配大寫(xiě)字母代碼樣例
起源
今天在閱讀snabbdom(一個(gè)Virtual DOM 庫(kù))的關(guān)于處理元素自定義屬性的時(shí)候,發(fā)現(xiàn)了將駝峰風(fēng)格的字符串轉(zhuǎn)化成中劃線風(fēng)格的字符串的技巧,以方便根據(jù)dataset來(lái)移除實(shí)際DOM元素對(duì)應(yīng)的attribute,至于DOM對(duì)象的dataset和HTML自定義屬性的對(duì)應(yīng)規(guī)則,你可以閱讀這邊文檔:https://developer.mozilla.org...
發(fā)現(xiàn)代碼位置文件src/modules/dataset.ts
import {VNode, VNodeData} from "../vnode"; import {Module} from "./module"; export type Dataset = Record代碼樣例; const CAPS_REGEX = /[A-Z]/g; //匹配大寫(xiě)字母 function updateDataset(oldVnode: VNode, vnode: VNode): void { let elm: HTMLElement = vnode.elm as HTMLElement, oldDataset = (oldVnode.data as VNodeData).dataset, dataset = (vnode.data as VNodeData).dataset, key: string; if (!oldDataset && !dataset) return; if (oldDataset === dataset) return; oldDataset = oldDataset || {}; dataset = dataset || {}; const d = elm.dataset; for (key in oldDataset) { if (!dataset[key]) { if (d) { if (key in d) { delete d[key]; } } else { elm.removeAttribute("data-" + key.replace(CAPS_REGEX, "-$&").toLowerCase()); } } } for (key in dataset) { if (oldDataset[key] !== dataset[key]) { if (d) { d[key] = dataset[key]; } else { elm.setAttribute("data-" + key.replace(CAPS_REGEX, "-$&").toLowerCase(), dataset[key]); } } } } export const datasetModule = {create: updateDataset, update: updateDataset} as Module; export default datasetModule;
"theStringYouWanToChange".replace(/[A-Z]/g,"-$&").toLowerCase();運(yùn)行結(jié)果
"the-string-you-wan-to-change"相關(guān)文檔
String.prototype.replace(): https://developer.mozilla.org...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/99519.html
摘要:為什么要編寫(xiě)可維護(hù)的軟件生命周期的成本消耗在了維護(hù)上。相等具有強(qiáng)制類型轉(zhuǎn)換的機(jī)制。檢測(cè)字符串檢測(cè)數(shù)字檢測(cè)布爾值檢測(cè)檢測(cè)引用值引用值也稱為對(duì)象,檢測(cè)某個(gè)引用值的類型的官方最好的方法是使用運(yùn)算符。 為什么要編寫(xiě)可維護(hù)的javascript? 軟件生命周期80%的成本消耗在了維護(hù)上。 幾乎所有的軟件維護(hù)者都不是它的最初作者。 編碼規(guī)范提高了軟件的可讀性,它讓工程師能夠快速且充分地理解新的代...
摘要:為什么要編寫(xiě)可維護(hù)的軟件生命周期的成本消耗在了維護(hù)上。相等具有強(qiáng)制類型轉(zhuǎn)換的機(jī)制。檢測(cè)字符串檢測(cè)數(shù)字檢測(cè)布爾值檢測(cè)檢測(cè)引用值引用值也稱為對(duì)象,檢測(cè)某個(gè)引用值的類型的官方最好的方法是使用運(yùn)算符。 為什么要編寫(xiě)可維護(hù)的javascript? 軟件生命周期80%的成本消耗在了維護(hù)上。 幾乎所有的軟件維護(hù)者都不是它的最初作者。 編碼規(guī)范提高了軟件的可讀性,它讓工程師能夠快速且充分地理解新的代...
摘要:對(duì)于構(gòu)造函數(shù),使用大駝峰式大小寫(xiě)。構(gòu)造函數(shù)的命名應(yīng)當(dāng)是名詞。引號(hào)的使用,字符串,傾向于使用單引號(hào),并始終保持這個(gè)風(fēng)格。塊語(yǔ)句間隔,推薦使用風(fēng)格。風(fēng)格風(fēng)格風(fēng)格此處省略了的使用規(guī)范使用規(guī)范循環(huán)必須使用。 基本格式 使用4個(gè)空格字符作為一個(gè)縮進(jìn)層級(jí),(記得配置編輯器)。 不要省略分號(hào)。 行的長(zhǎng)度限定在80個(gè)字符。 長(zhǎng)度超過(guò)限制時(shí),選擇在運(yùn)算符之后換行,下一行需要兩個(gè)層級(jí)的縮進(jìn)。例外,變量...
摘要:格式術(shù)語(yǔ)說(shuō)明塊狀結(jié)構(gòu)指的是一個(gè)類,方法或構(gòu)造函數(shù)的主體。方法名或構(gòu)造函數(shù)名與左括號(hào)留在同一行。空白垂直空白以下情況需要使用一個(gè)空行類內(nèi)連續(xù)的成員之間字段,構(gòu)造函數(shù),方法,嵌套類,靜態(tài)初始化塊,實(shí)例初始化塊。 前言 這份文檔是Google Java編程風(fēng)格規(guī)范的完整定義。當(dāng)且僅當(dāng)一個(gè)Java源文件符合此文檔中的規(guī)則, 我們才認(rèn)為它符合Google的Java編程風(fēng)格。 與其它的編程風(fēng)格...
摘要:一個(gè)簡(jiǎn)單的工具類庫(kù),用于將文本轉(zhuǎn)化為不同格式的命名風(fēng)格如駝峰式連字符式常量式等。 naming-style https://www.npmjs.com/package... 一個(gè)簡(jiǎn)單的工具類庫(kù),用于將文本轉(zhuǎn)化為不同格式的命名風(fēng)格(如:駝峰式、連字符式、常量式等)。 安裝 yarn add naming-style or npm i naming-style 使用 import { ...
閱讀 2571·2021-11-23 09:51
閱讀 3366·2021-11-22 15:22
閱讀 1878·2021-11-18 13:22
閱讀 2274·2021-09-24 09:48
閱讀 1319·2019-08-29 13:58
閱讀 1312·2019-08-26 13:39
閱讀 2453·2019-08-26 10:48
閱讀 3042·2019-08-26 10:21