vue 입문 vue 와 react 와 Angular 의 관계 와 차이


vue. js 는 angular. js 와 react 의 장점 을 겸비 하고 그들의 단점 을 제거 했다.
홈 페이지:http://cn.vuejs.org/
매 뉴 얼:http://cn.vuejs.org/v2/api/
뭐 공부 해요?
Vue 는 "MVVM 프레임 워 크 (라 이브 러 리)"로 angular 와 유사 하 며, angular 보다 작고 손 에 넣 기 쉽다.
Vue 는 사용자 인터페이스 점 을 구축 하 는 점진 적 인 프레임 워 크 로 다른 중량급 프레임 워 크 와 달리 vue 는 아래 에서 위로 증 가 된 디자인 을 사용한다.
vue 의 핵심 라 이브 러 리 는 '그림 만 주목 합 니 다', 그리고 '매우 쉽게 배 울 수 있 습 니 다' 로 다른 라 이브 러 리 나 기 존의 프로젝트 와 통합 되 기 쉽 습 니 다. 다른 한편, vue 는 단일 파일 구성 요소 와 vue 생태 시스템 이 지원 하 는 라 이브 러 리 개발 의 복잡 한 단일 페이지 응용 을 구동 할 능력 이 있 습 니 다.
vue 의 목 표 는 가능 한 한 간단 한 API 를 통 해 '응답 하 는 데이터 바 인 딩' 과 '조 합 된 보기 구성 요소' 를 실현 하 는 것 입 니 다.
3. MVC/MVP/MVM 의 차이
복잡 한 소프트웨어 는 반드시 명확 하고 합 리 적 인 구조 가 있어 야 한다. 그렇지 않 으 면 개발 하고 유지 할 수 없다.
MVC, MVP, MVVM 은 인터페이스 디 스 플레이 와 논리 코드 분 리 를 해결 하 는 데 사용 되 는 모델 입 니까?
쉽게 말 하면 대부분의 사람들 이 나타 난 코드 분리 모델 을 개발 하고 유지 하 는 데 편리 하 다 는 것 이다.
과외 확장:http://www.cnblogs.com/lori/p/3501764.html
MVC
보기 (view): 사용자 인터페이스
컨트롤 러 (controller): 비 즈 니스 논리
모델 (Model): 데이터 처리
MVP
MVP 는 전형 적 인 모델 인 MVC 에서 발 전 된 것 으로 그들의 기본 사상 은 서로 통 하 는 부분 이 있다. Controller/Presenter 는 논리 적 인 처 리 를 책임 지고 Model 은 데 이 터 를 제공 하 며 View 는 디 스 플레이 를 책임 진다.새로운 모델 로 서 MVP 와 MVC 는 중대 한 차이 점 을 가진다. MVP 에서 View 는 Model 을 직접 사용 하지 않 고 그들의 통신 은 Presenter (MVC 중의 Controller) 를 통 해 이 루어 진다. 모든 상호작용 은 Presenter 내부 에서 발생 하고 MVC 에서 View 는 Controller 를 통 해 데 이 터 를 직접 연결 하 는 모델 에서 읽 는 것 이 아니 라 Controller 를 통 해 이 루어 진다.
MVVM
MVVM 은 개념 적 으로 페이지 와 데이터 논 리 를 진정 으로 분리 하 는 모델 입 니 다. 개발 방식 에 있어 서 프론트 코드 개발 자 (JS + HTML) 와 백 엔 드 코드 개발 자 를 분리 하 는 모델 (asp, asp. net, phop, jsp) 입 니 다.
양 방향 바 인 딩: view 의 변동 은 view Model 에 자동 으로 반영 되 고 반대로 도 마찬가지 입 니 다.
7. vue 대비 다른 프레임 워 크
1、vue-angular
1) vue 는 디자인 초기 에 angular 의 사상 을 많이 참고 했다.
2) vue 는 angular 보다 더 간단 하 다.
3) vue 는 angular 보다 훨씬 작 아 지고 운행 속도 가 angular 보다 빠르다.
4) vue 와 angular 바 인 딩 은 모두 {{} 을 사용 할 수 있 습 니 다.
5) vue 명령 용 v - xxx, angular 용 ng - xxx
6) vue 에서 데 이 터 를 data 대상 에 넣 고 angular 데 이 터 는 $scope 에 연결 합 니 다.
7) vue 는 구성 요소 화 개념 이 있 고 angular 에는 없다.
2、vue-react
그들 은 모두 있다.
1) react 와 vue 는 모두 가상 DOM 가상 DOM 을 사용한다.
2), React, Vue 는 모두 응답 식 (Reactive) 과 구성 요소 화 (Composable) 의 보기 구성 요 소 를 제공 합 니 다.
3) React 와 vue 는 모두 핵심 라 이브 러 리 에 집중 하고 이에 따라 전체적인 상태 관 리 를 담당 하 는 라 이브 러 리 가 있 습 니 다.
4) 、 React 는 JSX 렌 더 링 페이지 를 사용 하고 Vue 는 간단 한 템 플 릿 을 사용 합 니 다.
5) 、 Vue 가 react 보다 더 빨리 작 동
8. 초기 vuejs
1) vuejs 생산 버 전 다운로드
다운로드 주소:http://cn.vuejs.org/v2/guide/installation.html
2) Vue 대상 을 예화
var vm = new Vue({
 //옵션
})
3) 、 페이지 에서 div\# box
4) 、 설정 수정
var vw = new Vue({

el:"#box",//    

data:{
      //    

msg:"   Vue",

name:"vue"

 

}

})

 
5), 순환 데이터: 배열, 대상, v - for 를 사용 하여 데 이 터 를 순환 적 으로 옮 겨 다 닙 니 다.
list:[1,2,4]

