Vue模板语法是Vue.js框架的一部分,使用它有以下几个优点:
- 简化了HTML代码编写:Vue模板语法支持简化HTML标签和属性的写法,使得代码更加简洁易读,提高开发效率。
- 数据绑定:Vue模板语法支持数据双向绑定,可以将数据自动更新到对应的DOM元素,从而避免了手动操作DOM的麻烦。
- 条件渲染:Vue模板语法支持条件渲染,可以根据特定条件来渲染特定的内容,从而提升用户体验。
- 循环渲染:Vue模板语法支持循环渲染,可以根据特定的数据进行循环渲染相同结构的元素,从而避免了重复编写代码的麻烦。 综上所述,Vue模板语法简化了HTML代码编写,提供了数据绑定、条件渲染、循环渲染等功能,使得Vue.js开发更加高效、可维护和易于扩展。
插值不仅可以显示数据和JavaScript表达式,还可以显示Vue.js指令、事件和组件等内容,可以帮助开发者更加方便地操作数据和DOM元素,提高开发效率和代码可读性。
需要注意的是,Vue模板语法插值只是一种数据绑定的方式,插值中的内容必须是一些安全的文本,不能够包含HTML标签或其他恶意代码,否则会出现安全问题。对于需要渲染HTML标签的内容,应该使用Vue.js提供的v-html指令
- html>
- <html>
- <head>
- <meta charset="utf-8">
- <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.js">script>
- <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js">script>
- <title>插值title>
-
- <style type="text/css">
- .f30{
- font-size:30px;
- }
- style>
- head>
- <body>
-
- <div id="app">
- <p>文本p>
- {{msg}}
- <p>html解析p>
- {{msg2}}<br>
- <b :class="msg3" v-html="msg2">b>
- <p>表达式p>
- {{mun+1}}
- {{warn.substr(0,2)}}
- <input v-model="ok" />
- {{ok?'成功了':'失败了'}}
- div>
-
- <script type="text/javascript">
- new Vue({
- el:"#app",
- data(){
- return{
- msg:'hello 小B 你相信光吗?',
- msg2:'hello 小B',
- msg3:'f30',
- num:6,
- warn:'听到我的招换了吗?',
- ok:true
- };
- }
- });
-
- script>
-
- body>
- html>

上述只是常用的一些指令,Vue.js还提供了很多强大的指令和功能,可以根据实际需要选择合适的指令使用。同时需要注意的是,在使用Vue指令时需要遵守Vue的规范,正确使用Vue指令才能发挥出它的优点,提高开发效率和代码质量。
- html>
- <html>
- <head>
- <meta charset="utf-8">
- <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.js">script>
- <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js">script>
- <title>指令title>
-
- head>
- <body>
- <div id="app">
- <p>v-if/v-else-if/v-elsep>
- <input v-model="score"/><br />
- <b v-if="score < 60">不及格b>
- <b v-else-if="score>60 && score< 70">及格b>
- <b v-else-if="score>70 && score< 80">一般b>
- <b v-else-if="score>80 && score< 90">良好b>
- <b v-else="">优秀b>
-
- <p>v-showp>
- v-if 与v-show的区别?<br>
- <b v-if="isShow">展示b>
- <b v-show="isShow">展示b>
- <p>v-forp>
- <i v-for="a in arr">{{a}} i>
- <i v-for="i,u in users">{{u.name}} {{i}}i>
- <select>
- <option v-for ="h in hobby" :value="h.id">{{h.name}}option>
- select>
-
- <div id="" v-for="h in hobby">
- <input type="checkbox" name="hobby" :value="h.id"/>{{h.name}}
- div>
- <p>动态参数p>
- <input v-model="evname" />
- <button v-on:[evname]="test">点我button>
- div>
- <script type="text/javascript">
- new Vue({
- el:"#app",
- data(){
- return{
- score:69,
- isShow:false,
- arr: [1,2,3,4],
- users:[{
- name:'lb',id:1
- },{
- name:'lx',id:2
- },{
- name:'lz',id:3
- },{
- name:'lw',id:4
- }],
- hobby:[{
- name:'洗脚',id:1
- },{
- name:'洗脚',id:2
- },{
- name:'洗脚',id:3
- },{
- name:'SPA',id:4
- }],
- evname:'click'
- };
- },
- methods:{
- test(){
- //单机事件,
- alert('点我试试!!! ');
- }
- }
- });
-
- script>
- body>
- html>

