찾다
웹 프론트엔드JS 튜토리얼Vue.js 지시문의 예 모음

Vue.js 지시문의 예 모음

Jul 17, 2017 pm 02:21 PM
javascriptvue.js설명하다

Basics

Vue.js를 사용하면 사용자 정의 지침을 등록할 수 있으며 이를 통해 Vue에게 몇 가지 새로운 기술, 즉 데이터 변경 사항을 DOM 동작에 매핑하는 방법을 가르칠 수 있습니다. Vue.directive(id, 정의) 메소드를 사용하면 지시문 ID와 정의 객체를 전달하여 전역 사용자 지정 지시문을 등록할 수 있습니다. 개체를 정의하려면 몇 가지 후크 기능(모두 선택 사항)을 제공해야 합니다.

bind: 명령이 처음으로 요소를 바인딩할 때 한 번만 호출됩니다.

update: 바인드 직후 처음 호출될 때 얻은 매개변수는 향후 바인딩의 초기 값이며 바인드된 값이 변경될 때마다 호출되며 새 값과 이전 값의 두 매개변수가 있습니다. , 획득됩니다.

unbind: 명령이 요소 바인딩을 해제할 때 한 번만 호출됩니다.

Vue.js는 사용자 인터페이스 구축을 위한 진보적인 프레임워크입니다. 그 자체로는 포괄적인 프레임워크가 아니며 뷰 레이어에만 중점을 둡니다. 따라서 배우기가 매우 쉽고 다른 라이브러리나 기존 프로젝트와 통합하기가 매우 쉽습니다. 관련 도구 및 지원 라이브러리와 함께 사용하면 Vue.js는 복잡한 단일 페이지 애플리케이션을 완벽하게 구동할 수도 있습니다. 구문은 AngularJS와 매우 유사합니다. AngularJS를 사용해 본 적이 있다면 더 빨리 시작할 수 있습니다. 그리고 vue는 AngularJS보다 사용하기가 훨씬 간단하고 유연합니다.

 오늘은 이 Vue.js에 대해 자세히 알려드리겠습니다. 다음은 이번에 자세히 설명한 디렉토리입니다. 친구들은 각자의 상황에 따라 선택적으로 읽을 수 있습니다.

1. Vue.js를 페이지에 바인딩하고 기능을 사용하는 방법.

 

2로 이동합니다. Vue 인스턴스화 객체의 수명 주기.

  Jump

3. Vue의 모든 데이터 바인딩 명령어

Jump

그럼 오늘의 소개를 시작하겠습니다!

1. Vue.js를 페이지에 바인딩하고 기능을 사용하는 방법.

먼저 다음 코드를 살펴보세요.

nbsp;html><meta><title></title>    <button>我是app1,点我</button><script></script><script></script><script>//通过Vue.js的构造函数 实例化出一个根实例var app1= new Vue({
            el:"#app1",
            data:{
                message:"我在app1中显示出来了吗?",
                func:function(){
                    alert(this.message);
                }
            }
        });
        console.log(app1.$data.message);  //这个要知道哈,app1就是一个变量,一个对象类型的变量,链式语法直接用即可</script>

효과는 다음과 같습니다.

위 코드는 버튼을 클릭했을 때 나타나는 팝업 창입니다.

 

<span style="color: #000000"> var app1= new Vue({
    el:"#app1",
    data:{
       message:"我在app1中显示出来了吗?",
       func:function(){
            alert(this.message);
          }
       }
 });<br>console.log(app1.$data.message); <br></span>

 루트 인스턴스 app1는 Vue.js의 생성자를 통해 인스턴스화됩니다. 직설적으로 말하면 이는 객체 지향 객체의 인스턴스화이며 직접적으로 새로운 객체입니다.

 el: "#app1", 이는 인스턴스화된 객체가 마운트되는 요소 노드이며, app1 객체 범위가 있는 태그입니다. ID, 클래스, 태그 이름이 될 수 있습니다. 하지만 ID의 고유성 때문에 주로 ID를 사용합니다.

 data:{}는 이 객체를 정의하는 변수와 메서드입니다. app1과 관련된 모든 변수와 메서드는 data에서 선언되어야 합니다.

 Note: ​​​​(1) 범위. js5에는 함수 범위만 있으므로 데이터에 있는 함수가 변수를 호출하려면 이를 통해 호출하거나 객체 이름을 통해 직접 호출해야 합니다.

   (2) 외부 통화. app1.$data.message; js에서 vue 객체의 속성과 메소드를 직접 호출할 때 레이어별로 지적하는 체인 구문이 필요합니다. 여기서는 주로 변수와 구별하기 위해 $data를 사용합니다. of js

