Vue基础以及指令
一、Vue框架介绍
之前大家学过HTML,CSS,JS,JQuery,Bootstrap,现在我们要学一个新的框架Vue~
Vue是一个构建数据驱动的web界面的渐进式框架。
目标是通过尽可能简单的API实现响应式的数据绑定和组合的视图组件。
能够构建复杂的单页面应用。现在我们开始认识一下Vue~
// HTML 页面
<div id="app">
<span>你的名字是{{name}}</span>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="../js/main.js"></script> // main.js 页面
var app = new Vue({
el: '#app',
data: {
name: "Gao_Xin"
}
});
Vue demo
二、Vue指令
Vue的指令directives很像我们所说的自定义属性,指令是Vue模板中最常用的功能,
它带有v-前缀,功能是当表达式改变的时候,相应的行为作用在DOM上。
<template>
<div>
<h2>head</h2>
<p v-text="msg"></p>
<p v-html="html"></p>
</div>
</template> <script>
export default {
name: "head",
data(){
return {
msg: "消息",
html: `<h2>插入h2标题</h2>` }
} }
</script> <style scoped> </style>
v-test v-html
// HTML页面
<div id="app">
<label>
男
<input type="checkbox" v-model="sex" value="male">
// <input type="radio" v-model="sex" value="male">
</label>
<label>
女
<input type="checkbox" v-model="sex" value="female">
</label>
{{sex}}
</div> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="../js/main.js"></script> // main.js 页面 var app = new Vue({
el: '#app',
data: {
// sex: "male",
sex: [],
}
});
v-model input
// HTML 页面
<div id="app">
<div>
<texteare v-model="article">
</texteare>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="../js/main.js"></script>
// main.js 页面
var app = new Vue({
el: '#app',
data: {
// sex: "male",
sex: [],
article: "这是一段文本。。这是一段文本。。这是一段文本。。这是一段文本。。这是一段文本。。"
}
});
v-model textarea
// HTML页面
<div id="app">
<!--<select v-model="from">-->
<!--<option value="1">单选1</option>-->
<!--<option value="2">单选2</option>-->
<!--</select>-->
<!--{{from}}-->
<select v-model="where" multiple="">
<option value="1">多选1</option>
<option value="2">多选2</option>
<option value="3">多选3</option>
</select>
{{where}}
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="../js/main.js"></script>
// main.js 页面
var app = new Vue({
el: '#app',
data: {
from: null,
where: [],
}
});
v-model select
// 需求是展示一个人的所有爱好 以及喜欢吃的食物和价格
// HTML 页面
<div id="app">
<div>
<span>你的爱好是</span>
<ul>
<li v-for="hobby in hobby_list">{{hobby}}</li>
</ul>
</div>
<div>
<span>你喜欢的食物</span>
<ul>
<li v-for="food in food_list">{{food.name}}: 价格¥{{food.discount ? food.price*food.discount: food.price}}</li>
</ul>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="../js/main.js"></script>
// main.js
var app = new Vue({
el: '#app',
data: {
hobby_list: ["王者毒药","LOL","吃鸡"],
food_list: [
{
name: "葱",
price: 5,
discount: .8,
},
{
name: "姜",
price: 8,
// discount: .5 }
],
}
});
v-for
// 我们常常见到博客中评论回复的时候 @某某某
// 我们点击这个用户是能够跳转的 那么这个应该是个动态的
// 我们就需要给标签属性进行动态绑定 v-bind
// HTML页面
<style>
.active {
background: red;
}
</style>
<div id="app">
<div>
<!--<a v-bind:href="my_link">点我</a>-->
<a v-bind:href="my_link" :class="{active: isActive}">点我
</a>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="../js/main.js"></script>
// main.js
var app = new Vue({
el: '#app',
data: {
my_link: "http://baidu.com",
isActive: true,
}
});
v-bind
// 那我们以前的事件绑定在vue中是怎么做到的呢
// HTML页面
<div>
<span>事件</span>
<button v-on="{mouseenter: onMouseenter, mouseleave: onMouseleave}" v-on:click="onClick(1)">点我</button>
</div>
<div>
<input type="text" v-on="{keyup: onKeyup}">
</div>
// main.js
var app = new Vue({
el: '#app',
data: {
my_link: "http://baidu.com",
isActive: true,
},
methods: {
onClick: function (a) {
alert(a)
},
onMouseenter: function () {
console.log("mouse enter")
},
onMouseleave: function () {
console.log("mouse leave")
},
onKeyup: function () {
console.log("key up")
}
},
});
v-on
// 我们之前写过权限 我们现在模拟一个简单的权限
// HTML页面
<div>
<div v-if="role == 'admin' || 'super_admin'">管理员你好</div>
<div v-else-if="role == 'hr'">待查看简历列表</div>
<div v-else> 没有权限</div>
</div>
// main.js 页面
var app = new Vue({
el: '#app',
data: {
role: 'admin',
// role: 'hr',
},
});
v-if v-else-if v-else
// 现在我们要实现一个功能 点击一个按钮显示文本 再点击取消
// 这种显示和隐藏的功能 vue也帮我们进行了封装
// HTML页面
<div id="app">
<button @click="on_click()">
点我
</button>
<p v-show="show">提示文本</p>
</div>
// main.js 页面
var app = new Vue({
el: '#app',
data: {
show: false,
},
methods: {
on_click: function () {
this.show = !this.show
}
} });
v-show
// 我们现在要获取用户的注册信息
// 用户名以及手机号 用指令修饰符能够让我们更加便捷
// HTML 页面
<div>
用户名: <input type="text" v-model.lazy.trim="username"><br>
{{username}}
手机号: <input type="text" v-model.number="phone"><br>
{{phone}}
</div>
// main.js 页面
var app = new Vue({
el: '#app',
data: {
username: "",
phone: "",
},
});
指令修饰符
// 我们现在有个需求 点击元素 让这个元素在浏览器窗口钉住
// 我们只需自定义一个指令,只要给元素绑定指令就可以
// HTML页面
<style>
.card {
border: solid 3px red;
width: 200px;
height: 100px;
background: #eeeeee;
margin-bottom: 5px;
}
</style>
<div id="app">
<div class="card" v-pin:true.bottom.right="pinned">
<button @click="pinned = !pinned">盯住/取消</button>
这是一个盒子文本内容
</div>
<div class="card">
这是一个盒子文本内容
</div>
<div class="card">
这是一个盒子文本内容
</div>
<div class="card">
这是一个盒子文本内容
</div>
<div class="card">
这是一个盒子文本内容
</div>
<div class="card">
这是一个盒子文本内容
</div>
<div class="card">
这是一个盒子文本内容
</div>
</div>
// main.js 页面
Vue.directive('pin', function (el, binding) {
var binded = binding.value;
var position = binding.modifiers;
var warning = binding.arg;
console.log(position)
if(binded){
el.style.position = 'fixed';
for(var key in position){
if (position[key]){
el.style[key] = '20px';
}
}
if (warning === 'true'){
el.style.background = '#666'
} }
else {
el.style.position = 'static';
el.style.background = "#eeeeee"
}
});
new Vue({
el: '#app',
data: {
pinned: false,
}
});
自定义指令以及修饰符和参数
三、Vue获取DOM元素
<style>
.box {
width: 200px;
height: 200px;
border: solid 1px red;
}
</style> </head>
<body>
<div id="app">
<div class="box" ref="my_box">
这是一个盒子
</div>
</div> <script>
const app = new Vue({
el: "#app",
mounted(){
this.$refs.my_box.style.color = "red";
}
})
</script> </body>
获取DOM
四、Vue计算属性
我们的模板表达式非常的便利,但是逻辑复杂的时候,模板会难以维护,vue提供了计算属性。
我们用方法也能达到效果,那么我们为什么要用计算属性呢~
其实在vue中方法和计算属性达到的效果是一样的,但是计算属性是基于依赖进行缓存的,
只有依赖的数据发生改变的时候,才会重新执行计算属性的函数,每次调用都会从缓存中拿之前算好的数据。
而方法是每调用一次,执行一次。
// 现在我们有一个成绩的表格 来计算总分和平均分
// HTML页面
<div id="app">
<table border="1">
<thead>
<th>学科</th>
<th>分数</th>
</thead>
<tbody>
<tr>
<td>数学</td>
<td><input type="text" v-model.number="math"></td>
</tr>
<tr>
<td>物理</td>
<td><input type="text" v-model.number="physics"></td>
</tr>
<tr>
<td>英语</td>
<td><input type="text" v-model.number="english"></td>
</tr>
<tr>
<td>总分</td>
<!--<td>{{math+physics+english}}</td>-->
<td>{{sum}}</td>
</tr>
<tr>
<td>平均分</td>
<!--<td>{{Math.round((math+physics+english)/3)}}</td>-->
<td>{{average}}</td>
</tr>
</tbody>
</table>
</div>
// js 页面
var app = new Vue({
el: '#app',
data: {
math: 90,
physics:88,
english: 78,
},
computed: {
sum: function () {
var total = this.math + this.physics + this.english
return total
},
average: function () {
var average_num = Math.round(this.sum/3)
return average_num
}
}
});
计算属性 computed
五、Vue过滤器
过滤器是在数据到达用户的最后一步进行简单的过滤处理,复杂的还是要用计算属性或者方法。
// 我们两个需求 一个是价格展示后面自动加“元”
// 单位 毫米和米的转换
// HTML页面
<div>
<p>价格展示</p>
<input type="text" v-model="price">
{{price | currency('USD')}}
</div>
<div>
<p>换算</p>
<input type="text" v-model="meters">
{{meters | meter}}
</div>
// js 代码
Vue.filter('currency', function (val, unit) {
val = val || 0;
var ret = val+ unit
return ret
}); Vue.filter('meter', function (val) {
val = val || 0;
return (val/1000).toFixed(2) + "米"
});
new Vue({
el: '#app',
data: {
price: 10,
meters: 10,
}
});
过滤器 filter
Vue基础以及指令的更多相关文章
- Vue基础以及指令, Vue组件
Vue基础篇一 Vue指令 Vue的指令directive很像我们所说的自定义属性,指令时Vue模板中最常用的功能,它带有v-前缀,功能是当表达式改变的时候,相应的行为作用在DOM上. <div ...
- (day65、66)Vue基础、指令、实例成员、JS函数this补充、冒泡排序
目录 一.Vue基础 (一)什么是Vue (二)为什么学习Vue (三)如何使用Vue 二.Vue指令 (一)文本指令 (二)事件指令v-on (三)属性指令v-bind (四)表单指令v-model ...
- vue 基础-->进阶 教程(2): 指令、组件
第二章 建议学习时间4小时 课程共3章 前面的nodejs教程并没有停止更新,因为node项目需要用vue来实现界面部分,所以先插入一个vue教程,以免不会的同学不能很好的完成项目. 本教程,将从零 ...
- 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十八║Vue基础: 指令(下)+计算属性+watch
回顾 今天来晚辣,给公司做了一个小项目,一个瀑布流+动态视频控制的DEMO,有需要的可以联系我,公司的项目就不对外展示了(一个后端程序员真的要干前端了哈哈哈). 书接上文,昨天正式的开始了Vue的代码 ...
- Vue基础01vue的基本示例,vue的双向数据绑定,vue中常见的几种用法,vue相关常见指令
自学vue框架,每天记录重要的知识点,与大家分享!有不足之处,希望大家指正. 本篇将讲述:vue的基本示例,vue的双向数据绑定,vue中常见的几种用法,vue相关常见指令 前期学习基础,使用vue. ...
- vue 基础-->进阶 教程(2): 指令、自定义指令、组件
第二章 建议学习时间4小时 课程共3章 前面的nodejs教程并没有停止更新,因为node项目需要用vue来实现界面部分,所以先插入一个vue教程,以免不会的同学不能很好的完成项目. 本教程,将从零 ...
- Vue基础系列(四)——Vue中的指令(上)
写在前面的话: 文章是个人学习过程中的总结,为方便以后回头在学习. 文章中会参考官方文档和其他的一些文章,示例均为亲自编写和实践,若有写的不对的地方欢迎大家和我一起交流. VUE基础系列目录 < ...
- Vue基础系列(五)——Vue中的指令(中)
写在前面的话: 文章是个人学习过程中的总结,为方便以后回头在学习. 文章中会参考官方文档和其他的一些文章,示例均为亲自编写和实践,若有写的不对的地方欢迎大家和我一起交流. VUE基础系列目录 < ...
- 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十七 ║Vue基础:使用Vue.js 来画博客首页+指令(一)
缘起 书说前两篇文章<十五 ║ Vue前篇:JS对象&字面量&this>和 <十六 ║ Vue前篇:ES6初体验 & 模块化编程>,已经通过对js面向对 ...
随机推荐
- 大数据时代的Python金融应用-Day1-Python与金融应用概述
一.Python语言的主要特征 1.开源性 Python和大多数的支撑库和工具都是开源的,通常可以非常灵活的使用而且有开放的协议. 2.解释性 也可以使用Cpython完成将解释性语言转化为实施可执行 ...
- (转)C# Assembly.Load 使用
在C#中,我们要使用反射,首先要搞清楚以下命名空间中几个类的关系: System.Reflection命名空间(1) AppDomain:应用程序域,可以将其理解为一组程序集的逻辑容器(2) As ...
- 线程---local数据隔离
线程之间本身是数据共享的,当多个线程同时修改一份数据的时候,数据就可能不 准确,特别是线程量特别大的时候,为了保证数据准确性: (1) 通过线程锁Lock (2)通过local数据隔离 from th ...
- 卡方分布 | t检验 | F检验 | 卡方检验 | 假设检验 | 各种检验持续总结
Chi-square distribution introduction 这个视频真的好,完美地解释了卡方统计量是怎么来的! 我们有一个标准正态分布的总体,我们从其中抽一次,取该值的平方就是Q1统计量 ...
- webpack基础概念
中文文档:https://webpack.docschina.org/concepts/ 一个现代 JavaScript 应用程序的静态模块打包器(static module bundler). 在 ...
- Vue之单文件组件的数据传递,axios请求数据及路由router
1.传递数据 例如,我们希望把父组件的数据传递给子组件. 可以通过props属性来进行传递. 传递数据三个步骤: 步骤1:在父组件中,调用子组件的组名处,使用属性值的方式往下传递数据 <Menu ...
- hive的jdbc使用
①新建maven项目,加载依赖包 在pom.xml中添加 <dependency> <groupId>jdk.tools</groupId> <artifa ...
- Leetcode 1006. 笨阶乘
1006. 笨阶乘 显示英文描述 我的提交返回竞赛 用户通过次数305 用户尝试次数347 通过次数309 提交次数665 题目难度Medium 通常,正整数 n 的阶乘是所有小于或等于 n 的 ...
- Vue keep-alive总结
<keep-alive>是Vue的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM. <keep-alive> 包裹动态组件时,会缓存不活动的组件实例,而不是 ...
- Oracle Shared Pool之Library Cache
1. Shared Pool组成 Shared Pool由许多区间(Extent)组成,这些区间又由多个连续的内存块(Chunk)组成,这些内存块大小不一.从逻辑功能角度,Shared pool主要包 ...