Vue.js的过滤器是一个强大的功能,可以让我们轻松地处理模板中的数据,提高代码的可读性和可维护性。同时需要注意的是,过滤器只适合于简单的数据格式化和处理,如果需要进行复杂的数据操作,应该使用计算属性或方法。
- html>
- <html>
- <head>
- <meta charset="utf-8">
- <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.js">script>
- <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js">script>
- <script src="date.js" type="text/javascript" charset="UTF-8">script>
- <title>过滤器title>
- head>
- <body>
- <div id="app">
- <p>局部过滤器基本应用p>
- {{msg}}<br />
- {{msg |filterA}}
- <p>局部过滤器串行应用p>
- {{msg}}<br />
- {{msg |filterA |filterB}}
- <p>局部过滤器传参p>
- {{msg | filterC(3,10)}}<br />
- <p>全局过滤器p>
- {{time}}<br />
- {{time | fmtDateFilter}}
-
- div>
- <script type="text/javascript">
- Vue.filter('fmtDateFilter', function(value) {
- //value表示要过滤的内容
- return fmtDate(value);
- });
- new Vue({
- el: "#app",
- filters: {
- 'filterA': function(v) {
- return v.substring(0, 6)
- },
- 'filterB': function(v) {
- return v.substring(2, 5)
- },
- 'filterC': function(v, begin, end) {
- return v.substring(begin, end);
- }
- },
- data() {
- return {
- msg: '想死了',
- time: new Date()
- }
- },
- methods: {
- test() {
- alert('点我试试!!!');
- }
- }
- });
- script>
- body>
- html>

- html>
- <html>
- <head>
- <title>排座title>
- <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js">script>
- head>
- <body>
- <div id="app">
- <h2>排座h2>
- <input type="text" v-model="seatInput1">
- <input type="text" v-model="seatInput2">
- <input type="text" v-model="seatInput3">
- <hr>
- <h3>用户:h3>
- <ul>
-
- <li v-for="user in filteredUsers" :key="user.id">{{ user.name }}li>
- ul>
- <hr>
- div>
-
- <script>
- new Vue({
- el: '#app',
- data: {
- seatInput1: '',
- seatInput2: '',
- seatInput3: '',
- users: [{
- id: 1,
- name: '刘鑫'
- },
- {
- id: 2,
- name: '刘文'
- },
- {
- id: 3,
- name: '刘兵'
- },
- {
- id: 4,
- name: '刘志'
- },
- {
- id: 5,
- name: '大B'
- }
- ]
- },
- /* 定义一个filteredUsers计算属性 */
- computed: {
- /* 使用filter方法来过滤users数组中的元素。filter方法接受一个回调函数作为参数,
- 该回调函数会对数组中的每个元素进行判断,并返回一个新的数组,其中包含满足条件的元素。 */
- filteredUsers() {
- return this.users.filter(
- /* 使用=>箭头函数的语法来定义一个匿名函数。这个匿名函数接受一个参数user,
- 表示users数组中的每个元素。 */
- user => {
- /* 使用逻辑运算符&&来判断user.name是否不等于seatInput1、seatInput2和seatInput3的值。
- 如果满足这个条件,说明user.name不等于任何一个输入框的值,那么这个元素就会被保留在过滤后
- 的数组中。 */
- return user.name !== this.seatInput1 &&
- user.name !== this.seatInput2 &&
- user.name !== this.seatInput3
- });
- }
- }
- });
- script>
- body>
- html>

Vue.js的计算属性是一个非常有用的功能,它可以提高代码的可读性和可维护性,同时也可以实现复杂的数据计算和处理。如果需要进行非响应式的数据操作,建议使用methods方法。
在上面的例子中,我们定义了一个数据属性message,并且使用watch选项来监听该数据属性的变化。当该数据属性发生变化时,会触发watch中对应的函数,实现对数据属性变化的响应。
需要注意的是,使用watch选项来监听数据属性的变化时,需要在Vue实例中显式地定义响应式的数据属性,并且需要将计算属性转为响应式的数据属性,以便在watch选项中进行监听。
总的来说,Vue.js的监听属性功能可以帮助我们实现对数据属性的变化响应,可以在实际开发过程中提高代码的可读性和可维护性。
- html>
- <html>
- <head>
- <meta charset="utf-8">
- <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.js">script>
- <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js">script>
- <title>计算属性监听属性title>
- <style type="text/css">
- .f30{
- font-size: 30px;
- }
- style>
- head>
- <body>
- <div id="app">
- <p>计算机属性p>
- 单价:<input v-model="price" />
- 数量:<input v-model="num" />
- 小计: {{count}}
- <p>监听属性p>
- 千米: <input v-model="km" /><br />
- 米:<input v-model="m" />
- div>
- <script>
- new Vue({
- el:'#app',
- data(){
- return{
- price:79,
- num:1,
- m:1000,
- km:1
- };
- },
- computed:{
- count:function(){
- return this.price * this.num;
-
- }
- },
- watch:{
- km:function(v){
- //v指的是被监听的属性,是km
- this.m =parseInt(v) * 1000;
- },
- m:function(v){
- //v指的是被监听的属性,是m
- this.km = parseInt(v)/1000;
- }
- }
- });
-
-
- script>
- body>
- html>
