Vue.js

vue是一个前端javascript框架,对javascript进行封装.

vue.js和 Angular.js、React.js 一起,并成为前端三大主流框架!

特点:1.体积小(封装的文件小)

2.更高的运行效率,不直接频繁的对网页上的标签进行操作,基于dom技术进行优化

3.实现数据双向绑定,程序员只关心要操作的数据即可,把数据渲染到标签上交给vue框架处理.

4.生态丰富、学习成本低

Vue 指令

指令带有前缀 v- 开头,以表示它们是 Vue 提供的特殊属性

v-text、v-html

javascript 复制代码
<div  id="app">
    <div>
        abc ,{{message}} ,123
    </div>
    <div v-html="message1">123</div>
    <div v-text="message1">123</div>
</div>
	
<script type="text/javascript">
    let app = new Vue({
    el:"#app",
    data:{
        message:"hello vue",
        message1:"<b>hello</b>",
        }
    });
</script>

{{message}} v-html,v-text区别

{{message}}不会覆盖标签体中的内容,只是在标签内部插入一个值

v-html和v-text 会用数据覆盖标签体中的内容

v-html:能解析字符串中的标签

v-text:不能解析字符串中的标签

v-on

作用是为元素绑定事件

事件名不需要写 on 指令可以简写为@

绑定的方法定义在 methods 属性中,可以传入自定义参数

javascript 复制代码
<input  type="button" value="按钮1" v-on:click="test1()"/>

<input  type="button" value="按钮2" @click="test1()"/>

let app = new Vue ({

        el:"#app",

        data:{//定义数据

                message:"hello"        

        }

        methods:{//定义函数

                test1(){

                        //函数实现

                }

        }

})

v-model

作用是便捷的设置和获取表单元素的值

绑定的数据会和表单元素值相关联

绑定的数据<---->表单元素的值 双向数据绑定

javascript 复制代码
<p>
    {{name}}	
</p>
<!-- v-model 可以将输入标签中的值  绑定到指定的属性上-->
<input type="text" value="" v-model="name"/>

v-show

javascript 复制代码
<!-- 
    v-show="布尔值"  根据布尔值显示或隐藏当前标签
    通过display的值控制标签显示或隐藏,每次不需要重新创建标签,效率高
-->
<div v-show="isshow">123</div>

isshow为true时显示,为false时隐藏

v-if

javascript 复制代码
<!-- 
    v-if="布尔值"  根据布尔值显示或隐藏当前标签
    每次从网页中要删除/创建标签,数量多了效率低
	v-if 和 v-else标签必须挨着
-->

<div v-if="boolean">aaa</div>
<div v-else>bbb</div>

v-show 和 v-if的区别

v-show 通过通过display的值控制标签显示或隐藏

v-if 每次从网页中要删除/创建标签

v-if 过多会可能影响网页性能

v-bind

作用是为元素绑定属性

完整写法是 v-bind:属性名

简写的话可以直接省略 v-bind,只保留:属性名

javascript 复制代码
<!-- <img  src="imgsrc"/> 错误写法,不能将data中的属性填充到普通标签属性中-->
<!-- <img  v-bind:src="imgsrc"/> -->
<img  :src="imgsrc" :title="title"/>
			 
			 
<!-- 通过isActive控制是否为标签添加指定的类名-->
<div v-bind:class="{ active: isActive }">状态</div>

v-for

作用是根据数据生成列表结构

数组经常和 v-for 结合

使用语法是(item,index)in 数据

item 和 index 可以结合其他指令一起使用

数组长度的更新会同步到页面上是响应式的

为循环绑定一个 key 值 :key="值" 尽可能唯一

javascript 复制代码
<div  id="app">
    <ul>
        <li v-for="p in provinces">{{p}}</li>
    </ul>
    <table border="1">
        <tr>
            <td>学号</td>
			<td>姓名</td>
			<td>性别</td>
		</tr>
		<tr v-for="student in students">
			<td>{{student.id}}</td>
			<td>{{student.name}}</td>
			<td>{{student.gender}}</td>
		</tr>
	</table>
</div>
	
<script type="text/javascript">
    let app = new Vue({
        el:"#app",
        data:{
            provinces:['北京','天津','上海','重庆','陕西'],
            students:[{id:1,name:'jim',gender:'男'},
                      {id:2,name:'tom',gender:'男'},
					  {id:3,name:'lili',gender:'女'},
					  {id:4,name:'lili',gender:'女'},
					  {id:5,name:'lili',gender:'女'}]
		}
	});
</script>
相关推荐
2201_757830871 小时前
Stream的终结方法
java·服务器·前端
进阶的鱼1 小时前
React+ts+vite脚手架搭建(五)【登录篇】
前端·javascript
safestar20121 小时前
React深度实战:从组件抽象到性能优化的思考历程
前端·javascript·react.js
洗澡水加冰1 小时前
VSCode插件: 自动临时分配Theme以区分不同窗口
前端·typescript·visual studio code
我叫张小白。1 小时前
TypeScript类型断言与类型守卫:处理类型的不确定性
前端·javascript·typescript
阿笑带你学前端2 小时前
Flutter 实战:为开源记账 App 实现优雅的暗黑模式(Design Token + 动态主题)
前端
天渺工作室2 小时前
Chrome浏览器自带翻译的诡异Bug:ID翻译后竟然变化了
前端·chrome
daols882 小时前
vxe-table 如何实现跟 excel 一样的筛选框,支持字符串、数值、日期类型筛选
前端·javascript·excel·vxe-table
青青子衿悠悠我心2 小时前
围小猫秘籍
前端