Vue——01起步、模板语法、条件语句
通过以下代码获取Vue.js
script src="https://cdn.jsdelivr.net/npm/vue">
/script>
Vue是一种声明式的变成,而原生js是命令式编程
命令式编程(原生JS):
创建div元素,设置id属性
定义一个变量叫message
将message变量放在div元素中显示
修改message数据
将修改的元素替换到div
声明式编程(Vue):
创建一个div元素,设置id属性
定义一个vue对象,将div挂载在vue对象上
在vue对象内定义变量message,并绑定数据
将message变量放在div元素上显示
修改vue对象中的变量message,div元素数据自动改变
下面是基础用法:
Vue 构造器中有一个el 参数,它是 DOM 元素中的 id。
data 用于定义属性,本实例中写了一个属性为message。
methods 用于定义的函数,可以通过 return 来返回函数值
{ { } } 用于输出对象属性和函数返回值。
!DOCTYPE html>
html lang="en">
head>
meta charset="UTF-8">
meta http-equiv="X-UA-Compatible" content="IE=edge">
meta name="viewport" content="width=device-width, initial-scale=1.0">
title>
创建一个动态的div/title>
script src="js/vue.js">
/script>
/head>
body>
!-- 首先创建一个div盒子他的ID为box -->
div id="box">
{
{
message}
}
!-- {
{
}
}
用于输出对象属性和函数返回值。 -->
/div>
button @click="fn1()">
点击按钮/button>
!-- 点击事件的写法 -->
script>
var box = new Vue({
el:'#box', !-- 有一个el 参数,它是 DOM 元素中的 id,也就是上方div中的box -->
data:{
!-- data:定义属性 -->
message:'你好'!-- 如果要是多个属性就用,隔开 -->
}
,
methods:{
!-- methods 用于定义的函数,可以通过 return 来返回函数值-->
fn1:function(){
console.log('你点击了此按钮');
}
}
}
)
/script>
/body>
/html>
效果如下:
可以通过F12调用到控制台,去更改Vue对象的message的值
Vue模板语法:
指令
指令是带有 v- 前缀的特殊属性,用于在表达式的值改变时,将某些行为应用到 DOM 上。
v-html :有时候我们不希望直接输出h1> 欢迎学习Vue/h1> 这样的字符串,而输出被html自己转换的h1的文字,此时可以使用v-html
div id="box">
div v-html='message'>
/div>
/div>
script>
var box = new Vue({
el:'#box',
data:{
message:'h1>
欢迎学习Vue/h1>
',
}
,
}
)
/script>
效果如下:
v-on :监听DOM v-on:click 也可以写成 @click 后者是其语法糖
举个例子:
!-- 首先创建一个div盒子他的ID为box -->
div id="box">
!-- button v-on:click='add()'>
+/button>
-->
button @click='add()'>
+/button>
!-- 这两种方法都可以 -->
h2>
{
{
count}
}
/h2>
/div>
script>
var box = new Vue({
el:'#box',
data:{
message:'欢迎学习Vue',
count:0,
}
,
methods:{
add:function(){
this.count++
}
!-- 两种写法都可
add(){
this.count++
}
-->
}
}
)
/script>
效果如下:
v-once:表示该dom元素只渲染一次,之后数据改变,不会再次渲染
举个例子:
div id="box">
h2>
{
{
message}
}
/h2>
div v-once>
{
{
message}
}
/div>
div v-once>
{
{
message}
}
/div>
/div>
script>
var box = new Vue({
el:'#box',
data:{
message:'欢迎学习Vue',
}
,
}
)
/script>
v-model:用来在 input、select、textarea、checkbox、radio 等表单控件元素上创建双向数据绑定,根据表单上的值,自动更新绑定的元素的值。
div id="box">
p>
{
{
message }
}
/p>
input v-model="message">
/div>
script>
var box = new Vue({
el: '#box',
data: {
message: '欢迎学习Vue',
}
,
}
)
/script>
v-bind :指令被用来响应地更新 HTML 属性
!-- 完整语法 -->
a v-bind:href="url">
/a>
!-- 缩写 -->
a :href="url">
/a>
v-bind:title 我们也可以写成:title 后者是其语法糖,其作用当鼠标悬停在某段文字上时会出现提示
感兴趣的可以自己去尝试一下。
v-if:彻底消失
v-show此消失是等于display:none;经常做开销比较大的显示和消失,建议用v-show
div id="box">
h2 v-if="seen">
seen/h2>
h2 v-show="show">
show/h2>
/div>
script>
var box = new Vue({
el: '#box',
data: {
seen:true,
show:false,
}
,
}
)
/script>
v-pre:有时候我们期望直接输出{ { message} } 这样的字符串,而不是被{ { } } 语法转换的message的变量值,此时我们可以用v-pre标签
div id="box">
h1 v-pre>
{
{
message}
}
/h1>
/div>
script>
var box = new Vue({
el: '#box',
data: {
message:'你好'
}
,
}
)
/script>
效果如下:
v-text:覆盖dom元素中的数据,相当于js的innerHTML方法
div id="box">
h1 v-text='p'>
{
{
message}
}
/h1>
/div>
script>
var box = new Vue({
el: '#box',
data: {
message:'你好',
p:'我很好'
}
,
}
)
/script>
Vue.js条件语句:v-if、v-else-if、v-else直接看例子:
div id="box">
h2 v-if="age60">
不及格/h2>
h2 v-else-if="age95">
良好/h2>
h2 v-else>
优秀/h2>
/div>
script>
var box = new Vue({
el: '#box',
data: {
age:88
}
,
}
)
/script>
v-for :可以绑定数据到数组来渲染一个列表
切换栏效果:
!DOCTYPE html>
html lang="en">
head>
meta charset="UTF-8">
meta http-equiv="X-UA-Compatible" content="IE=edge">
meta name="viewport" content="width=device-width, initial-scale=1.0">
title>
遍历列表/title>
script src="js/vue.js">
/script>
style>
ul li{
cursor: pointer;
}
.active {
color: #f00;
}
/style>
/head>
body>
!-- 首先创建一个div盒子他的ID为box -->
div id="box">
ul>
!-- li v-for='(item,index) in movies' :key='index' :class="{
active:currentIndex === index}
"
@click="change(index)">
{
{
item}
}
-------{
{
index}
}
/li>
-->
!-- li v-for='(item,index) in movies' :key='index' :class="currentIndex === index?'active':''"
@click="change(index)">
{
{
item}
}
-------{
{
index}
}
/li>
-->
li v-for="(item,index) in movies" :key="index" :class="getStyle2(index)" @click="change(index)">
{
{
item}
}
-------{
{
index}
}
/li>
/ul>
/div>
script>
var box = new Vue({
el: '#box',
data: {
movies: [
"海王", "海贼王", "火影忍者", "复仇者联盟"
],
currentIndex: 0,
}
,
methods: {
change(index) {
// this.currentIndex = index
if (this.currentIndex === index)
return;
this.currentIndex = index
}
,
getStyle() {
return {
active: this.isActive
}
}
,
getStyle2(index) {
return {
active: this.currentIndex === index
}
}
}
}
)
/script>
/body>
/html>
获取图片以及链接用法:
!DOCTYPE html>
html lang="en">
head>
meta charset="UTF-8">
meta http-equiv="X-UA-Compatible" content="IE=edge">
meta name="viewport" content="width=device-width, initial-scale=1.0">
title>
v-bind/title>
script src="https://cdn.jsdelivr.net/npm/vue">
/script>
style>
img{
width: 300px;
}
/style>
/head>
body>
div id="box">
h2>
{
{
message}
}
/h2>
img :src="imgURL" alt="">
a :href="aHerf">
百度一下/a>
/div>
script>
var box = new Vue({
el:'#box',
data:{
message:'Hello Vue',
aHerf:"https://www.baidu.com",
imgURL:"https://desk-fd.zol-img.com.cn/g5/M00/02/00/ChMkJlbKw5aIY6PYAA0XnsktgwEAALG5QPtg4wADRe2915.jpg",
}
,
methods:{
}
}
)
/script>
/body>
/html>
效果如下:
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Vue——01起步、模板语法、条件语句
本文地址: https://pptw.com/jishu/8604.html
