1、前端基础总结(一)

一、

1、为什么要学习Vue?

  传统的web开发模式:前端人员根据设计稿设计出静态页面,然后将该页面交给后台人员,由后台人员往这些静态页面中加入数据交互逻辑,最后前端进行展示,由后台人员往这个后台一遍写接口,一遍写页面,还要根据不同的url去拼接页面,这样导致前后端工作分配不均,后台压力大,而且效率也低,不移维护。

  前端后端分离开发模式:后台只关注于数据输出(提供api接口)或者业务逻辑处理,前端负责url的跳转及传参,二者独立开发,互不依赖,开发效率更快。

 1    <!-- 非Vue版 -->
 2     <div id="app1">0</div>
 3     <button id="btn">+1</button>
 4     <script>
 5         var app1 = document.getElementById("app1");
 6         var button = document.getElementById("btn");
 7         var test;
 8         button.onclick = function(){
 9             test = parseInt(app1.innerText) + 1;
10             app1.innerText = test
11         }
12     </script>
13 
14     <!-- Vue版 -->
15     <script src="./vue2.js"></script>
16     <div id="app">
17         <div>{{msg1}}</div>
18         <div>{{msg2}}</div>
19         <button @click="msg1 = msg1 + 1">+1</button>
20         <button @click="msg2 = msg2 - 1">-1</button>
21     </div>
22     <script>
23         var vm = new Vue({
24             el:"#app",
25             data:{
26                 msg1:1,
27                 msg2:2
28             },
29             methods:{
30 
31             }
32         })
33     </script>
View Code

 

2、jquery能否实现呢?

  随着前端页面越来越复杂,用户对于交互性要求也越来越高,仅仅用jQuery是远远不够的。

  解决: 尤雨溪->Vue

      Google->AngularJS

        Facebook-> ReactJS

3、jquery: 库

4、vue:框架

5、什么是库?

  库是一堆方法的集合,按需调用即可。

6、什么是框架?

  框架是针对某类业务提供整套的解决方案,并且定义好了一整套的规范,开发者必须按照规范去使用

7、vue是MVVM的框架

 

8、插值表达式

  作用:展示data中的数据,它的合法用法有

    1、直接写变量

    2、字符串拼接

    3、数值运算

    4、三元表达式

    5、函数

 1     <script src="./vue2.js"></script>
 2     <div id="app">
 3         <div>直接写变量{{msg}}</div>
 4         <div>字符串拼接:{{ "名字:" + msg }}</div>
 5         <div>数值运算:{{ 666 + msg }}</div>
 6         <div>三元表达式:{{ msg >= 19 ? "已成年" : "未成年"}}</div>
 7         <div>{{ str.split('').reverse().join('')}}</div>
 8         <!-- split  reverse   join  三个用法 -->
 9         <div>{{str.split('')}}</div>
10         <!-- reverse()方法用于颠倒数组中元素的顺序【注意:是数组,不是字符串】 -->
11         <div>{{ arrTest }}</div>
12         <div>{{ arrTest.reverse() }}</div>
13         <!-- 注意:reverse 只修改数组本身,而不是返回结果,而且没有返回结果 -->
14 
15         <!-- join() 方法用于把数组中的所有元素放入一个字符串。元素是通过指定的分隔符进行分隔的。 【注意:是将数组转成字符串的】-->
16         <div>{{ arrTest.join('--')}}</div>
17         <div>{{ arrTest.join('')}}</div>
18 
19         
20     </div>
21     <script>
22         var vm = new Vue({
23             el:"#app",
24             data:{
25                 msg:123,
26                 str:"abcdef",
27                 arrTest:[1,2,3,4,5,6]
28             }
29         })
30     </script>
View Code

9、v-text 和 v-html 的使用

在vue中,凡是v-开头的都叫指令,指令是用来增强html功能用
 v-text作用和插值表达式一样,也是用来展示数据的, 它的使用方式是在标签的属性位置使用,而插值表达式在innerHTML位置使用 
  <script src="./vue2.js"></script>
    <div id="app">
        <div v-text="username"></div>
        <div v-text=" '你好' + username "></div>
        <div v-text=" 66 + age "></div>
        <div v-text="age >= 18 ? '成年人':'未成年'"></div>
        <div v-text="username.split('').reverse().join('')"></div>
        <div v-text="htmlStr"></div>

        <!-- 如果用到带HTML标签的要用v-html来展示,但是这样不安全,不建议使用  -->
        <div v-html="htmlStr"></div>
    </div>
    <script>
        var vm = new Vue({
            el:"#app",
            data:{
                username: "abcdef",
                age : 20,
                arrTest: [1,2,3,4,5],
                htmlStr:'<h1>这是最大的标题</h1>'
            }
        })
    </script>

  

