前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Web前端-Vue.js必备框架(二)

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

作者头像
达达前端
发布2019-07-03 13:17:44
2.9K0
发布2019-07-03 13:17:44
举报
文章被收录于专栏:达达前端达达前端
Web前端-Vue.js必备框架(二)

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

vue调式工具vue-devtools

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

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

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

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

代码语言:javascript
复制
<!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>
代码语言:javascript
复制
<!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>
代码语言:javascript
复制
<!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>
代码语言:javascript
复制
<!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>
代码语言:javascript
复制
<!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>
代码语言:javascript
复制
<!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>

结言

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

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.03.05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 结言
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档