Inhaltsverzeichnis
Was sind Decorators?
装饰器的使用
js中使用装饰器
不使用装饰器
vue 中使用装饰器
Verwenden Sie Dekoratoren in js Sie werden feststellen, dass der Code nach der Verwendung von Dekoratoren besser lesbar wird. Dekorateure kümmern sich nicht um die Implementierung Ihres inneren Codes.
Tipps:
Heim Web-Frontend View.js Eine kurze Analyse: Was ist ein Dekorateur? Wie verwende ich Dekorateure in Vue?

Eine kurze Analyse: Was ist ein Dekorateur? Wie verwende ich Dekorateure in Vue?

Jan 26, 2022 pm 06:06 PM
vue 装饰器

Was sind Dekorateure? Dieser Artikel stellt Ihnen Dekorateure vor und stellt kurz vor, wie Sie Dekoratoren in js und vue verwenden. Ich hoffe, er wird Ihnen hilfreich sein!

Eine kurze Analyse: Was ist ein Dekorateur? Wie verwende ich Dekorateure in Vue?

Ich glaube, dass Sie während der Entwicklung auf die Notwendigkeit einer sekundären Popup-Bestätigung gestoßen sein müssen. Unabhängig davon, ob Sie die sekundäre Popup-Komponente des UI-Frameworks oder Ihre eigene gekapselte Popup-Komponente verwenden. Sie alle können das Problem einer großen Menge wiederholten Codes bei mehrfacher Verwendung nicht vermeiden. Die Anhäufung dieser Codes führt zu einer schlechten Lesbarkeit des Projekts. Auch die Codequalität des Projekts ist sehr schlecht geworden. Wie lösen wir also das Problem doppelter Popup-Codes? Verwenden von Decorators

Was sind Decorators?

Decorator ist eine neue Syntax von ES7. Decorator dekoriert Klassen, Objekte, Methoden und Eigenschaften. Fügen Sie zusätzliches Verhalten hinzu. Laienhaft ausgedrückt: Es handelt sich um eine sekundäre Verpackung eines Codestücks. DecoratorES7的一个新语法。Decorator通过对类、对象、方法、属性进行修饰。对其添加一些其他的行为。通俗来说:就是对一段代码进行二次包装。

装饰器的使用

使用方法很简单 我们定义一个函数

const  decorator =  (target, name, descriptor) => {
 var oldValue = descriptor.value;
 descriptor.value = function(){
    alert('哈哈')
    return oldValue.apply(this,agruments)
       }
  return descriptor
}
// 然后直接@decorator到函数、类或者对象上即可。
Nach dem Login kopieren

装饰器的目的旨在对代码进行复用。下面我们先来一个小例子看看

js中使用装饰器

//定义一个装饰器 
const log = (target, name, descriptor) => {
  var oldValue = descriptor.value;
  descriptor.value = function() {
    console.log(`Calling ${name} with`, arguments);
    return oldValue.apply(this, arguments);
  };
  return descriptor;
}
   //计算类
  class Calculate {  
 
  //使用装饰器
  @log() 
  function  subtraction(a,b){
     return  a - b
   }
 }
 
 const operate  = new Calculate()
  operate.subtraction(5,2)
Nach dem Login kopieren

不使用装饰器

const log = (func) => {
  if(typeof(func) !== 'function') {
    throw new Error(`the param must be a function`);
  }
  return (...arguments) => {
    console.info(`${func.name} invoke with ${arguments.join(',')}`);
    func(...arguments);
  }
}

const subtraction = (a, b) => a + b;

const subtractionLog = log(subtraction);

subtractionLog(10,3);
Nach dem Login kopieren

这样一对比你会发现使用装饰器后代码的可读性变强了。装饰器并不关心你内部代码的实现。

vue 中使用装饰器

如果你的项目是用vue-cli搭建的 并且vue-cli的版本大于2.5 那么你无需进行任何配置即可使用。如果你的项目还包含eslit 那么你需要在eslit中开启支持装饰器相关的语法检测。【相关推荐:vue.js视频教程

//在 eslintignore中添加或者修改如下代码:
parserOptions: {
    ecmaFeatures:{
      // 支持装饰器
      legacyDecorators: true
    }
  }
Nach dem Login kopieren

加上这段代码之后eslit就支持装饰器语法了。

通常在项目中我们经常会使用二次弹框进行删除操作:

//decorator.js
//假设项目中已经安装了 element-ui
import { MessageBox, Message } from 'element-ui'
/**
 * 确认框
 * @param {String} title - 标题
 * @param {String} content - 内容
 * @param {String} confirmButtonText - 确认按钮名称
 * @param {Function} callback - 确认按钮名称
 * @returns
   **/