for="item in list">{
{item}} list1:[{
name: "장삼",
age:30
},
{
이름: "이사",
age:30
},{
이름: "왕 오",
age:30
}]
for="item in list1">
{
{item.name}}/{
{item.age}}

 
6) 방법 이벤트
모든 방법 을 methods 옵션 에 설정 합 니 다.
methods:{
     //    ,  data    ,      this  ,    v-on   ,          @click     

getName:function(){

alert(this.name)

},

run:function(){

alert("  run  ");

}

}

getName

run

 
7) 양 방향 데이터 바 인 딩


{
      {name}}

 
8) 、 jquery 를 사용 하여 todolist 구현
a) boottstrap 도입
b) 귀속 이벤트
데이터 추가 append 사용
이벤트 삭제 사용 remove
9) vue 를 사용 하여 todolist 실현
a) boottstrap. css 도입, 편집 인터페이스
b) 예화 vue. js
data:{

info:""//     

list:[]//    ,      v-for,           ,                  (item,key) in list

},

methods:{

addData:function(){
     //    

this.list.push(this.info)

console.log(this.info)

},

deleteData:function(key){

this.list.splice(key,1)

}

}

for="(item,key) in list">

            {
     {item}}

            

        

 
아홉.
1) 텍스트 바 인 딩
v - text 명령 어
  angularjs 의 ng - bind 에 해당 합 니 다.
data 에 추가: test: "해석 할 수 있 습 니까?"
{{test}} 을 사용 하면 모든 코드 가 직접 표 시 됩 니 다. 처리 되 지 않 습 니 다.
사용 하면 모든 코드 가 직접 표 시 됩 니 다. 해석 하지 않 습 니 다.
우 리 는 v - html 을 사용 하여 코드 를 분석 할 수 있다.
2) 귀속 속성
data 에 id 추가: "이것 은 id 입 니 다"
속성 추가
여기에 {{} 을 추가 하지 않도록 주의해 야 합 니 다.  angular 의 ng - src 등 속성 과 같 습 니 다.
약자 형식
url:"https://www.baidu.com/img/bd_logo1.png"

 
3) 사건
복습 todolist
이벤트 대상, $이벤트 전송 방법 에 주의 하 십시오.


requestData:function(event){

console.log(event)

}

 
데이터 가 srcElement 의 dataset 에 있 습 니 다.
4) 표현 식
data:{number:200}

{
      {number+200}}

data:{ok:true}

{
      {ok:" ":" "}}

data:{msg:"       "}

{
      {msg.split("").reverse().join("")}}

 
5) 、 계산 속성 -- 입력 알림 --- autocomplete (폼 속성)
computed:{

c:function(){

return this.a + 6;

},

reverseMsg:function(){

return this.message.split("").reverse().join("");

}

}

c={
      {c}}


msg={ {reverseMsg}}

 
message 가 바 뀌 면 다시 계산 하고 보 기 를 바 꿉 니 다. 메 시 지 를 'message 가 바 뀌 었 습 니 다' 로 바 꾸 는 단 추 를 누 르 십시오.
 
 
케이스
데이터 중
search:"",
searchList:["appale","pear","banner","orange"],
cumputed
 
{ {item}}
 
계산 속성 추가
listSearch:function(){

var arr = [];

var that = this;

this.searchList.forEach(function(val){

if(val.indexOf(that.search)!=-1){

arr.push(val);

}

})

return arr;

}

 
순환 조건 변경
{ {item}}
 
