• Web前端-Vue.js必备框架(二)


    Web前端-Vue.js必备框架(二)

    Web前端-Vue.js必备框架(二)

    vue调式工具vue-devtools

    过滤器:vue.js允许你自定义过滤器,可被用作一些常见的文本格式化。

    mustache插值和v-bind表达式。
    vue生命周期,从创建,运行,到销毁,称为生命周期。

    new Vue() : var vm = new Vue({}) 开始创建一个Vue实例对象
    
    init 表示初始化一个Vue空的实例对象,这时候,这个对象上有一些生命周期和默认时间
    

    ajax, vue-resource实现get,post,jsonp

    <!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>dashu</title>
      <script src="./lib/vue-2.4.0.js"></script>
      <link rel="stylesheet" href="./lib/bootstrap-3.3.7.css">
    </head>
    
    <body>
      <div id="app">
    
    
    
        <div class="panel panel-primary">
          <div class="panel-heading">
            <h3 class="panel-title">添加品牌</h3>
          </div>
          <div class="panel-body form-inline">
            <label>
              Id:
              <input type="text" class="form-control" v-model="id">
            </label>
    
            <label>
              Name:
              <input type="text" class="form-control" v-model="name">
            </label>
    
            <input type="button" value="添加" class="btn btn-primary" @click="add()">
    
            <label>
              搜索关键字:
              <input type="text" class="form-control" v-model="keywords">
            </label>
          </div>
        </div>
    
    
    
        <table class="table table-bordered table-hover table-striped">
          <thead>
            <tr>
              <th>Id</th>
              <th>Name</th>
              <th>Ctime</th>
              <th>Operation</th>
            </tr>
          </thead>
          <tbody>
    
            <tr v-for="item in search(keywords)" :key="item.id">
              <td>{{ item.id }}</td>
              <td v-text="item.name"></td>
              <td>{{ item.ctime }}</td>
              <td>
                <a href="" @click.prevent="del(item.id)">删除</a>
              </td>
            </tr>
          </tbody>
        </table>
    
    
    
      </div>
    
      <script>
        var vm = new Vue({
          el: '#app',
          data: {
            id: '',
            name: '',
            keywords: '',
            list: [
              { id: 1, name: 'a', ctime: new Date() },
              { id: 2, name: 'b', ctime: new Date() }
            ]
          },
          methods: {
            add() { 
    
              var c = { id: this.id, name: this.name, ctime: new Date() }
              this.list.push(c)
              this.id = this.name = ''
            },
            del(id) { 
    
              var index = this.list.findIndex(item => {
                if (item.id == id) {
                  return true;
                }
              })
    
              this.list.splice(index, 1)
            },
            search(keywords) { 
              return this.list.filter(item => {
                if (item.name.includes(keywords)) {
                  return item
                }
              })
            }
          }
        });
      </script>
    </body>
    
    </html>
    
    <!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>dashu</title>
      <script src="./lib/vue-2.4.0.js"></script>
      <link rel="stylesheet" href="./lib/bootstrap-3.3.7.css">
    </head>
    
    <body>
      <div id="app">
        <div class="panel panel-primary">
          <div class="panel-heading">
            <h3 class="panel-title">添加品牌</h3>
          </div>
          <div class="panel-body form-inline">
            <label>
              Id:
              <input type="text" class="form-control" v-model="id">
            </label>
    
            <label>
              Name:
              <input type="text" class="form-control" v-model="name" @keyup.f2="add">
            </label>
    
            <input type="button" value="添加" class="btn btn-primary" @click="add()">
    
            <label>
    
              <input type="text" class="form-control" v-model="keywords" id="search" v-focus v-color="'green'">
            </label>
          </div>
        </div>
    
        <table class="table table-bordered table-hover table-striped">
          <thead>
            <tr>
              <th>Id</th>
              <th>Name</th>
              <th>Ctime</th>
              <th>Operation</th>
            </tr>
          </thead>
          <tbody>
     
            <tr v-for="item in search(keywords)" :key="item.id">
              <td>{{ item.id }}</td>
              <td v-text="item.name"></td>
              <td>{{ item.ctime | dateFormat() }}</td>
              <td>
                <a href="" @click.prevent="del(item.id)">删除</a>
              </td>
            </tr>
          </tbody>
        </table>
    
    
    
      </div>
    
    
      <div id="app2">
        <h3 v-color="'pink'" v-fontweight="900" v-fontsize="50">{{ dt | dateFormat }}</h3>
      </div>
    
      <script>
    
        Vue.filter('dateFormat', function (dateStr, pattern = "") {
    
          var dt = new Date(dateStr)
          var y = dt.getFullYear()
          var m = dt.getMonth() + 1
          var d = dt.getDate()
    
          if (pattern.toLowerCase() === 'yyyy-mm-dd') {
            return `${y}-${m}-${d}`
          } else {
            var hh = dt.getHours()
            var mm = dt.getMinutes()
            var ss = dt.getSeconds()
    
            return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
          }
        })
    
    
        Vue.config.keyCodes.f2 = 113
    
        Vue.directive('focus', {
          bind: function (el) { 
          },
          inserted: function (el) {  
            el.focus()
    
          },
          updated: function (el) {  
    
          }
        })
    
        Vue.directive('color', {
    
          bind: function (el, binding) {
    
            el.style.color = binding.value
          }
        })
    
        var vm = new Vue({
          el: '#app',
          data: {
            id: '',
            name: '',
            keywords: '', 
            list: [
              { id: 1, name: 'a', ctime: new Date() },
              { id: 2, name: 'b', ctime: new Date() }
            ]
          },
          methods: {
            add() { 
    
              var car = { id: this.id, name: this.name, ctime: new Date() }
              this.list.push(car)
              this.id = this.name = ''
            },
            del(id) { 
    
              var index = this.list.findIndex(item => {
                if (item.id == id) {
                  return true;
                }
              })
    
              this.list.splice(index, 1)
            },
            search(keywords) { 
              return this.list.filter(item => {
     
                if (item.name.includes(keywords)) {
                  return item
                }
              })
    
            }
          }
        });
    
        var vm2 = new Vue({
          el: '#app2',
          data: {
            dt: new Date()
          },
          methods: {},
          filters: { 
            dateFormat: function (dateStr, pattern = '') {
              var dt = new Date(dateStr)
    
              var y = dt.getFullYear()
              var m = (dt.getMonth() + 1).toString().padStart(2, '0')
              var d = dt.getDate().toString().padStart(2, '0')
    
              if (pattern.toLowerCase() === 'yyyy-mm-dd') {
                return `${y}-${m}-${d}`
              } else {
                var hh = dt.getHours().toString().padStart(2, '0')
                var mm = dt.getMinutes().toString().padStart(2, '0')
                var ss = dt.getSeconds().toString().padStart(2, '0')
    
                return `${y}-${m}-${d} ${hh}:${mm}:${ss} ~~~~~~~`
              }
            }
          },
          directives: {
            'fontweight': { 
              bind: function (el, binding) {
                el.style.fontWeight = binding.value
              }
            },
            'fontsize': function (el, binding) { 
              el.style.fontSize = parseInt(binding.value) + 'px'
            }
          }
        })
    
    
      </script>
    </body>
    
    </html>
    
    <!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>dashu</title>
      <script src="./lib/vue-2.4.0.js"></script>
    </head>
    
    <body>
      <div id="app">
        <p>{{ msg | msgFormat('a+1', 'abc') | test }}</p>
      </div>
    
      <script>
        Vue.filter('msgFormat', function (msg, arg, arg2) {
          return msg.replace(/单纯/g, arg + arg2)
        })
    
        Vue.filter('test', function (msg) {
          return msg + 'vvvvvv'
        })
    
        var vm = new Vue({
          el: '#app',
          data: {
            msg: '我是一个单纯的少年'
          },
          methods: {}
        });
      </script>
    </body>
    
    </html>
    
    <!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>dashu</title>
      <script src="./lib/vue-2.4.0.js"></script>
    </head>
    
    <body>
      <div id="app">
        <input type="button" value="修改msg" @click="msg='No'">
        <h3 id="h3">{{ msg }}</h3>
      </div>
    
      <script>
        var vm = new Vue({
          el: '#app',
          data: {
            msg: 'ok'
          },
          methods: {
            show() {
    
            }
          },
          beforeCreate() { 
            // data 和 methods 中的 数据还没有初始化
          },
          created() { 
            //  data 和 methods 都已经初始化好了
          },
          beforeMount() { // 模板已经在内存中编辑完成了,但未把 模板渲染到 页面中
          },
          mounted() { // 内存中的模板已经挂载到了页面中,用户可以看到渲染好的页面了
          },
    
          beforeUpdate() { // 表示界面还没有被更新
          },
          updated() {
            // 页面和 data 数据已经同步了
          }
        });
      </script>
    </body>
    
    </html>
    
    <!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>dashu</title>
      <script src="./lib/vue-2.4.0.js"></script>
      <!-- this.$http.jsonp -->
      <script src="./lib/vue-resource-1.3.4.js"></script>
    </head>
    
    <body>
      <div id="app">
        <input type="button" value="get请求" @click="getInfo">
        <input type="button" value="post请求" @click="postInfo">
        <input type="button" value="jsonp请求" @click="jsonpInfo">
      </div>
    
      <script>
        var vm = new Vue({
          el: '#app',
          data: {},
          methods: {
            getInfo() { 
              this.$http.get('http://vue').then(function (result) {
              })
            },
            postInfo() { // application/x-wwww-form-urlencoded
              this.$http.post('http://vue', {}, { emulateJSON: true }).then(result => {
              })
            },
            jsonpInfo() { 
              this.$http.jsonp('http://vue').then(result => {
    
              })
            }
          }
        });
      </script>
    </body>
    
    </html>
    
    <!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>dashu</title>
    </head>
    
    <body>
      <script>
        function showInfo123(data) {
          console.log(data)
        }
      </script>
    
    
    <script src="http://##?callback=showInfo123"></script>
    
    </body>
    
    </html>
    

    结言

    好了,欢迎在留言区留言,与大家分享你的经验和心得。

    感谢你学习今天的内容,如果你觉得这篇文章对你有帮助的话,也欢迎把它分享给更多的朋友,感谢。

    作者简介

    达叔,理工男,简书作者&全栈工程师,感性理性兼备的写作者,个人独立开发者,我相信你也可以!阅读他的文章,会上瘾!,帮你成为更好的自己。长按下方二维码可关注,欢迎分享,置顶尤佳。

    努力努力再努力Jeskson

  • 相关阅读:
    50多条mysql数据库优化建议
    反向代理|与正向代理区别区别
    CDN技术
    mysql存储过程对900w数据进行操作测试
    Navicat For Mysql快捷键
    Linux下目标文件分析
    Linux下的两个经典宏定义 转
    debuginfo-install glibc-2.17-157.el7.x86_64
    index merge 引起的死锁分析
    linux内核源码中常见宏定义
  • 原文地址:https://www.cnblogs.com/dashucoding/p/11140315.html
Copyright © 2020-2023  润新知