export function confirm(title, content, confirmButtonText = '确定') {
  return function(target, name, descriptor) {
    const originValue = descriptor.value
    descriptor.value = function(...args) {
      MessageBox.confirm(content, title, {
        dangerouslyUseHTMLString: true,
        distinguishCancelAndClose: true,
        confirmButtonText: confirmButtonText
      }).then(originValue.bind(this, ...args)).catch(error => {
        if (error === 'close' || error === 'cancel') {
          Message.info('用户取消操作'))
        } else {
          Message.info(error)
        }
      })
    }
    return descriptor
  }
}
Nach dem Login kopieren

如上代码 confirm方法里执行了一个element-ui中的MessageBox组件 当用户取消时 Message

Die Verwendung von Dekoratoren

Die Verwendungsmethode ist sehr einfach. Wir definieren eine Funktion

import { confirm } from '@/util/decorator'
import axios form 'axios'
export default {
name:'test',
data(){
return {
  delList: '/merchant/storeList/commitStore'
    }
  }
},
methods:{
 @confirm('删除门店','请确认是否删除门店?')
  test(id){
   const {res,data} = axios.post(this.delList,{id})
   if(res.rspCd + '' === '00000') this.$message.info('操作成功!')
  }
}
Nach dem Login kopieren

Der Zweck des Dekorators besteht darin, den Code wiederzuverwenden. Nehmen wir zunächst ein kleines Beispiel.

Verwenden Sie Dekoratoren in js Sie werden feststellen, dass der Code nach der Verwendung von Dekoratoren besser lesbar wird. Dekorateure kümmern sich nicht um die Implementierung Ihres inneren Codes.

Verwenden Sie Dekoratoren in VueEine kurze Analyse: Was ist ein Dekorateur? Wie verwende ich Dekorateure in Vue?Wenn Ihr Projekt mit vue-cli erstellt wurde und die Version von vue-cli größer als 2.5 ist, können Sie es ohne Konfiguration verwenden. Wenn Ihr Projekt auch Eslit enthält, müssen Sie die Unterstützung für die dekoratorbezogene Syntaxerkennung in Eslit aktivieren. [Verwandte Empfehlungen: vue.js Video-Tutorial

]

rrreee

Nach dem Hinzufügen dieses Codes eslit Decorator Syntax wird unterstützt. Eine kurze Analyse: Was ist ein Dekorateur? Wie verwende ich Dekorateure in Vue?

Normalerweise verwenden wir in Projekten häufig sekundäre Popup-Boxen für Löschvorgänge:

rrreeeDer obige Code in der Bestätigungsmethode führt eine MessageBox-Komponente in element-ui aus, wenn der Benutzer abbricht Die Komponente Message fordert den Benutzer auf, den Vorgang abzubrechen.

Wir dekorieren die test()-Methode mit einem Dekorator

rrreee

Zu diesem Zeitpunkt klickt der Benutzer auf einen Shop, um ihn zu löschen. Der Dekorateur wird funktionieren. Das Popup sieht wie folgt aus:

Eine kurze Analyse: Was ist ein Dekorateur? Wie verwende ich Dekorateure in Vue?

Wenn ich auf „Abbrechen“ klicke:

Tipps:

Der Benutzer hat den Vorgang abgebrochen. Die geänderte Testmethode wird nicht ausgeführt.

Wenn wir auf OK klicken:

🎜Die Schnittstelle wird aufgerufen und die Meldung erscheint.🎜🎜Zusammenfassung🎜🎜Der Dekorator wird verwendet, um einen Codeabschnitt neu zu packen. Fügen Sie dem Code einige Verhaltensoperationen und Attribute hinzu. Durch den Einsatz von Dekoratoren kann die Codeduplizierung erheblich reduziert werden. Verbessern Sie die Lesbarkeit des Codes. 🎜🎜Abschließend🎜🎜Wenn der Artikel Mängel aufweist, kritisieren Sie ihn bitte und weisen Sie darauf hin. 🎜🎜Weitere Kenntnisse zum Thema Programmierung finden Sie unter: 🎜Einführung in die Programmierung🎜! ! 🎜

Das obige ist der detaillierte Inhalt vonEine kurze Analyse: Was ist ein Dekorateur? Wie verwende ich Dekorateure in Vue?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So fügen Sie Funktionen zu Schaltflächen für Vue hinzu So fügen Sie Funktionen zu Schaltflächen für Vue hinzu Apr 08, 2025 am 08:51 AM

