zoukankan      html  css  js  c++  java
  • 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指令用来实现双向数据绑定,这个指令只能给inputselect extarea 这些标签使用(组件也可以使用)

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

      

     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>

        

  • 相关阅读:
    huffman编码压缩算法(转)
    ReLU 和sigmoid 函数对比以及droupout
    分类中数据不平衡问题的解决经验(转)
    C++ 虚函数表解析
    const 和宏的区别
    static小结
    javascript技巧字典【转藏】
    七个心理寓言【转】
    购物车悬浮 + 购物数量显示
    好看的图标
  • 原文地址:https://www.cnblogs.com/jianguo221/p/11771746.html
Copyright © 2011-2022 走看看