Vue.js框架入门之基本语法(二)

上期整理了vue.js的简介和创建vue实例的步骤,详见博客—Vue.js框架入门之vue简介和基本语法(一)

现在来续写第二期—模板语法和样式绑定

目录

一、模板语法

 1、插值

#文本

 #HTML

#JavaScript表达式

2、指令

 #参数

代码演练

3、缩写

v-bind 缩写

v-on 缩写

二、Class 与 Style 绑定

#对象语法

#数组语法

#内联样式

代码演练


一、模板语法

Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。

 1、插值

#文本

数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值

<div id="app">
  <p>{{ message }}</p>
</div>

通过使用 v-once 指令,你也能执行一次性地插值,当数据改变时,插值处的内容不会更新。但请留心这会影响到该节点上的其它数据绑定:

<span v-once>这个将不会改变: {{ msg }}</span>

 #HTML

使用 v-html 指令用于输出 html 代码:

<p>Using mustaches: {{ rawHtml }}</p>
<p>Using v-html directive: <span v-html="rawHtml"></span></p>

#JavaScript表达式

Vue.js 都提供了完全的 JavaScript 表达式支持

<p>{{ number + 1 }}</p> //叠加

<p>{{ ok ? 'YES' : 'NO' }}</p> //三目运算符

<p>{{ message.split('').reverse().join('') }}</p> //反写

2、指令

当表达式的值改变时,将其产生的连带影响,响应式地作用于 DOM。

<p v-if="seen">现在你看到我了</p>

这里,v-if 指令将根据表达式 seen 的值的真假来插入/移除 <p> 元素。

 #参数

参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性、v-on 指令它用于监听 DOM 事件:

<div id="app">
    <p><a v-bind:href="url">vue.js</a></p>
    <div v-bind:class="color">test...</div>
    <a v-on:click="click1">...</a>  //绑定鼠标点击监听事件click1
</div>
    
<script>
new Vue({
  el: '#app',
  data: {
    url: 'http://www.baidu.com',
    color:'blue'
  }
    methods:{
//声明click1事件
		click1 : function () {
			console.log('click1......');
		}
	}
})
</script>
<style type="text/css">
.red{color:red;}
.blue{color:blue; font-size:100px;}
</style>

代码演练

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="vue.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<div id="app">
	{{msg}}
	<p>test{{ rawHtml }}</p>  <!-- 插入HTML文本 -->
	<p v-html="rawHtml"></p>  <!-- 插入HTML属性 -->
	<div v-bind:class="color">test...</div>  <!-- v-bind指令声明该元素的class属性 -->
	<p>{{ number + 1 }}</p>  <!-- JavaScript表达式-叠加 -->
	<p>{{ 1 == 1 ? 'YES' : 'NO' }}</p>  <!-- 三目运算符 -->
	<p>{{ message.split('').reverse().join('') }}</p>  <!-- 反拼写 -->
</div>
<!-- 脚本区 -->
<script type="text/javascript">
var vm = new Vue({
	el : "#app",
	data : {
		msg : "hi vue",
		rawHtml : '<span style="color:red">this is should be red</span>',
		color:'blue',
		number : 10,
		message : "vue"
	}
});
</script>
<!-- 样式区 -->
<style type="text/css">
.red{color:red;}
.blue{color:blue; font-size:100px;}
</style>

</body>
</html>

运行结果

3、缩写

v-bind 缩写

<!-- 完整语法 -->
<a v-bind:href="url">...</a>

<!-- 缩写 -->
<a :href="url">...</a>

<!-- 动态参数的缩写 (2.6.0+) -->
<a :[key]="url"> ... </a>

v-on 缩写

<!-- 完整语法 -->
<a v-on:click="doSomething">...</a>

<!-- 缩写 -->
<a @click="doSomething">...</a>

<!-- 动态参数的缩写 (2.6.0+) -->
<a @[event]="doSomething"> ... </a>

二、Class 与 Style 绑定

class 与 style 是 HTML 元素的属性,用于设置元素的样式,我们可以用 v-bind 来设置样式属性。

Vue.js v-bind 在处理 class 和 style 时, 专门增强了它。表达式的结果类型除了字符串之外,还可以是对象或数组。

#对象语法

我们可以传给 v-bind:class 一个对象,以动态地切换 class:

<div v-bind:class="{ active: isActive }"></div>

实例中将 isActive 设置为 true 显示了一个绿色的 div 块,如果设置为 false 则不显示:

你可以在对象中传入更多属性来动态切换多个 class。此外,v-bind:class 指令也可以与普通的 class 属性共存。当有如下模板:

<div class="static" 
v-bind:class="{ active: isActive, 'text-danger': hasError }"
></div>

和如下 data:

data: {
  isActive: true,
  hasError: false
}

结果渲染为:

<div class="static active"></div>

#数组语法

我们可以把一个数组传给 v-bind:class,以应用一个 class 列表:

<div v-bind:class="[activeClass, errorClass]"></div>
data: {
  activeClass: 'active',
  errorClass: 'text-danger'
}

渲染为:

<div class="active text-danger"></div>

#内联样式

v-bind:style 的对象语法十分直观——看着非常像 CSS,但其实是一个 JavaScript 对象。CSS 属性名可以用驼峰式 (camelCase) 或短横线分隔 (kebab-case,记得用引号括起来) 来命名:

<div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }"></div>
data: {
  activeColor: 'red',
  fontSize: 30
}

直接绑定到一个样式对象通常更好,这会让模板更清晰:

<div v-bind:style="styleObject"></div>
data: {
  styleObject: {
    color: 'red',
    fontSize: '13px'
  }
}

同样的,对象语法常常结合返回对象的计算属性使用。

代码演练

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="vue.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<div id="app">
	<div 
	class="test" 
	v-bind:class="[ isActive ? 'active' : '', isGreen ? 'green' : '']"    <!-- 对象/数组语法 -->
	style="width:200px; height:200px; text-align:center; line-height:200px;">  <!-- 内联样式 -->
		hi vue
	</div>
	
	<div :style="{color:color, fontSize:size, background: isRed ? '#FF0000' : ''}">
		hi vue
	</div>
</div>
<!-- 脚本区 -->
<script type="text/javascript">
var vm = new Vue({
	el : "#app",
	data : {
		isActive : true,
		isGreen : true,
		color : "#FFFFFF",
		size : '50px',
		isRed : true
	}
});
</script>
<!-- 样式区 -->
<style>
.test{font-size:30px;}
.green{color:#00FF00;}
.active{background:#FF0000;}
</style>
</body>
</html>

运行预览

后续会整理条件渲染和列表渲染~~~~

原创文章 7 获赞 15 访问量 2007

猜你喜欢

转载自blog.csdn.net/weixin_42402867/article/details/105621846