목차
사용하기 데코레이터란 무엇인가요?
装饰器的使用
js中使用装饰器
不使用装饰器
vue 中使用装饰器
js에서 데코레이터를 사용하세요
rrreee이렇게 비교해보면, 데코레이터를 사용한 후에 코드가 더 읽기 쉬워진다는 것을 알게 될 것입니다. 데코레이터는 내부 코드 구현에 관심이 없습니다. " >데코레이터를 사용하지 마세요데코레이터가 무엇인지에 대한 간략한 분석은 무엇입니까? Vue에서 데코레이터를 사용하는 방법은 무엇입니까?rrreee이렇게 비교해보면, 데코레이터를 사용한 후에 코드가 더 읽기 쉬워진다는 것을 알게 될 것입니다. 데코레이터는 내부 코드 구현에 관심이 없습니다.
vue에서 데코레이터 사용
웹 프론트엔드 View.js 데코레이터가 무엇인지에 대한 간략한 분석은 무엇입니까? Vue에서 데코레이터를 사용하는 방법은 무엇입니까?

데코레이터가 무엇인지에 대한 간략한 분석은 무엇입니까? Vue에서 데코레이터를 사용하는 방법은 무엇입니까?

Jan 26, 2022 pm 06:06 PM
vue 데코레이터

데코레이터란 무엇인가요? 이번 글에서는 데코레이터에 대해 소개하고, js와 vue에서 데코레이터를 사용하는 방법을 간략하게 소개하겠습니다. 도움이 되셨으면 좋겠습니다!

데코레이터가 무엇인지에 대한 간략한 분석은 무엇입니까? Vue에서 데코레이터를 사용하는 방법은 무엇입니까?

개발 중 2차 팝업 확인이 필요했던 적이 있으실 거라 생각합니다. UI 프레임워크의 보조 팝업 구성 요소를 사용하는지 아니면 자체적으로 캡슐화된 팝업 구성 요소를 사용하는지 여부. 이들 모두 여러 번 사용하면 대량의 코드가 반복되는 문제를 피할 수 없습니다. 이러한 코드가 누적되면 프로젝트의 가독성이 저하됩니다. 프로젝트의 코드 품질도 매우 나빴습니다. 그렇다면 팝업코드 중복 문제는 어떻게 해결할까요? Decorators

사용하기 데코레이터란 무엇인가요?

DecoratorES7의 새로운 구문입니다. 데코레이터는 클래스, 개체, 메서드 및 속성을 장식합니다. 여기에 몇 가지 추가 동작을 추가합니다. 일반인의 관점에서 보면 이는 코드 조각의 2차 패키징입니다. DecoratorES7的一个新语法。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

데코레이터의 사용

사용 방법은 매우 간단합니다. 함수를 정의합니다

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('操作成功!')
  }
}
로그인 후 복사

데코레이터의 목적은 코드를 재사용하는 것입니다. 먼저 작은 예를 들어보겠습니다

js에서 데코레이터를 사용하세요

rrreee

데코레이터를 사용하지 마세요데코레이터가 무엇인지에 대한 간략한 분석은 무엇입니까? Vue에서 데코레이터를 사용하는 방법은 무엇입니까?rrreee이렇게 비교해보면, 데코레이터를 사용한 후에 코드가 더 읽기 쉬워진다는 것을 알게 될 것입니다. 데코레이터는 내부 코드 구현에 관심이 없습니다.

vue에서 데코레이터 사용

프로젝트가 vue-cli로 빌드되고 vue-cli 버전이 2.5 이상인 경우 아무런 구성 없이 사용할 수 있습니다. 프로젝트에 eslit도 포함되어 있는 경우 eslit에서 데코레이터 관련 구문 감지 지원을 활성화해야 합니다. [관련 권장 사항: vue.js 비디오 튜토리얼데코레이터가 무엇인지에 대한 간략한 분석은 무엇입니까? Vue에서 데코레이터를 사용하는 방법은 무엇입니까?]

rrreee

이 코드를 추가한 후 eslit Decorator 구문이 지원됩니다. 보통 프로젝트에서는 삭제 작업을 위해 보조 팝업 상자를 사용하는 경우가 많습니다.

rrreee

위의 확인 메소드 코드는 사용자가 를 취소할 때 element-ui의 <code>MessageBox 구성 요소를 실행합니다. 메시지 구성 요소는 사용자에게 작업을 취소하라는 메시지를 표시합니다.

test() 메소드를 데코레이터로 장식합니다데코레이터가 무엇인지에 대한 간략한 분석은 무엇입니까? Vue에서 데코레이터를 사용하는 방법은 무엇입니까?rrreee

이때 사용자는 스토어를 삭제하기 위해 클릭합니다. 데코레이터가 작동합니다. 팝업은 아래와 같습니다.

취소를 클릭하면:

팁:

사용자가 작업을 취소하면 수정된 테스트 방법이 실행되지 않습니다.