(3) HTML 코드로 바인딩. 여기서는 js의 onclick을 통해 직접 바인딩합니다. 물론 vue에는 자체 이벤트 바인딩이 있습니다. 지금은 js의 인라인 바인딩을 사용하는 경우 개체 이름을 가져와야 합니다. 이것은 순수한 OOP 사고입니다. 객체지향은 다들 잘 알고 계시리라 생각합니다. 객체지향이 무엇인지 모르신다면 서둘러 Baidu에서 배워보세요.

위 내용은 Vue를 사용하는 가장 기본적인 방법입니다.

2. Vue 인스턴스화 객체의 수명 주기.

다음으로 인스턴스화된 객체의 생명주기는 어떤지, 어떤 단계를 거쳐야 하는지 이야기해보겠습니다. 다음 코드를 살펴보세요:

nbsp;html><meta><title></title><div>我的声明周期,大家看吧!</div><script></script><script></script><script>//以下代码时显示vm整个生命周期的流程var vm = new Vue({
            el: "#container",
            data: {
                test : &#39;hello world&#39;},
            beforeCreate: function(){
                console.log(this);
                showData(&#39;创建vue实例前&#39;,this);
            },
            created: function(){
                showData(&#39;创建vue实例后&#39;,this);
            },
            beforeMount:function(){
                showData(&#39;挂载到dom前&#39;,this);
            },
            mounted: function(){
                showData(&#39;挂载到dom后&#39;,this);
            },
            beforeUpdate:function(){
                showData(&#39;数据变化更新前&#39;,this);
            },
            updated:function(){
                showData(&#39;数据变化更新后&#39;,this);
            },
            beforeDestroy:function(){
                vm.test ="3333";
                showData(&#39;vue实例销毁前&#39;,this);
            },
            destroyed:function(){
                showData(&#39;vue实例销毁后&#39;,this);
            }
        
        });function realDom(){
            console.log(&#39;真实dom结构:&#39; + document.getElementById(&#39;container&#39;).innerHTML);
        }function showData(process,obj){
            console.log(process);
            console.log(&#39;data 数据:&#39; + obj.test)
            console.log(&#39;挂载的对象:&#39;)
            console.log(obj.$el)
            realDom();
            console.log(&#39;------------------&#39;)
            console.log(&#39;------------------&#39;)
        }        </script>

  那接下来看看效果图:

  

  通过控制台的打印效果可以看出来,实例化 vue 对象大致分为 创建vue实例、挂载到dom、数据变化更新、vue实例销毁 4个阶段,,注意每个阶段都有对应的钩子,我们可以通过对这些钩子进行操作,达成一些功能。虽然初学者用不太上,但是提前了解一下还是好的,到时候碰到实际功能要能想得到生命周期的钩子。

  

3. Vue 的 所有 数据绑定指令

  那现在我们就总结一下 vue 的最大亮点,各种灵活的数据绑定方法。这里主要列举实例详解  {{}} 、 v-once 、 v-html 、 v-bind 和 v-model 。

  (1)首先是   {{}} 、 v-once 、 v-html 的用法,请看下面的代码:

nbsp;html><meta><title>数据绑定篇</title><!--数据绑定篇--><div>
<!--1. {{}}    v-once    v-html--><!--Mustache 标签,也就是双大括号,刷新页面时会显示出双大括号--><button>点我,改变变量message的值</button><br><br><!--即时绑定,div的内容随变量变化而变化的,绑定内容作纯文本处理--><!--双大括号里边也可以写表达式,和AngularJs一样的--><div>{{message}}</div>
<br><!--只绑定一次,整个div的所有绑定数据,都只会加载一次,再更新就不会变了--><div>{{message}}</div>
<br><!--双大括号只能当纯文本显示,v-html 可以直接绑定HTML标签的--><div></div>
<br>
</div>    <script></script><script></script><script>//通过Vue.js的构造函数 实例化出一个根实例var app1= new Vue({
            el:"#app1",            //我们实例化的 app1 的挂载的 元素节点,一般用 id,class,或者tagname也可以,但是多了会冲突            data:{
                message:"我是变量message的内容!",
                h1:"<h1 style=&#39;color: fuchsia;&#39;>我是h1标签",  //注意单引号//message改变函数                func:function(){if (this.message == "我是变量message的内容!") {this.message = "message的内容改变了!";
                    }else{this.message = "我是变量message的内容!";
                    }
                }        </script>

  然后看一下效果:

  

  还是分析一下这个小demo。

   div>{{message}}div>  Mustache 标签,也就是双大括号,他和 AnjularJs 的双大括号完全相同,就是直接将数据动态绑定到标签中,当变量发生变化的时候,标签内容也是改变,上大括号里面也是可以写表达式的。上述代码是做了一个 在button中点击改变变量message的值,然后通过数据绑定使div的text即时变化。

  div v-once>{{message}}div> 他也是数据绑定,但是只绑定一次。要注意 v-once是加载div上的,所以整个div的所有绑定数据,都只会加载一次,再更新就不会变了,所以点击 button时,第二个div的数据并没有发生改变。

  div v-html="h1">div> 是绑定HTML标签,注意 他可以直接绑定 HTML模板,但是这一堆HTML标签不能是多层嵌套的。什么意思呢,就是你之间绑定一段标签可以,绑定一个模板也可以,但是如果绑定一个模板,那这个模板内部不能再嵌套模板了。否则无法渲染的。上述代码就是直接导入了一个加了行内样式的h1标签,功能十分强大,比直接操作dom节点强太多了,效率是几何倍的增长。

  (2) 其次是 v-bind

nbsp;html><meta><title>数据绑定篇</title><style>.aaa{margin: 10px;width: 100px;height: 100px;background-color: red;}.bbb{margin: 10px;width: 50px;height: 50px;background-color: blue;}</style><!--数据绑定篇--><div>
<!--2.    v-bind-->        <!--v-bind 他是专门用来绑定属性的 ,主要用来操作元素的 class 列表和它的内联样式--><!--这个和用 js 直接操作dom节点功能一样,不过简单特别多--><div></div>
<!--还可以直接绑定更改 class-->                <div></div>-------------------------------------------------------------------------------------<div><img  src="/static/imghwm/default1.png" data-src="mySrc" class="lazy" alt="Vue.js 지시문의 예 모음" ></div>
</div><script></script><script></script><script>//通过Vue.js的构造函数 实例化出一个根实例var app1= new Vue({
            el:"#app1",    
            data:{
                myColor:"blue",
                myWidth:100,
                myHeight:100,
                myClass:"aaa",
                mySrc:"img/2.png",
                func1:function(){if (this.myColor == "blue") {this.myColor = "red";this.myWidth = 50,this.myHeight = 50}else{this.myColor = "blue";this.myWidth = 100,this.myHeight = 100}
                },
                func2:function(){if (this.myClass == "aaa") {this.myClass = "bbb";
                    }else{this.myClass = "aaa";
                    }
                },
                func3:function(){if (this.mySrc == "img/2.png") {this.mySrc = "img/u=1622626696,1630096734&fm=23&gp=0.jpg";
                    }else{this.mySrc = "img/2.png";
                    }
                }
            }
        });        </script>

  然后看一下效果:

  

  那我们解析一下上面的代码。

  v-bind 他是专门用来绑定属性的 ,主要用来操作元素的 class 列表和它的内联样式。这一点和AnjularJs的 ng-bind 是完全不同的,要注意!!!

  div v-bind:style = "{backgroundColor:myColor,width: myWidth+'px',height: myHeight+'px'}" onclick="app1.func1()">div这是在直接绑定行内样式style。然后通过绑定点击函数,为各个比那两赋值,达到点击更改div样式的目的。

  div v-bind:class="myClass" onclick="app1.func2()">div>  这个是直接绑定修改 class类名,在页内样式表中有我定义的 .aaa 和 .bbb 两个类名,通过动态修改class名修改样式,这也比 JQuery 直接操作dom节点快捷不少。

   img style="width: 100%;" v-bind:src="mySrc" onclick="app1.func3()"/> 这是直接绑定属性,动态修改 img 的src 属性。达到点击图像显示不同的图像的效果。

这里要特别强调一下,v-bind 直接绑定的是属性,而不是样式 ,对于 img ,他的src是属性,但是对于 div ,width 啥的是样式,不是属性,所以 v-bind:width="100+'px'" 不好使.

  至于 v-bind 属性绑定,也就常用用法也就这么多了。

  (3)   v-model

  用 v-model 指令在表单控件元素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素。它负责监听用户的输入事件以更新数据,并特别处理一些极端的例子。v-model 并不关心表单控件初始化所生成的值。因为它会选择 Vue 实例数据来作为具体的值。在默认情况下, v-model 在 input 事件中同步输入框的值与数据,但你可以添加一个修饰符 lazy ,从而转变为在 change 事件中同步

  下面我们看一段代码:

nbsp;html><meta><title>数据绑定篇</title><style>.aaa{margin: 10px;width: 100px;height: 100px;background-color: red;}.bbb{margin: 10px;width: 50px;height: 50px;background-color: blue;}</style><!--数据绑定篇--><div>
<!--3. v-model-->    <input><div>{{ myText }}</div>
<br><br>-------------------------------------------------------------------------------------<!--绑定单选按钮--><input><label>男</label><br><input><label>女</label><br><span>您选择了: {{ picked }}</span><br><br>-------------------------------------------------------------------------------------<!--绑定复选按钮--><div>
<input><label>好帅!</label><input><label>你是我的男神!</label><input><label>我爱你,飞哥!</label>
</div>
<br><span>您对飞哥的评价: {{ names }}</span><br><br>--------------------------------------------------------------------------<!--绑定单选列表--><br><select>  <option>亲飞哥</option>  <option>向飞哥表白</option>  <option>请飞哥吃饭</option></select><br><span>真心话大冒险: {{ selected1 }}</span><br><br>------------------------------------------------------------------------------            <div><select>  <option>亲亲</option>  <option>抱抱</option>  <option>举高高</option></select></div>
<br><span>你想和飞哥偷偷干些啥: {{ selected22 }}</span><br>
</div>
        <script></script><script></script><script>//通过Vue.js的构造函数 实例化出一个根实例var app1= new Vue({
            el:"#app1",
            data:{
                myText:"",
                picked:"",
                selected1:"",//这是复选列表的变量,函数                selected2:[],
                selected22:"",
                funcselected22:function(){this.selected22 = this.selected2.join(" ");
                },//复选框的函数,及其相关变量                checkedNames:[],
                names:"",
                funcCheckedNames:function(){this.names = this.checkedNames.join(" ");
                }</script>

  然后看一下效果:

  

  然后解析一下这段代码。这里就不一一详细解释代码了,挑几个典型的详解,其他的便很简单了。

  我们就以 多选按钮为例:

  

<div>  <input>  <label>好帅!</label>  <input>  <label>你是我的男神!</label>  <input>  <label>我爱你,飞哥!</label>
 </div>
//这是复选列表的变量,函数
   selected2:[],
   selected22:"",
   funcselected22:function(){
       this.selected22 = this.selected2.join(" ");
   },

  这里要强调一下,v-model 动态绑定这种多选框之类的,会以数组的形式存取,所以,我们用 selected2:[], 变量接收 选择框 的数据,但是我们又不能直接用双大括号显示数据,朋友们可以试验一下,双大括号是纯文本显示,他会把整个数组的中括号,引号,逗号都显示出来,太丑了。所以这里,我用了JQuery的数组分割为字符串的函数 join(" "),把选中的数据分割成字符串,再用一个字符串类型的变量接收数据,这样打印出来就好多了。注意,这里 join(" ") 我用的分隔符是 空白字符,它占一个汉字的空间,但是不会显示出来。

  好啦,以上这些就是Vue.js 的基础内容,至于后续的各种渲染,以及组件 API等等,等我们下周再分享。如果感觉我的博客还不错请记得关注我,之前的博客也有精品吆!

 

위 내용은 Vue.js 지시문의 예 모음의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
Python vs. JavaScript : 커뮤니티, 라이브러리 및 리소스Python vs. JavaScript : 커뮤니티, 라이브러리 및 리소스Apr 15, 2025 am 12:16 AM

Python과 JavaScript는 커뮤니티, 라이브러리 및 리소스 측면에서 고유 한 장점과 단점이 있습니다. 1) Python 커뮤니티는 친절하고 초보자에게 적합하지만 프론트 엔드 개발 리소스는 JavaScript만큼 풍부하지 않습니다. 2) Python은 데이터 과학 및 기계 학습 라이브러리에서 강력하며 JavaScript는 프론트 엔드 개발 라이브러리 및 프레임 워크에서 더 좋습니다. 3) 둘 다 풍부한 학습 리소스를 가지고 있지만 Python은 공식 문서로 시작하는 데 적합하지만 JavaScript는 MDNWebDocs에서 더 좋습니다. 선택은 프로젝트 요구와 개인적인 이익을 기반으로해야합니다.

C/C에서 JavaScript까지 : 모든 것이 어떻게 작동하는지C/C에서 JavaScript까지 : 모든 것이 어떻게 작동하는지Apr 14, 2025 am 12:05 AM

C/C에서 JavaScript로 전환하려면 동적 타이핑, 쓰레기 수집 및 비동기 프로그래밍으로 적응해야합니다. 1) C/C는 수동 메모리 관리가 필요한 정적으로 입력 한 언어이며 JavaScript는 동적으로 입력하고 쓰레기 수집이 자동으로 처리됩니다. 2) C/C를 기계 코드로 컴파일 해야하는 반면 JavaScript는 해석 된 언어입니다. 3) JavaScript는 폐쇄, 프로토 타입 체인 및 약속과 같은 개념을 소개하여 유연성과 비동기 프로그래밍 기능을 향상시킵니다.

JavaScript 엔진 : 구현 비교JavaScript 엔진 : 구현 비교Apr 13, 2025 am 12:05 AM

각각의 엔진의 구현 원리 및 최적화 전략이 다르기 때문에 JavaScript 엔진은 JavaScript 코드를 구문 분석하고 실행할 때 다른 영향을 미칩니다. 1. 어휘 분석 : 소스 코드를 어휘 단위로 변환합니다. 2. 문법 분석 : 추상 구문 트리를 생성합니다. 3. 최적화 및 컴파일 : JIT 컴파일러를 통해 기계 코드를 생성합니다. 4. 실행 : 기계 코드를 실행하십시오. V8 엔진은 즉각적인 컴파일 및 숨겨진 클래스를 통해 최적화하여 Spidermonkey는 유형 추론 시스템을 사용하여 동일한 코드에서 성능이 다른 성능을 제공합니다.

브라우저 너머 : 실제 세계의 JavaScript브라우저 너머 : 실제 세계의 JavaScriptApr 12, 2025 am 12:06 AM

실제 세계에서 JavaScript의 응용 프로그램에는 서버 측 프로그래밍, 모바일 애플리케이션 개발 및 사물 인터넷 제어가 포함됩니다. 1. 서버 측 프로그래밍은 Node.js를 통해 실현되며 동시 요청 처리에 적합합니다. 2. 모바일 애플리케이션 개발은 재교육을 통해 수행되며 크로스 플랫폼 배포를 지원합니다. 3. Johnny-Five 라이브러리를 통한 IoT 장치 제어에 사용되며 하드웨어 상호 작용에 적합합니다.

Next.js (백엔드 통합)로 멀티 테넌트 SAAS 애플리케이션 구축Next.js (백엔드 통합)로 멀티 테넌트 SAAS 애플리케이션 구축Apr 11, 2025 am 08:23 AM

일상적인 기술 도구를 사용하여 기능적 다중 테넌트 SaaS 응용 프로그램 (Edtech 앱)을 구축했으며 동일한 작업을 수행 할 수 있습니다. 먼저, 다중 테넌트 SaaS 응용 프로그램은 무엇입니까? 멀티 테넌트 SAAS 응용 프로그램은 노래에서 여러 고객에게 서비스를 제공 할 수 있습니다.

Next.js (Frontend Integration)를 사용하여 멀티 테넌트 SaaS 응용 프로그램을 구축하는 방법Next.js (Frontend Integration)를 사용하여 멀티 테넌트 SaaS 응용 프로그램을 구축하는 방법Apr 11, 2025 am 08:22 AM

이 기사에서는 Contrim에 의해 확보 된 백엔드와의 프론트 엔드 통합을 보여 주며 Next.js를 사용하여 기능적인 Edtech SaaS 응용 프로그램을 구축합니다. Frontend는 UI 가시성을 제어하기 위해 사용자 권한을 가져오고 API가 역할 기반을 준수하도록합니다.

JavaScript : 웹 언어의 다양성 탐색JavaScript : 웹 언어의 다양성 탐색Apr 11, 2025 am 12:01 AM

JavaScript는 현대 웹 개발의 핵심 언어이며 다양성과 유연성에 널리 사용됩니다. 1) 프론트 엔드 개발 : DOM 운영 및 최신 프레임 워크 (예 : React, Vue.js, Angular)를 통해 동적 웹 페이지 및 단일 페이지 응용 프로그램을 구축합니다. 2) 서버 측 개발 : Node.js는 비 차단 I/O 모델을 사용하여 높은 동시성 및 실시간 응용 프로그램을 처리합니다. 3) 모바일 및 데스크탑 애플리케이션 개발 : 크로스 플랫폼 개발은 개발 효율을 향상시키기 위해 반응 및 전자를 통해 실현됩니다.

JavaScript의 진화 : 현재 동향과 미래 전망JavaScript의 진화 : 현재 동향과 미래 전망Apr 10, 2025 am 09:33 AM

JavaScript의 최신 트렌드에는 Typescript의 Rise, 현대 프레임 워크 및 라이브러리의 인기 및 WebAssembly의 적용이 포함됩니다. 향후 전망은보다 강력한 유형 시스템, 서버 측 JavaScript 개발, 인공 지능 및 기계 학습의 확장, IoT 및 Edge 컴퓨팅의 잠재력을 포함합니다.

See all articles

핫 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 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는