Sie können der VUE -Taste eine Funktion hinzufügen, indem Sie die Taste in der HTML -Vorlage an eine Methode binden. Definieren Sie die Methode und schreiben Sie die Funktionslogik in der VUE -Instanz.

So verwenden Sie Bootstrap in Vue So verwenden Sie Bootstrap in Vue Apr 07, 2025 pm 11:33 PM

Die Verwendung von Bootstrap in Vue.js ist in fünf Schritte unterteilt: Startstrap installieren. Bootstrap in main.js. Verwenden Sie die Bootstrap -Komponente direkt in der Vorlage. Optional: benutzerdefinierter Stil. Optional: Verwenden Sie Plug-Ins.

So verweisen Sie auf die JS -Datei mit Vue.js So verweisen Sie auf die JS -Datei mit Vue.js Apr 07, 2025 pm 11:27 PM

Es gibt drei Möglichkeiten, sich auf JS -Dateien in Vue.js zu beziehen: Geben Sie den Pfad direkt mit dem & lt; Skript & gt an. Etikett;; Dynamischer Import mit dem montierten () Lebenszyklushaken; und importieren über die Vuex State Management Library.

So verwenden Sie Watch in Vue So verwenden Sie Watch in Vue Apr 07, 2025 pm 11:36 PM

Mit der Watch -Option in Vue.js können Entwickler auf Änderungen in bestimmten Daten anhören. Wenn sich die Daten ändert, löst sich eine Rückruffunktion aus, um Aktualisierungsansichten oder andere Aufgaben auszuführen. Zu den Konfigurationsoptionen gehören unmittelbar, die festlegen, ob ein Rückruf sofort ausgeführt werden soll, und Deep, das feststellt, ob Änderungen an Objekten oder Arrays rekursiv anhören sollen.

So kehren Sie von Vue zur vorherigen Seite zurück So kehren Sie von Vue zur vorherigen Seite zurück Apr 07, 2025 pm 11:30 PM

VUE.JS hat vier Methoden, um zur vorherigen Seite zurückzukehren: $ router.go (-1) $ router.back () verwendet & lt; Router-Link to = & quot;/& quot; Komponentenfenster.history.back () und die Methodenauswahl hängt von der Szene ab.

Was bedeutet VUE Multi-Page-Entwicklung? Was bedeutet VUE Multi-Page-Entwicklung? Apr 07, 2025 pm 11:57 PM

VUE Multi-Page-Entwicklung ist eine Möglichkeit, Anwendungen mithilfe des Vue.js-Frameworks zu erstellen, in dem die Anwendung in separate Seiten unterteilt ist: Code-Wartung: Die Aufteilung der Anwendung in mehrere Seiten kann das Verwalten und Wartungsbereich erleichtern. Modularität: Jede Seite kann als separates Modul für eine einfache Wiederverwendung und den Austausch verwendet werden. Einfaches Routing: Die Navigation zwischen Seiten kann durch einfache Routing -Konfiguration verwaltet werden. SEO -Optimierung: Jede Seite hat eine eigene URL, die SEO hilft.

So fragen Sie die Version von Vue So fragen Sie die Version von Vue Apr 07, 2025 pm 11:24 PM

Sie können die Vue -Version mit Vue Devtools abfragen, um die Registerkarte VUE in der Konsole des Browsers anzuzeigen. Verwenden Sie NPM, um den Befehl "npm list -g vue" auszuführen. Suchen Sie das Vue -Element im Objekt "Abhängigkeiten" der Datei package.json. Führen Sie für Vue -CLI -Projekte den Befehl "Vue --version" aus. Überprüfen Sie die Versionsinformationen im & lt; Skript & gt; Tag in der HTML -Datei, die sich auf die VUE -Datei bezieht.

So verwenden Sie Funktionsabfangweserven So verwenden Sie Funktionsabfangweserven Apr 08, 2025 am 06:51 AM

Funktionsabfangen in VUE ist eine Technik, mit der die Häufigkeit, mit der eine Funktion eingerufen wird, innerhalb eines bestimmten Zeitraums aufgerufen wird und Leistungsprobleme verhindern. Die Implementierungsmethode lautet: Importieren Sie die Lodash -Bibliothek: importieren {dunounce} aus 'lodash'; Verwenden Sie die Dabounce -Funktion, um eine Intercept -Funktion zu erstellen: const dabouncedFunction = dunounce (() = & gt; { / logical /}, 500); Rufen Sie die Abfangfunktion auf und die Steuerfunktion wird höchstens einmal in 500 Millisekunden aufgerufen.

See all articles