Hilfsfunktionen: 1. Digitaler Betrieb(1) Generieren Sie Zufallszahlen in einem bestimmten Bereich(2) Tausendertrennzeichenexport const format = (n) => { Lassen Sie uns num = n.toString(); lass len = num.length; wenn (Länge <= 3) { Rückgabenummer; } anders { lass temp = ''; sei Rest = Länge % 3; if (Rest > 0) { // Kein ganzzahliges Vielfaches von 3 return num.slice(0, Rest) + ',' + num.slice(Rest, Länge).match(/\d{3}/g).join(',') + temp; } sonst { // ganzzahliges Vielfaches von 3 return num.slice(0, len).match(/\d{3}/g).join(',') + temp; } } } 2. Array-Operationen(1) Array nicht in der richtigen Reihenfolgeexportiere const arrScrambling = (arr) => { für (sei i = 0; i < arr.length; i++) { const randomIndex = Math.round(Math.random() * (arr.length - 1 - i)) + i; [arr[i], arr[Zufallsindex]] = [arr[Zufallsindex], arr[i]]; } Rückflug an; } (2) Array-Abflachungexportiere const flatten = (arr) => { lass Ergebnis = []; für(lass i = 0; i < arr.length; i++) { wenn(Array.isArray(arr[i])) { Ergebnis = Ergebnis.concat(flatten(arr[i])); } anders { Ergebnis.push(arr[i]); } } Ergebnis zurückgeben; } (3) Gewinnung von Zufallszahlen aus einem Arrayexportiere const sample = arr => arr[Math.floor(Math.random() * arr.length)]; 3. String-Operationen(1) Generieren Sie eine zufällige Zeichenfolgeexport const randomString = (Länge) => { let chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz123456789'; let strLen = chars.length; lass randomStr = ''; für (sei i = 0; i < len; i++) { randomStr += chars.charAt(Math.floor(Math.random() * strLen)); } returniere randomStr; }; (2) Der erste Buchstabe der Zeichenfolge wird groß geschriebenexport const fistLetterUpper = (str) => { return str.charAt(0).toUpperCase() + str.slice(1); }; (3) Die mittleren vier Ziffern der Mobiltelefonnummer werden zu *export const telFormat = (tel) => { tel = String(tel); return tel.substr(0,3) + "****" + tel.substr(7); }; (4) Konvertieren Sie Camel-Case-Namen in Bindestrich-Case-Namenexport const getKebabCase = (str) => { return str.replace(/[AZ]/g, (Artikel) => '-' + Artikel.toLowerCase()) } (5) Konvertieren Sie Bindestrichnamen in Camel-Case-Namenexportiere const getCamelCase = (str) => { return str.replace( /-([az])/g, (i, item) => item.toUpperCase()) } (6) Volle Breite in halbe Breite umwandelnexportiere const toCDB = (str) => { lass Ergebnis = ""; für (lass i = 0; i < str.length; i++) { Code = str.charCodeAt(i); wenn (Code >= 65281 und Code <= 65374) { Ergebnis += String.fromCharCode(str.charCodeAt(i) - 65248); } sonst wenn (Code == 12288) { Ergebnis += String.fromCharCode(str.charCodeAt(i) - 12288 + 32); } anders { Ergebnis += str.charAt(i); } } Ergebnis zurückgeben; } (7) Halbe Breite in volle Breite umwandelnexport const toDBC = (str) => { lass Ergebnis = ""; für (lass i = 0; i < str.length; i++) { Code = str.charCodeAt(i); wenn (Code >= 33 und Code <= 126) { Ergebnis += String.fromCharCode(str.charCodeAt(i) + 65248); } sonst wenn (Code == 32) { Ergebnis += String.fromCharCode(str.charCodeAt(i) + 12288 - 32); } anders { Ergebnis += str.charAt(i); } } Ergebnis zurückgeben; } 4. Formatkonvertierung(1) Zahlen in Großbuchstaben umwandelnexportiere const digitUppercase = (n) => { const fraction = ['Winkel', 'Minute']; Konstante Ziffer = [ 'null', 'eins', 'zwei', 'drei', 'vier', „Fünf“, „Sechs“, „Sieben“, „Acht“, „Neun“ ]; Konstanteneinheit = [ ['Yuan', '10.000', '100 Millionen'], ['', 'Nein', 'Nein', 'Nein'] ]; n = Math.abs(n); lass s = ''; für (lass i = 0; i < Bruchlänge; i++) { s += (Ziffer[Math.floor(n * 10 * Math.pow(10, i)) % 10] + Bruch[i]).replace(/零./, ''); } s = s || 'Ganzes'; n = Math.floor(n); für (sei i = 0; i < unit[0].length und n > 0; i++) { sei p = ''; für (sei j = 0; j < unit[1].length && n > 0; j++) { p = Ziffer[n % 10] + Einheit[1][j] + p; n = Math.floor(n / 10); } s = p.replace(/(零.)*零$/, '').replace(/^$/, '零') + Einheit[0][i] + s; } return s.replace(/(Nein.)*NeinKommando/, 'Kommando') .replace(/(零.)+/g, '零') .replace(/^whole$/, 'null Yuan ganz'); }; (2) Zahlen in chinesische Zahlen umwandelnexport const intToChinese = (Wert) => { const str = String(Wert); const len = str.length-1; const idxs = ['','Verknüpfung','Neuanfang','Verknüpfung','Verknüpfung','Verknüpfung','Verknüpfung','Verknüpfung','Verknüpfung','Verknüpfung','Verknüpfung','Verknüpfung','Verknüpfung','Verknüpfung','Verknüpfung','Verknüpfung']; const num = ['null','eins','zwei','drei','vier','fünf','sechs','sieben','acht','neun']; return str.replace(/([1-9]|0+)/g, ( $, $1, idx, full) => { sei pos = 0; wenn($1[0] !== '0'){ pos = Länge-idx; wenn(idx == 0 && $1[0] == 1 && idxs[len-idx] == 'Wert'){ returniere idxs[Länge-idx]; } return Num[$1[0]] + idxs[Länge-idx]; } anders { lass links = Länge - idx; rechts lassen = Länge - idx + $1.Länge; wenn (Math.floor(rechts / 4) - Math.floor(links / 4) > 0) { pos = links - links % 4; } wenn(pos){ gibt idxs[pos] + num[$1[0]] zurück; } sonst wenn( idx + $1.length >= len ){ zurückkehren ''; }anders { Rückgabewert: Num[$1[0]] } } }); } 5. Betriebsspeicher(1) Speicherort localStorageexport const localStorageSet = (Schlüssel, Wert) => { wenn (!Taste) zurückgeben; wenn (Typ des Wertes !== 'Zeichenfolge') { Wert = JSON.stringify(Wert); } window.localStorage.setItem(Schlüssel, Wert); }; (2) LocalStorage nutzenexport const localStorageGet = (Schlüssel) => { wenn (!Taste) zurückgeben; gibt window.localStorage.getItem(Schlüssel) zurück; }; (3) LocalStorage löschenexport const localStorageRemove = (Schlüssel) => { wenn (!Taste) zurückgeben; window.localStorage.removeItem(Schlüssel); }; (4) SessionStorageexport const sessionStorageSet = (Schlüssel, Wert) => { wenn (!Taste) zurückgeben; wenn (Typ des Wertes !== 'Zeichenfolge') { Wert = JSON.stringify(Wert); } window.sessionStorage.setItem(Schlüssel, Wert) }; (5) SessionStorage abrufenexport const sessionStorageGet = (Schlüssel) => { wenn (!Taste) zurückgeben; gibt window.sessionStorage.getItem(Schlüssel) zurück }; (6) SessionStorage löschenexport const sessionStorageRemove = (Schlüssel) => { wenn (!Taste) zurückgeben; window.sessionStorage.removeItem(Schlüssel) }; 6. Betriebsbezogene Cookies(1) Einsatz von Cookiesexport const setCookie = (Schlüssel, Wert, Ablauf) => { const d = neues Datum(); d.setDate(d.getDate() + Ablauf); Dokument.cookie = `${key}=${value}; läuft ab=${d.toUTCString()}` }; (2) Lesen von Cookiesexport const getCookie = (Schlüssel) => { const cookieStr = unescape(document.cookie); const arr = cookieStr.split('; '); Lassen Sie cookieValue = ''; für (sei i = 0; i < arr.length; i++) { const temp = arr[i].split('='); wenn (temp[0] === Schlüssel) { CookieWert = temp[1]; brechen } } Cookie-Wert zurückgeben }; (3) Löschung von Cookiesexport const delCookie = (Schlüssel) => { document.cookie = `${encodeURIComponent(key)}=;expires=${new Date()}` }; 7. Formatprüfung(1) Ausweisnummer verifizierenexport const checkCardNo = (Wert) => { sei reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/; gibt reg.test(Wert) zurück; }; (2) Überprüfen Sie, ob es Chinesisch enthältexport const haveCNChars => (Wert) => { return /[\u4e00-\u9fa5]/.test(Wert); } (3) Überprüfen Sie, ob es sich um eine Postleitzahl auf dem chinesischen Festland handeltexport const isPostCode = (Wert) => { return /^[1-9][0-9]{5}$/.test(value.toString()); } (4) Prüfen Sie, ob es sich um eine IPv6-Adresse handeltexport const isIPv6 = (str) => { return Boolean(str.match(/:/g)?str.match(/:/g).length<=7:false && /::/.test(str)?/^([\da-f]{1,4}(:|::)){1,6}[\da-f]{1,4}$/i.test(str):/^([\da-f]{1,4}:){7}[\da-f]{1,4}$/i.test(str)); } (5) Überprüfen Sie, ob es sich um eine E-Mail-Adresse handeltexport const isEmail = (Wert) { zurück /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/.test(Wert); } (6) Überprüfen Sie, ob es sich um eine Mobiltelefonnummer aus Festlandchina handeltexport const isTel = (Wert) => { return /^1[3,4,5,6,7,8,9][0-9]{9}$/.test(value.toString()); } (7) Überprüfen Sie, ob Emoji-Ausdrücke enthalten sindexport const isEmojiCharacter = (Wert) => { Wert = String(Wert); für (lass i = 0; i < Wert.Länge; i++) { const hs = Wert.charCodeAt(i); wenn (0xd800 <= hs && hs <= 0xdbff) { if (Wert.Länge > 1) { const ls = Wert.charCodeAt(i + 1); const uc = ((hs - 0xd800) * 0x400) + (ls - 0xdc00) + 0x10000; wenn (0x1d000 <= uc && uc <= 0x1f77f) { gibt true zurück; } } } sonst wenn (Wert.Länge > 1) { const ls = Wert.charCodeAt(i + 1); wenn (ls == 0x20e3) { gibt true zurück; } } anders { wenn (0x2100 <= hs && hs <= 0x27ff) { gibt true zurück; } sonst wenn (0x2B05 <= hs && hs <= 0x2b07) { gibt true zurück; } sonst wenn (0x2934 <= hs && hs <= 0x2935) { gibt true zurück; } sonst wenn (0x3297 <= hs && hs <= 0x3299) { gibt true zurück; } sonst wenn (hs == 0xa9 || hs == 0xae || hs == 0x303d || hs == 0x3030 || hs == 0x2b55 || hs == 0x2b1c || hs == 0x2b1b || hs == 0x2b50) { gibt true zurück; } } } gibt false zurück; } 8. Manipulation von URLs(1) URL-Parameterliste abrufenexportiere const GetRequest = () => { lassen Sie url = Standort.Suche; const paramsStr = /.+\?(.+)$/.exec(url)[1]; // Nimm den String nach ? const paramsArr = paramsStr.split('&'); // Teile den String mit & und speichere ihn in einem Array let paramsObj = {}; // Parameter im Objekt speichern paramsArr.forEach(param => { if (/=/.test(param)) { // Parameter mit Wert verarbeiten let [key, val] = param.split('='); // Schlüssel und Wert aufteilen val = decodeURIComponent(val); // Decodeval = /^\d+$/.test(val) ? parseFloat(val) : val; // Bestimmen Sie, ob es in eine Zahl umgewandelt wirdif (paramsObj.hasOwnProperty(key)) { // Wenn das Objekt einen Schlüssel hat, fügen Sie einen Wert hinzuparamsObj[key] = [].concat(paramsObj[key], val); } else { // Wenn das Objekt diesen Schlüssel nicht hat, erstelle den Schlüssel und setze den Wert paramsObj[key] = val; } } else { // Prozessparameter ohne Wert paramsObj[param] = true; } }) gibt paramsObj zurück; }; (2) Überprüfen Sie, ob die URL gültig istexportiere const getUrlState = (URL) => { let xmlhttp = neues ActiveXObject("microsoft.xmlhttp"); xmlhttp.Open("GET", URL, falsch); versuchen { xmlhttp.Send(); } fangen (e) { Endlich let result = xmlhttp.responseText; wenn (Ergebnis) { wenn (xmlhttp.Status == 200) { gibt true zurück; } anders { gibt false zurück; } } anders { gibt false zurück; } } } (3) Schlüssel-Wert-Paare werden zu URL-Parametern verkettetexportiere const params2Url = (obj) => { let-Parameter = [] für (let key in obj) { params.push(`${key}=${obj[key]}`); } Rückgabewert für encodeURIComponent(params.join('&')) } (4) Ändern Sie die Parameter in der URLexport const replaceParamVal => (ParamName, Ersetzen mit) { const oUrl = location.href.toString(); const re = eval('/('+ paramName+'=)([^&]*)/gi'); location.href = oUrl.replace(re,paramName+'='+replaceWith); gib location.href zurück; } (5) Löschen Sie die angegebenen Parameter in der URLexport const funcUrlDel = (Name) => { const baseUrl = Standort.Herkunft + Standort.Pfadname + "?"; const query = standort.suche.substr(1); wenn (Abfrage.Index von (Name) > -1) { const obj = {}; const arr = query.split("&"); für (sei i = 0; i < arr.length; i++) { arr[i] = arr[i].split("="); obj[arr[i][0]] = arr[i][1]; } lösche Objekt[Name]; returniere baseUrl + JSON.stringify(obj).replace(/[\"\{\}]/g,"").replace(/\:/g,"=").replace(/\,/g,"&"); } } 9. Beurteilung der Ausrüstung(1) Bestimmen Sie, ob es sich um ein mobiles oder ein PC-Gerät handeltexport const isMobile = () => { if ((navigator.userAgent.match(/(iPhone|iPod|Android|ios|iOS|iPad|Backerry|WebOS|Symbian|Windows Phone|Phone)/i))) { gib „mobile“ zurück; } gib „Desktop“ zurück; } (2) Stellen Sie fest, ob es sich um ein Apple- oder Android-Mobilgerät handeltexport const isAppleMobileDevice = () => { let reg = /iphone|ipod|ipad|Macintosh/i; return reg.test(navigator.userAgent.toLowerCase()); } (3) Stellen Sie fest, ob es sich um ein Android-Mobilgerät handeltexport const isAndroidMobileDevice = () => { Rückgabewert /android/i.test(navigator.userAgent.toLowerCase()); } (4) Stellen Sie fest, ob es sich um ein Windows- oder Mac-System handeltexportiere const osType = () => { const agent = navigator.userAgent.toLowerCase(); const isMac = /macintosh|mac os x/i.test(navigator.userAgent); const isWindows = agent.indexOf("win64") >= 0 || agent.indexOf("wow64") >= 0 || agent.indexOf("win32") >= 0 || agent.indexOf("wow32") >= 0; wenn (istWindows) { gib "Windows" zurück; } wenn(istMac){ gib "mac" zurück; } } (5) Stellen Sie fest, ob es sich um den in WeChat / QQ integrierten Browser handeltexport const browser = () => { const ua = navigator.userAgent.toLowerCase(); if (ua.match(/MicroMessenger/i) == "micromessenger") { gib "weixin" zurück; } sonst wenn (ua.match(/QQ/i) == "qq") { gib "QQ" zurück; } gibt false zurück; } (6) Browsermodell und -versionexportiere const getExplorerInfo = () => { lass t = navigator.userAgent.toLowerCase(); return 0 <= t.indexOf("msie") ? { //dh < 11 Typ: "IE", Version: Nummer(t.match(/msie ([\d]+)/)[1]) } : !!t.match(/trident\/.+?rv:(([\d.]+))/) ? { // zB 11 Typ: "IE", Version: 11 } : 0 <= t.indexOf("Kante") ? { Typ: "Kante", Version: Nummer(t.match(/edge\/([\d]+)/)[1]) } : 0 <= t.indexOf("Firefox") ? { Typ: "Firefox", Version: Nummer(t.match(/firefox\/([\d]+)/)[1]) } : 0 <= t.indexOf("chrome") ? { Typ: "Chrome", Version: Nummer(t.match(/chrome\/([\d]+)/)[1]) } : 0 <= t.indexOf("opera") ? { Typ: "Opera", Version: Nummer(t.match(/opera.([\d]+)/)[1]) } : 0 <= t.indexOf("Safari") ? { Typ: "Safari", Version: Nummer(t.match(/version\/([\d]+)/)[1]) } : { Typ: t, Version: -1 } } 10. Browser-Bedienung(1) Scrollen Sie zum Anfang der Seiteexportiere const scrollToTop = () => { const Höhe = Dokument.documentElement.scrollTop || Dokument.body.scrollTop; wenn (Höhe > 0) { window.requestAnimationFrame(nachOben scrollen); window.scrollTo(0, Höhe - Höhe / 8); } } (2) Scrollen Sie zum Ende der Seiteexportiere const scrollToBottom = () => { Fenster.scrollTo(0, Dokument.documentElement.clientHeight); } (3) Scrollen Sie zum angegebenen Elementbereichexport const smoothScroll = (Element) => { document.querySelector(element).scrollIntoView({ Verhalten: ‚glatt‘ }); }; (4) Ermitteln Sie die sichtbare Fensterhöheexportiere const getClientHeight = () => { sei clientHeight = 0; wenn (Dokument.Body.ClientHeight && Dokument.DocumentElement.ClientHeight) { Clienthöhe = (Dokument.Hauptteil.Clienthöhe < Dokument.Dokumentelement.Clienthöhe) ? Dokument.Hauptteil.Clienthöhe : Dokument.Dokumentelement.Clienthöhe; } anders { Clienthöhe = (Dokument.Hauptteil.Clienthöhe > Dokument.Dokumentelement.Clienthöhe) ? Dokument.Hauptteil.Clienthöhe : Dokument.Dokumentelement.Clienthöhe; } Clienthöhe zurückgeben; } (5) Ermitteln Sie die sichtbare Fensterbreiteexportiere const getPageViewWidth = () => { zurückgeben (document.compatMode == "BackCompat" ? document.body : document.documentElement).clientWidth; } (6) Öffnen Sie den Browser im Vollbildmodusexportiere const toFullScreen = () => { let-Element = Dokument.Text; wenn (element.requestFullscreen) { element.requestFullscreen() } sonst wenn (element.mozRequestFullScreen) { element.mozRequestFullScreen() } sonst wenn (element.msRequestFullscreen) { element.msRequestFullscreen() } sonst wenn (element.webkitRequestFullscreen) { element.webkitRequestFullScreen() } } (7) Beenden des Vollbild-Browsersexportiere const exitFullscreen = () => { wenn (document.exitFullscreen) { document.exitFullscreen() } sonst wenn (document.msExitFullscreen) { document.msExitFullscreen() } sonst wenn (document.mozCancelFullScreen) { document.mozCancelFullScreen() } sonst wenn (document.webkitExitFullscreen) { document.webkitExitFullscreen() } } 11. Zeitbetrieb(1) Aktuelle Uhrzeitexportiere const jetztZeit = () => { const jetzt = neues Datum(); const year = jetzt.getFullYear(); const Monat = jetzt.getMonth(); const date = jetzt.getDate() >= 10 ? jetzt.getDate() : ('0' + jetzt.getDate()); const Stunde = jetzt.getHours() >= 10 ? jetzt.getHours() : ('0' + jetzt.getHours()); const miu = jetzt.getMinutes() >= 10 ? jetzt.getMinutes() : ('0' + jetzt.getMinutes()); const sec = jetzt.getSeconds() >= 10 ? jetzt.getSeconds() : ('0' + jetzt.getSeconds()); return +year + "Jahr" + (Monat + 1) + "Monat" + Datum + "Tag" + Stunde + ":" + miu + ":" + Sek.; } (2) Zeit formatierenexport const dateFormater = (Formatierer, Zeit) => { let date = time ? neues Datum(Zeit) : neues Datum(), Y = date.getFullYear() + '', M = date.getMonth() + 1, D = datum.getDate(), H = date.getHours(), m = date.getMinutes(), s = date.getSeconds(); Rückgabewert: formatter.replace(/JJJJ|jjjj/g, J) .replace(/YY|yy/g, Y.substr(2, 2)) .replace(/MM/g,(M<10 ? '0' : '') + M) .replace(/DD/g,(D<10 ? '0' : '') + D) .replace(/HH|hh/g,(H<10 ? '0' : '') + H) .replace(/mm/g,(m<10 ? '0' : '') + m) .replace(/ss/g,(s<10 ? '0' : '') + s) } // Datumsformatierer('JJJJ-MM-TT HH:mm:ss') // Datumsformatierer('JJJJMMTTHHmmss') 12. JavaScript-Bedienung(1) Verhindern Sie Blasenbildungexportiere const stopPropagation = (e) => { e = e || Fenster.Ereignis; if(e.stopPropagation) { // W3C verhindert Bubbling-Methode e.stopPropagation(); } anders { e.cancelBubble = true; // IE verhindert Bubbling-Methode} } (2) Anti-Shake-Funktionexport const entprellen = (fn, warten) => { lass Timer = null; return Funktion() { lass Kontext = dies, args = Argumente; wenn (Zeitgeber) { Zeitüberschreitung löschen(Timer); Zeitgeber = null; } Timer = setzeTimeout(() => { fn.apply(Kontext, Argumente); }, Warten); }; } (3) Drosselfunktionexportiere const throttle = (fn, delay) => { lass curTime = Date.now(); return Funktion() { lass Kontext = dies, args = Argumente, jetztZeit = Date.now(); if (jetzteZeit - aktuelleZeit >= Verzögerung) { aktuelleZeit = Date.now(); gibt fn.apply(Kontext, Argumente) zurück; } }; } (4) Datentypbestimmungexport const getType = (Wert) => { wenn (Wert === null) { Rückgabewert + ""; } // Bestimmen Sie, ob die Daten ein Referenztyp sind, if (typeof value === "object") { Lassen Sie valueClass = Object.prototype.toString.call(Wert), Typ = WertKlasse.split(" ")[1].split(""); Typ.pop(); Rückgabetyp.join("").toLowerCase(); } anders { // Bestimmen Sie, ob es sich bei den Daten um einen Basisdatentyp oder einen Funktionsrückgabetyp des Werts handelt. } } (5) Objekt-Tiefkopieexportiere const deepClone = (obj, hash = neue WeakMap() => { // Das Datumsobjekt gibt direkt ein neues Datumsobjekt zurück, wenn (obj instanceof Date){ gib ein neues Datum (Objekt) zurück; } //Das reguläre Objekt gibt direkt ein neues reguläres Objekt zurück, wenn (obj instanceof RegExp) { gib neuen RegExp(Objekt) zurück; } //Wenn ein zirkulärer Verweis vorliegt, verwenden Sie weakMap, um ihn zu lösen, if (hash.has(obj)){ gibt hash.get(obj) zurück; } // Beschreibung aller Eigenschaften des Objekts abrufen let allDesc = Object.getOwnPropertyDescriptors(obj); // Durchlaufe die Eigenschaften aller im Parameter übergebenen Schlüssel let cloneObj = Object.create(Object.getPrototypeOf(obj), allDesc) hash.set(Objekt, Klonobjekt) für (let key of Reflect.ownKeys(obj)) { wenn(Typ von Objekt[Schlüssel] === 'Objekt' && Objekt[Schlüssel] !== null){ cloneObj[Schlüssel] = deepClone(obj[Schlüssel], Hash); } anders { cloneObj[Schlüssel] = obj[Schlüssel]; } } returniere Klonobjekt } Damit ist der Artikel über 56 praktische JavaScript-Toolfunktionen abgeschlossen, mit denen Sie die Entwicklungseffizienz verbessern können. Weitere Informationen zu 56 praktischen JavaScript-Toolfunktionen finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den verwandten Artikeln weiter unten. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Docker mountet lokale Verzeichnisse und Datenvolumen-Container-Operationen
>>: CSS- und HTML- und Front-End-Technologie-Schichtendiagramm
JSONObject ist lediglich eine Datenstruktur, die ...
Inhaltsverzeichnis 1. Laden Sie den Tomcat-Code h...
Im Vue-Gerüst können wir sehen, dass im neuen Vue...
vue-router hat zwei Modi Hash-Modus Verlaufsmodus...
In einer komplexen Tabellenstruktur erstrecken si...
HTML Quelltext: <a onclick="goMessage();&...
1.MySQL-Version [root@clq-System]# mysql -v Willk...
Inhaltsverzeichnis 1. Weltweit registrierte Kompo...
Da ich bereits HTML analysiert habe, möchte ich h...
1. Installieren Sie Docker. Referenz-URL: Docker-...
MJML ist ein modernes E-Mail-Tool, mit dem Entwic...
Inhaltsverzeichnis Einführung scrollen Element.sc...
Für die Installation von Docker auf CentOS muss d...
Beim Anpassen der Softwareinstallation müssen Sie...
Verwenden Sie „onInput(event)“, um festzustellen,...