확인을 클릭하면: 🎜🎜🎜🎜🎜인터페이스가 호출되고 메시지가 나타납니다.🎜🎜요약🎜🎜데코레이터는 코드 조각을 다시 패키지하는 데 사용됩니다. 일부 동작 작업과 속성을 코드에 추가합니다. 데코레이터를 사용하면 코드 중복을 크게 줄일 수 있습니다. 코드 가독성을 향상시킵니다. 🎜🎜마지막으로🎜🎜글에 부족한 점이 있다면 비판과 지적 부탁드립니다. 🎜🎜더 많은 프로그래밍 관련 지식을 보려면 🎜프로그래밍 소개🎜를 방문하세요! ! 🎜

위 내용은 데코레이터가 무엇인지에 대한 간략한 분석은 무엇입니까? Vue에서 데코레이터를 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Vue에서 부트 스트랩을 사용하는 방법 Vue에서 부트 스트랩을 사용하는 방법 Apr 07, 2025 pm 11:33 PM

vue.js에서 bootstrap 사용은 5 단계로 나뉩니다 : Bootstrap 설치. main.js.의 부트 스트랩 가져 오기 부트 스트랩 구성 요소를 템플릿에서 직접 사용하십시오. 선택 사항 : 사용자 정의 스타일. 선택 사항 : 플러그인을 사용하십시오.

Vue 용 버튼에 기능을 추가하는 방법 Vue 용 버튼에 기능을 추가하는 방법 Apr 08, 2025 am 08:51 AM

HTML 템플릿의 버튼을 메소드에 바인딩하여 VUE 버튼에 함수를 추가 할 수 있습니다. 메소드를 정의하고 VUE 인스턴스에서 기능 로직을 작성하십시오.

Vue에서 시계를 사용하는 방법 Vue에서 시계를 사용하는 방법 Apr 07, 2025 pm 11:36 PM

vue.js의 시계 옵션을 사용하면 개발자가 특정 데이터의 변경 사항을들을 수 있습니다. 데이터가 변경되면 콜백 기능을 트리거하여 업데이트보기 또는 기타 작업을 수행합니다. 구성 옵션에는 즉시 콜백을 실행할지 여부와 DEEP를 지정하는 즉시 포함되며, 이는 객체 또는 어레이에 대한 변경 사항을 재귀 적으로 듣는 지 여부를 지정합니다.

vue.js로 JS 파일을 참조하는 방법 vue.js로 JS 파일을 참조하는 방법 Apr 07, 2025 pm 11:27 PM

vue.js에서 JS 파일을 참조하는 세 가지 방법이 있습니다. & lt; script & gt; 꼬리표;; mounted () 라이프 사이클 후크를 사용한 동적 가져 오기; Vuex State Management Library를 통해 수입.

Vue 다중 페이지 개발은 무엇을 의미합니까? Vue 다중 페이지 개발은 무엇을 의미합니까? Apr 07, 2025 pm 11:57 PM

VUE 멀티 페이지 개발은 vue.js 프레임 워크를 사용하여 응용 프로그램을 구축하는 방법입니다. 여기서 응용 프로그램은 별도의 페이지로 나뉩니다. 코드 유지 보수 : 응용 프로그램을 여러 페이지로 분할하면 코드를보다 쉽게 ​​관리하고 유지 관리 할 수 ​​있습니다. 모듈 식 : 각 페이지는 쉬운 재사용 및 교체를 위해 별도의 모듈로 사용할 수 있습니다. 간단한 라우팅 : 페이지 간의 탐색은 간단한 라우팅 구성을 통해 관리 할 수 ​​있습니다. SEO 최적화 : 각 페이지에는 자체 URL이있어 SEO가 도움이됩니다.

Vue가 이전 페이지로 돌아 오는 방법 Vue가 이전 페이지로 돌아 오는 방법 Apr 07, 2025 pm 11:30 PM

vue.js는 이전 페이지로 돌아갈 수있는 네 가지 방법이 있습니다. $ router.go (-1) $ router.back () 사용 & lt; router-link to = & quot;/quot; Component Window.history.back () 및 메소드 선택은 장면에 따라 다릅니다.

Vue Traversal 사용 방법 Vue Traversal 사용 방법 Apr 07, 2025 pm 11:48 PM

vue.js가 트래버스 어레이 및 객체에 대한 세 가지 일반적인 방법이 있습니다. V- 결합 지시문은 V-FOR와 함께 사용하여 각 요소의 속성 값을 동적으로 설정할 수 있습니다. .MAP 메소드는 배열 요소를 새 배열로 변환 할 수 있습니다.

태그를 vue로 점프하는 방법 태그를 vue로 점프하는 방법 Apr 08, 2025 am 09:24 AM

VUE에서 태그의 점프를 구현하는 방법에는 다음이 포함됩니다. HTML 템플릿의 A 태그를 사용하여 HREF 속성을 지정합니다. VUE 라우팅의 라우터 링크 구성 요소를 사용하십시오. javaScript 에서이. $ router.push () 메소드를 사용하십시오. 매개 변수는 쿼리 매개 변수를 통해 전달 될 수 있으며 동적 점프를 위해 라우터 옵션에서 경로가 구성됩니다.

See all articles