6) 감청 데이터 변화  watch
// vm.$watch(vm)    vm.msg    vue  data     

        /*                  data      */

         

          data:{

                msg:'      '

            }

            

         vm.$watch('msg',function(newValue,oldValue){

 

            console.log(newValue+'-------'+oldValue);

 

 

        })

        

                            

             data:{

               msg:'      '

            },

            watch:{

 

                msg:function(newValue,oldValue){

 

                    console.log(newValue+'-------'+oldValue);

                }

            }

 
7) 계산 속성 과 방법의 대비
사례: 문자열 뒤 집기 - 여러 번 호출
//계산 속성 은 관련 의존 이 바 뀌 었 을 때 만 값 을 다시 가 져 옵 니 다.이것 은 message 가 변경 되 지 않 으 면 reversedMessage 계산 속성 을 여러 번 방문 하면 이전의 계산 결 과 를 즉시 되 돌려 주 고 함 수 를 다시 실행 하지 않 아 도 된다 는 것 을 의미한다.
    //총괄: 계산 속성 이 방법의 효율 보다 높다
    8) 계산 속성 과 watch 대비
    Vue. js 는 Vue 인 스 턴 스 의 데이터 변동 을 관찰 하 는 방법 $watch 를 제공 합 니 다.일부 데이터 가 다른 데이터 에 따라 변화 해 야 할 때 $watch 는 매우 매력 적 입 니 다. 특히 AngularJS 에서 왔 다 면.그러나 일반적으로 더 좋 은 방법 은 명령 식 $watch 반전 대신 속성 을 계산 하 는 것 입 니 다.다음 예 를 생각해 보 자.


        

       {
      {fullName}}

       watch: {

          firstName:function(val){

              this.fullName=val+this.lastName;

          },

          lastName:function(val){

              this.fullName=this.firstName+val;

          }

      }

 
          9) 계산 속성 실현
      
computed: {

        fullName: function () {

            return this.firstName + ' ' + this.lastName

        }

      }

10)class  

.static{

            width: 200px;

            height: 200px;

        }

        .class-a{

            width: 200px;

            height: 200px;

            background: orange;

        }

        .class-b{

            background: blue;

        }

v-bind-class111

classObject

 
//    v - bind: class 대상 에 게 전송 하여 class 를 동적 으로 전환 할 수 있 습 니 다.v - bind: class 명령 은 일반적인 class 특성 과 공존 할 수 있 습 니 다.
var vm = new Vue({

    el: '#demo',    //div   .class

    data: {

        isA: true,

        isB: false,

        classObject: {

            active: true,

            'class-a': true

        }

 

    }

})

 
11) 스타일 문법
//v-bind:style         ——      CSS,      JavaScript  。CSS         (camelCase)       (kebab-case)

Style
data: { activeColor: 'red', fontSize: 30 }

 
    12) 스타일 배열
   
 
Style
data: { styleObjectA: { color: 'red' }, styleObjectB: { fontSize: '30px' } }

 
    13) v - if - dom 조작
   
 v-else

    v-show--    

    

if="ok"> h1

h1

if="Math.random()>0.5"> 0.5
else> 0.5
data: { ok:true }

 
    14. 순환 적 인 사용
    다 층 순환
    사용 가능  사용 가능
    15、   필터
            
Vue.filter('reverseMsg',function(value){

                return value.split('').reverse().join('');

            });

            Vue.filter('toDou',function(value,n1,n2){

               console.log(value+'--'+n1+'--'+n2);

                if(n1>n2){

                    return 123;

                }else{

                    return 456;

                }

            })

data:{

                msg:'       ',

                num:'123'

            }

         {
      {msg}}

        {
      {msg | reverseMsg}}

        {
      {num}}

        {
      {num | toDou(12,14)}}

 
    16), ajax 요청
    axios:http://blog.csdn.net/liaoxiaojuan233/article/details/54176798
    fetch:https://segmentfault.com/a/1190000003810652
    
// 1.    fetch axios     

     

     axios.get(url)

           .then(function (response) {

               console.log(response.data.result);

 

               _that.list=response.data.result;

           })

           .catch(function (error) {

               console.log(error);

           });

        //2. https://github.com/pagekit/vue-resource

         

         //            callback      

          this.$http.jsonp(api,{

             jsonp:'cb'//       callback, cb ,     ,  https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=php

         }).then(function(data){

             console.log(data.body);

             that.list=data.body.s;

          },function(){

          })

 
다음으로 전송:https://www.cnblogs.com/wxtlinlin/p/6541895.html

좋은 웹페이지 즐겨찾기