前端三大主流框架的對比和Vue的簡單使用(1)

(一)

前端框架的特點:

1.組件化

2.社區強大

3.第三方庫多

4.瀏覽器插件debugging

5.單頁面友好

爲什麼使用框架?

爲了保持UI和狀態同步,原生JS保持同步要寫很多代碼

原生實現的問題:

用js代碼創建UI可讀性差

三大框架對比:

Angular:

雙向數據綁定:如多級菜單;

依賴注入,使組件之間的耦合度降低,提高代碼的可讀性;

typeScript是JS的超級;

angular1.0主要面對的是PC端,angular2.0以後才兼容PC端和移動端;

優點:MVVM模式、雙向數據綁定、依賴注入

缺點:語法複雜,angular5使用TypeScript,沒有向後兼容

React:

如果我們去操作dom的話,性能很低,要重排和重繪;

虛擬dom:用JS去指代dom節點,那麼我們的性能就可以大大增加;

JSX語法:我們可以用JS去寫HTML和CSS的語法;

我們寫習慣了,JSX語法書寫出來的代碼是很漂亮的;

優點:虛擬DOM,輕量,JSX語法

缺點:官方文檔沒有體系化,JSX語法

Vue:

優點:使用HTML模板,中文文檔,體量小

(二)Vue第一個簡單應用:

學習Vue,首先要看它的官網;

打開起步--安裝--兩種方法(script引入和npm包管理工具)--我們用script引入也有兩種方法--我們使用CDN方法;

data:存放變量

1.

<template>
  <div id="HelloWorld">
  <input type="text" v-on:input="changeName">
  <h1>{{xingming}}</h1>
  </div>
</template>

<script>
export default {
  name: 'HelloWorld',
  data(){
   return{
     xingming:"zengcy"
   } 
  },
  methods:{
    changeName:function(event){
       this.xingming=event.target.value;
    }
  }
}
</script>
<style scoped>
</style>

2. 雙大括號,既可以放變量,也可以放函數

<template>
    <div id="two">
     <p>{{xingming+"123"}}</p>
     <p>{{sayName()}}</p>
    </div>
</template>
<script>
export default {
    name:'two',
    data(){
        return{
           xingming:"zengcy"
        }
    },
    methods:{
        sayName:function(){
            return "cy"
        }
    }
}
</script>
<style scoped>
</style>

3.

裏面也可以是字符串的表達式;

也可以寫三目運算符表達式,但是並不可以用if和else這種複雜的表達式;

錯誤案例:因爲vue不會分析字符串裏面的語法;

在雙括號中直接寫鏈接是沒有用的,一定要綁定,不然沒辦法訪問;

我們要藉助指令:v-bind需要綁定href這個屬性;

<template>
    <div id="two">
     <p>{{xingming+"123"}}</p>
     <p>{{sayName()}} <a :href="link">百度</a></p>
    </div>
</template>
<script>
export default {
    name:'two',
    data(){
        return{
           xingming:"zengcy",
           link:"https://www.baidu.com"
        }
    },
    methods:{
        sayName:function(){
            return "cy"
        }
    }
}
</script>
<style scoped>
</style>

4.

v-once指令的使用:

我們h1只是第一次初始化的值,而不會隨着name的改變而改變;

v-once後面沒有參數,所以不用寫;

<template>
    <div id="two">
     <h1 v-once>{{xingming }}</h1>
     <p>{{sayName()}} <a :href="link">百度</a></p>
    </div>
</template>
<script>
export default {
    name:'two',
    data(){
        return{
           xingming:'zengcy',
           link:"https://www.baidu.com"
        }
    },
    methods:{
        sayName:function(){
            this.xingming="cy"
            return this.xingming
        }
    }
}
</script>
<style scoped>
</style>

5.v-html的使用:

vue會把字符串當作數據輸出,而不會當作dom節點分析出來;

這個行爲可以避免很多的快腳本攻擊;

把一個數據當作dom節點去分析,而不是字符串;

v-html會導致安全性問題,不到萬不得已,不去使用;

<template>
    <div id="two">
     <h1 v-once>{{xingming }}</h1>
     <p>{{sayName()}} <a :href="link">百度</a></p>
     <p v-html='html'></p>
    </div>
</template>
<script>
export default {
    name:'two',
    data(){
        return{
           xingming:'zengcy',
           link:"https://www.baidu.com",
           html:"<a href='https://www.baidu.com'>baidu</a>"
        }
    },
    methods:{
        sayName:function(){
            this.xingming="cy"
            return this.xingming
        }
    }
}
</script>
<style scoped>
</style>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章