zoukankan      html  css  js  c++  java
  • 使用jquery和使用框架的区别

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <meta http-equiv="X-UA-Compatible" content="ie=edge">
      <title>Document</title>
    </head>
    <body>
      <div>
        <input type="text" name="" id="txt-title"/>
        <button id="btn-submit">submit</button>
      </div>
      <div>
        <ul id="ul-list"></ul>
      </div>
    
      <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
      <script>
        var $txtTitle = $('#txt-title');
        var $ulList = $('#ul-list');
        var $btnSubmit = $('#btn-submit');
    
        $btnSubmit.click(function(){
          var title = $txtTitle.val();
          var $li = $('<li>'+ title +'</li>')
          $ulList.append($li);
          $txtTitle.val('');
        })
      </script>
    </body>
    </html>

    这是jquery实现一个todolist的过程,通过点击事件,初始化一个新的li标签,append进去的。

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <meta http-equiv="X-UA-Compatible" content="ie=edge">
      <title>Document</title>
    </head>
    <body>
      <div id="app">
        <input v-model='title'/>
        <button v-on:click='add'>submit</button>
        <ul v-for='item in list'>
          {{item}}
        </ul>
      </div>
    
      <script src="https://cdn.bootcss.com/vue/2.6.10/vue.min.js"></script>
      <script>
        var data = {
          title: '',
          list: []
        }
        var vm = new Vue({
          el: '#app',
          data: data,
          methods: {
            add: function(){
              this.list.push(this.title);
              this.title = ''
            }
          }
        })
      </script>
    </body>
    </html>

    这是vue实现todolist的过程。不管里面的变量还是函数都跟vue对象里面有对应关系。在点击按钮的时候只需要操作里面的数据就行了。



    两者的区别:
    1、数据和视图的分离
    所谓视图就是dom,jquery的视图在html里面,也有在js里面,上面的例子比如li。他把视图和数据混在一块了,所以jquery,数据和视图没有分离。混在一块的坏处1,不符合开放封闭原则,对扩展开放,对修改封闭。所有这种混在一块的,都违背了扩展封闭原则。
    vue中找数据和dom非常方便,数据是哪块,dom是哪块。数据和视图是分离的,数据就是data,vue中的列表不是空壳是有内容的。
    2、以数据驱动视图
    意思是我只改数据,jquery就违背了这点,li标签是生生append到list中。这种清空value是直接以底层到api来操作的。所以jquery中以数据驱动视图是完全没有的,不存在的。以数据驱动视图是通过数据的修改,由框架自动的把视图改了,我们不用管dom元素是怎么样的。jquery是干预了视图的修改。
    vue中以数据驱动视图更明显了,在点击按钮的时候,只是把数据push到list,没有操作dom,只是关心数据到变化,数据到清空也是只关心数据到变化。
    这种是不是更符合我们到开发模式,我们希望把数据模型改了就好,不需要管dom,dom的渲染其实跟业务流程关系不大。我们只需要关心数据的变化。数据和视图的分离,问题主要是解耦(开放封闭原则)。
  • 相关阅读:
    P1149 火柴棒等式
    SpringMVC之reset风格和form表单格式的curd
    SpringMVC之转发重定向
    文件下载
    文件上传
    数据库分页
    使用代理创建连接池 proxyPool
    Proxy 示例
    Proxy基础---------获取collection接口的构造跟方法
    javaBean中 字符串 转 date 类型转换
  • 原文地址:https://www.cnblogs.com/wzndkj/p/11037711.html
Copyright © 2011-2022 走看看