Web前端-Vue.js必备框架(二)css
vue
调式工具vue-devtools
html
过滤器:vue.js
容许你自定义过滤器,可被用做一些常见的文本格式化。前端
mustache
插值和v-bind
表达式。
vue生命周期,从建立,运行,到销毁,称为生命周期。vue
new Vue() : var vm = new Vue({}) 开始建立一个Vue实例对象
init 表示初始化一个Vue空的实例对象,这时候,这个对象上有一些生命周期和默认时间
ajax
, vue-resource
实现get,post,jsonp
ajax
<!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>
好了,欢迎在留言区留言,与你们分享你的经验和心得。json
感谢你学习今天的内容,若是你以为这篇文章对你有帮助的话,也欢迎把它分享给更多的朋友,感谢。bootstrap
做者简介app
达叔,理工男,简书做者&全栈工程师,感性理性兼备的写做者,我的独立开发者,我相信你也能够!阅读他的文章,会上瘾!,帮你成为更好的本身。长按下方二维码可关注,欢迎分享,置顶尤佳。框架