10、v-bind的使用

  作用:用于动态绑定属性

  使用方式:v-bind:属性名="data的一个属性"

  简写: :属性名="data的一个属性"【推荐这种写法】

  v-bind可以动态绑定任何样式,包括自定义样式。

<style>
        .redfont{
            color:red;
        }
    </style>
    <script src="./vue2.js"></script>
    <div id="app">
        <img v-bind:src="avatar" alt="">
        <img :src="avatar" alt="">
        <a :href="'del.php?id='+id">删除</a>
         <!-- 推荐下面这种写法⭐ -->
        <a :href=" `del.php?id=${id}` ">推荐这种删除方式</a>

        <!-- v-bind可以绑定任何属性,包括自定义属性 -->
        <p :username="username">这是自定义属性</p>

        <!-- v-bind动态绑定样式  使用对象语法,对象的key作为类名,后面跟一个判断条件,如果条件为true,则具备该类名,如果条件为false,则不具备该类名 -->
        <p :class=" { redfont: username === 'abcd'} ">测试动态绑定样式</p>
    </div>
    <script>
        var vm = new Vue({
            el:"#app",
            data:{
                username:"abcd",
                age:20,
                avatar:"./avatar.jpg",
                id:222
            }
        })
    
    </script>

  

11、v-for 的使用

  作用:v-for可以用来遍历数组 和 对象。它可以根据data中的数组动态刷新视图。

  1、遍历数组:

    1.1 使用方式:v-for=" item in arr " item 是一个参数,表示数组中的每一项,arr也是一个参数,表示你要遍历的数组。

    1.2 使用方式:v-for=" (item,index) in arr "  index表示数组项的索引。✨⭐

  2、遍历对象

    2.1 使用方式:v-for=" value in obj" value 表示对象属性的值, obj就是需要遍历的对象

    2.2 使用方式: v-for="(value ,key,index) in obj"    key表示对象的键,index表示这个对象属性的索引,类似上面数组的index

 

  注意:使用下面两种方式不能够动态刷新视图

    1、使用数组的length属性去更改数组的时候不行。

    2、使用索引的方式去更改数组也不行

  解决方式:  

    1、Vue.set(arr,index,value) 方法  arr:表示需要设置的数组,index表示数组索引,value表示该索引项的新的值✨✨,

              例如Vue.set(vm.list,0,{id:111,name:'jack'})

    2、直接调用数组的splice()方法

  注意:使用v-for渲染数组的时候,一定要记住将key属性加上去,并且要保证这个key的值是唯一并且不重复的,它的作用的就是用来唯一标识数组的每一项,,提高渲染性能的 ⭐

 1  <script src="./vue2.js"></script>
 2     <div id="app">
 3         <div> v-for=" item in arr"</div>
 4         <ul>
 5             <li v-for="item in list" :key="item.id">{{item.name}}</li>
 6         </ul>
 7 
 8         <div> v-for=" (item, index ) in arr"</div>
 9         <ul>
10             <li v-for="(item,index) in list" :key="index ">名字{{item.name}}--索引值:{{index }}</li>
11         </ul>
12 
13 
14         <div> v-for=" value in obj"</div>
15         <ul>
16             <li v-for="value in boss" :key="value">项:{{value}}</li>
17         </ul>
18 
19         <div>v-for=" (value,key,index) in obj"</div>
20         <ul>
21             <li v-for="(value,key,index) in boss" :key="index">名字:{{value}}--键:{{key}}--索引:{{index}}</li>
22         </ul>
23 
24     </div>
25     <script>
26         var vm = new Vue({
27             el:"#app",
28             data:{
29                 list:[
30                     { id: 11, name:'北京'},
31                     { id: 22, name:'天津'},
32                     { id: 33, name:'河北'}
33                 ],
34                 boss:{ name: '马云', age:50}
35             }
36         })
37     </script>
View Code

 

12、v-model双向数据绑定

  v-model指令用来实现双向数据绑定,这个指令只能给input\select\textarea 这些标签使用(组件也可以使用)

  双向数据绑定就是:数据模型中的数据与视图中的数据同步变化

  

 1  <script src="./vue2.js"></script>
 2     <div id="app">
 3         <input type="text" v-model="name">
 4         <input type="text" :value="name">
 5     </div>
 6     <script>
 7         var vm = new Vue({
 8             el:"#app",
 9             data:{
10                 name:"哈哈哈"
11             }
12         })
13     </script>

 

 

13、监听DOM事件指令:v-on、事件修饰符、按键修饰符

  v-on:事件类型="一个函数"  这个事件类型可以子弟和工艺

  简写为:  @事件类型="一个函数"

 1     <script src="./vue2.js"></script>
 2     <div id="app">
 3         <h1>{{name}}</h1>
 4 
 5         <button v-on:click="changeName">点击事件改变值</button>
 6         <button @click="changeName">简写点击改变值</button>
 7 
 8         <button @click="changeNameByArg('今天天气不错')">传参来改变name值</button>
 9 
