Vue初始第一天

186 阅读3分钟

Vue

  • 介绍前端的框架发展:

      a95 网景公司发布(Mocha,LiveScript)JavaScript,96年微软发布 VBScript JScript
      b、与此诞生的 PHP 95,ASP 96,JSP 99 发布
      c、04-05期间 谷歌发布了 Gmail 和 GoogleMap 应用了大量的ajax,XMLHttpRequest 正式被W3C 纳入标准
      d、08年前端大纪年:W3C 成立了HTML工作部门,发布了第一份正式草案;Google 发布 V8 引擎(10 乔布斯发布了一个文章:对Flash的思考)
      e、09年基于V8 引擎的Nodejs 发布
      f、20141028日,W3C 正式发布 HTML5.0 推荐标准(微信公众号、webApp)
      g、期间发布前端框架 knockout、backbone、angular、ember、metor、avalon、react(13年)、vue(14年)
      h、期间的前端 hybrid App 框架有:jQuery Mobile、Sencha Touch、cordova、Framework7、ionic、MUI H5+、ApiCloud、ReactNative、weex、flutter(dart.jsi15年前端发布了 ES2015
      
    
  •   App开发模式三种:
      
      Native:原生开发 -> Android(Java、kotin)和IOS(Object-C、swift) -> 之前没有热更新,后来加进去
      Hybrid:混合开发 -> 使用Java和OC开发了一个底层框架,调用原生的WebView(就是手机内置的浏览器)来加载html页面,开发的时候,直接使用html+css+js来进行业务开发,可以直接运行到app;在发布系统的时候,可以不用用户下载,直接更新
      web:webapp -> 混合开发可以调用系统底层接口,web不可以;web页面和代码文件都是部署到服务器上;
    
  •   2、前端开发框架分类
      aMVC: angular
      bMVP: metor
      cMVVM: Vue
    
      MVCmodel 数据层,view 视图层,controller 控制器;
      MVPpresent 代理层;
      MVVMVM 数据绑定层;
      React 视图层
    

Vue 双向绑定原理

  • 双向绑定原理
      面试题:vue的双向绑定原理是什么?(不是v-model的原理)
          在vue2.x中,通过Object.definePropty方法给数据对象属性添加getter和setter方法来进行数据劫持,在核心库通过监听器和订阅器来实现数据的实时更新;在setter方法中对要使用这个数据的dom节点的消息订阅,然后赋值的时候发布消息,然后dom节点根据消息来进行页面数据更新。Object.definePropty 它只能兼容到IE9
          vue2.x的双向绑定有什么问题?
                  需要递归遍历给所有数据属性添加setter和getter属性,性能就比较低下。是否可以用代理来实现。
          在vue3.x中,使用的代理(Proxy)对象来实现的数据托管。 它不兼容IE
                          const p = new Proxy(target, handler)
                          
                          
    

今日份练习 (显示模拟数据的 种类·温度·状态)

  • 渲染数据,数据的总类,他的温度就做成随机的0~100的数吧,然后状态就更具温度显示不同的颜色状态(温度大于70危险,大于50小于70警告,小于50正常)
   
    <div class="container">
        <div class="page-header">
            <h1>GPU<small>状态</small></h1>
        </div>
        <table class="table table-striped table-hover RTX">
            <thead>
                <tr>
                    <th>GPU型号</th>
                    <th>温度</th>
                    <th>状态</th>
                </tr>
            </thead>
            <tbody>
                <tr v-for="item in list">
                    <td>{{item.type}}</td>
                    <td>{{item.temp}}</td>
                    <td>
                       <!--  <span v-show="item.state=='危险'" style="color:red">{{item.state}}</span>
                        <span v-show="item.state=='警告'" style="color:orange">{{item.state}}</span>
                        <span v-show="item.state=='正常'" style="color:rgb(101, 168, 0)">{{item.state}}</span>
                         -->
                        <span v-if="item.state=='危险'" style="color:red">{{item.state}}</span>
                        <span v-else-if="item.state=='警告'" style="color:orange">{{item.state}}</span>
                        <span v-else="item.state=='正常'" style="color:rgb(101, 168, 0)">{{item.state}}</span>
                        
                    </td>
                </tr>
            </tbody>
        </table>
    </div>
    <script>
        new Vue({
            data: {
                //mock数组
                list: Array(200).fill().map((_, i) => {
                    let temp = Math.ceil(Math.random() * 100)
                    return { type: 'RTX309' + i, temp, state: temp > 70 ? '危险' : temp < 50 ? '正常' : '警告' }
                })
            }
        }).$mount('.RTX')
    </script>
总结小技巧
  •  Array(20).fill() 快速填充数组  长度为20
    
  •  {{}} 插值符号
    
  •  el:"选择器"   ||  .$mount('选择器')  都可以挂载DOM树
    
v-if 和 v-show的区别

他们都可以让元素显示与隐藏区别就在于一个是隐藏元素 ,一个是删除元素

  • v-if

  •     v-if 他会让节点删除和生成 ,生成满足的节点,不满足的节点不会生成
    
  •     v-show 他是通过display 来实现显示与隐藏的,元素节点会一直存在
    
v-model:是Vue提供一个双向绑定指令(不是VUE的双向绑定原理)
v-text:可以给元素绑定内容的一个指令,相当于innerText
v-html:可以给元素绑定HTML片段的一个指令,相当于innerHTML
v-for:遍历渲染,使用的是for--...in 机制