


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!
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. Decorator
是ES7
的一个新语法。Decorator
通过对类、对象、方法、属性进行修饰。对其添加一些其他的行为。通俗来说:就是对一段代码进行二次包装。
装饰器的使用
使用方法很简单 我们定义一个函数
const decorator = (target, name, descriptor) => { var oldValue = descriptor.value; descriptor.value = function(){ alert('哈哈') return oldValue.apply(this,agruments) } return descriptor } // 然后直接@decorator到函数、类或者对象上即可。
装饰器的目的旨在对代码进行复用。下面我们先来一个小例子看看
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)
不使用装饰器
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);
这样一对比你会发现使用装饰器后代码的可读性变强了。装饰器并不关心你内部代码的实现。
vue 中使用装饰器
如果你的项目是用vue-cli搭建的 并且vue-cli的版本大于2.5 那么你无需进行任何配置即可使用。如果你的项目还包含eslit 那么你需要在eslit中开启支持装饰器相关的语法检测。【相关推荐:vue.js视频教程】
//在 eslintignore中添加或者修改如下代码: parserOptions: { ecmaFeatures:{ // 支持装饰器 legacyDecorators: true } }
加上这段代码之后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 } }
如上代码 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('操作成功!') } }
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 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]
rrreeeNach dem Hinzufügen dieses Codes eslit Decorator Syntax wird unterstützt. 
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 Dekoratorrrreee
Zu diesem Zeitpunkt klickt der Benutzer auf einen Shop, um ihn zu löschen. Der Dekorateur wird funktionieren. Das Popup sieht wie folgt aus: 
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🎜! ! 🎜

MessageBox
-Komponente in element-ui aus, wenn der Benutzer abbricht Die Komponente Message
fordert den Benutzer auf, den Vorgang abzubrechen. 
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!

本篇文章带大家聊聊vue指令中的修饰符,对比一下vue中的指令修饰符和dom事件中的event对象,介绍一下常用的事件修饰符,希望对大家有所帮助!

如何覆盖组件库样式?下面本篇文章给大家介绍一下React和Vue项目中优雅地覆盖组件库样式的方法,希望对大家有所帮助!

这是我们手把手教你实现 Python 定时器的第三篇文章。前两篇:分别是手把手教你实现一个 Python 计时器,和用上下文管理器扩展 Python 计时器,使得我们的 Timer 类方便用、美观实用。但我们并不满足于此,仍然有一个用例可以进一步简化它。假设我们需要跟踪代码库中一个给定函数所花费的时间。使用上下文管理器,基本上有两种不同的选择:1. 每次调用函数时使用 Timer:with Timer("some_name"): do_something()当我们在一

Python中的装饰器和上下文管理器是如何工作的?在Python中,装饰器和上下文管理器是两个非常有用的概念和功能。它们都是为了简化代码、增加代码可读性以及方便代码的重用。一、装饰器装饰器是Python中一种用于修改函数的行为的特殊函数。它允许我们在不修改原始函数的情况下对其进行包装或拓展。装饰器在许多Python的框架和库中被广泛使用,比如Flask、Dj

react与vue的虚拟dom没有区别;react和vue的虚拟dom都是用js对象来模拟真实DOM,用虚拟DOM的diff来最小化更新真实DOM,可以减小不必要的性能损耗,按颗粒度分为不同的类型比较同层级dom节点,进行增、删、移的操作。


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

PHPStorm Mac-Version
Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

mPDF
mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),