10         <!-- 如果要想传事件对象,只能用$event,并且不能加引号 -->
11         <button @click="getEvent($event)">点击获取事件对象</button>
12 
13         <br>
14         <!-- 事件修饰符:用来增强事件功能,常用的有  .stop :阻止冒泡;.prevent:阻止默认行为 -->
15         <a href="https://www.baidu.com">跳到百度</a>
16         <a href="https://www.baidu.com" @click.prevent="print">阻止默认跳转,并打印一句话</a>
17 
18         <br>
19         <!-- 按键修饰符 -->
20         <input type="text" v-model="name" @keyDown.13="submit">
21         <input type="text" v-model="name" @keyDown.enter="submit">
22 
23     </div>
24     <script>
25         var vm = new Vue({
26             el:"#app",
27             data:{
28                 name:"隔壁老王"
29             },
30             methods:{
31                 changeName(){
32                     console.log(this)
33                     this.name = "哈哈哈,被迫改变了"
34                 },
35                 changeNameByArg(newName){
36                     this.name = newName
37                 },
38                 getEvent(e){
39                     console.log(e)
40                 },
41                 print(){
42                     console.log("阻止你默认跳转")
43                 },
44                 submit(e){
45                     console.log('你提交了表单')
46                     console.log(e.keyCode)
47                 }
48             }
49         })
50     </script>
View Code

 

 

14、v-if 和 v-show 展示指令

  v-if 和 v-show 都能够用来控制元素的显示与隐藏

  v-if 是通过操作dom元素来控制元素的显示与隐藏,而V-show 是通过控制样式display:none来控制元素的显示和隐藏的

  

  使用场景:

    1. 如果页面中涉及到异步数据渲染的话,就用V-if

    2. 如果页面中涉及到大龄dom元素的显示和隐藏的话,就用v-show

 1     <script src="./vue2.js"></script>
 2     <div id="app">
 3         <h1> v-if </h1>
 4         <p v-if="age>18">已成年</p>
 5         <p v-if="age<18">未成年</p>
 6 
 7         <h1> v-show </h1>
 8         <p v-show="age > 18">已成年</p>
 9         <p v-show="age < 18">未成年</p>
10 
11         <h1> 异步数据 </h1>
12         <p v-if="isVisible">异步数据回来,我就就显示</p>
13         <button @click="getData">点击改变</button>
14     </div>
15     <script>
16         var vm = new Vue({
17             el:"#app",
18             data:{
19                 age:20,
20                 isVisible: false
21             },
22             methods:{
23                 getData(){
24                     setTimeout(() => {
25                         this.isVisible = true
26                     }, 2000);
27                 }
28             }
29         })
30     </script>
View Code

 

 

15、v-if 和  v-else-if  的使用

 1  <script src="./vue2.js"></script>
 2     <div id="app">
 3         <h1>异步数据</h1>
 4         <p v-if="isVisible">异步数据回来了,我就显示</p>
 5         <p v-else>异步数据没有回来 </p>
 6         <button @click="getData">点击显示</button>
 7 
 8         <h1>v-else-if</h1>
 9         <p v-if=" age >=60 ">老年人</p>
10         <p v-else-if="age >= 50 && age < 60">中年人</p>
11         <p v-else-if=" age > 18 && age < 50">青年人</p>
12         <p v-else>青少年</p>
13         <button @click="changeAge">改变年龄</button>
14     </div>
15     <script>
16         var vm = new Vue({
17             el:"#app",
18             data:{
19                 age : 19,
20                 isVisible: false
21             },
22             methods:{
23                 getData(){
24                     setTimeout(() => {
25                         this.isVisible = true
26                     }, 1000);
27                 },
28                 changeAge(){
29                     setTimeout(() => {
30                         this.age = 65
31                     }, 1000);
32                 }
33             }
34         })
35     </script>
View Code

 

16、v-cloak指令

  作用Lv-cloak指令可以用于解决表达式闪烁问题

  

 1  <style>
 2         /*2.  利用属性选择器选中,设置display 为none */
 3         [v-cloak]{
 4             display: none;
 5         }
 6     </style>
 7     <script src="./vue2.js"></script>
 8     <div id="app">
 9         <!-- 1. 首先找到你插值表达式闪烁的变迁,给它加上v-cloak指令 -->
10         <h3 v-cloak>{{name}}</h3>
11     </div>
12     <script>
13         // 3. 当Vue实例编译完成后,就会将标签上的v-cloak移除掉
14         var vm = new Vue({
15             el:"#app",
16             data:{
17                 name:"hello world"
18             }
19         })
20     </script>

 

    

 

posted @ 2019-10-31 16:00  遥望那月  阅读(258)  评论(0编辑  收藏  举报