• vue模板语法(上集)


    为什么要用Vue模板语法

    Vue模板语法是Vue.js框架的一部分,使用它有以下几个优点:

    1. 简化了HTML代码编写:Vue模板语法支持简化HTML标签和属性的写法,使得代码更加简洁易读,提高开发效率。
    2. 数据绑定:Vue模板语法支持数据双向绑定,可以将数据自动更新到对应的DOM元素,从而避免了手动操作DOM的麻烦。
    3. 条件渲染:Vue模板语法支持条件渲染,可以根据特定条件来渲染特定的内容,从而提升用户体验。
    4. 循环渲染:Vue模板语法支持循环渲染,可以根据特定的数据进行循环渲染相同结构的元素,从而避免了重复编写代码的麻烦。 综上所述,Vue模板语法简化了HTML代码编写,提供了数据绑定、条件渲染、循环渲染等功能,使得Vue.js开发更加高效、可维护和易于扩展。

    插值

    插值不仅可以显示数据和JavaScript表达式,还可以显示Vue.js指令、事件和组件等内容,可以帮助开发者更加方便地操作数据和DOM元素,提高开发效率和代码可读性。

    需要注意的是,Vue模板语法插值只是一种数据绑定的方式,插值中的内容必须是一些安全的文本,不能够包含HTML标签或其他恶意代码,否则会出现安全问题。对于需要渲染HTML标签的内容,应该使用Vue.js提供的v-html指令

    1. html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.js">script>
    6. <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js">script>
    7. <title>插值title>
    8. <style type="text/css">
    9. .f30{
    10. font-size:30px;
    11. }
    12. style>
    13. head>
    14. <body>
    15. <div id="app">
    16. <p>文本p>
    17. {{msg}}
    18. <p>html解析p>
    19. {{msg2}}<br>
    20. <b :class="msg3" v-html="msg2">b>
    21. <p>表达式p>
    22. {{mun+1}}
    23. {{warn.substr(0,2)}}
    24. <input v-model="ok" />
    25. {{ok?'成功了':'失败了'}}
    26. div>
    27. <script type="text/javascript">
    28. new Vue({
    29. el:"#app",
    30. data(){
    31. return{
    32. msg:'hello 小B 你相信光吗?',
    33. msg2:'hello 小B',
    34. msg3:'f30',
    35. num:6,
    36. warn:'听到我的招换了吗?',
    37. ok:true
    38. };
    39. }
    40. });
    41. script>
    42. body>
    43. html>

    指令

     上述只是常用的一些指令,Vue.js还提供了很多强大的指令和功能,可以根据实际需要选择合适的指令使用。同时需要注意的是,在使用Vue指令时需要遵守Vue的规范,正确使用Vue指令才能发挥出它的优点,提高开发效率和代码质量。

    1. html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.js">script>
    6. <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js">script>
    7. <title>指令title>
    8. head>
    9. <body>
    10. <div id="app">
    11. <p>v-if/v-else-if/v-elsep>
    12. <input v-model="score"/><br />
    13. <b v-if="score < 60">不及格b>
    14. <b v-else-if="score>60 && score< 70">及格b>
    15. <b v-else-if="score>70 && score< 80">一般b>
    16. <b v-else-if="score>80 && score< 90">良好b>
    17. <b v-else="">优秀b>
    18. <p>v-showp>
    19. v-if 与v-show的区别?<br>
    20. <b v-if="isShow">展示b>
    21. <b v-show="isShow">展示b>
    22. <p>v-forp>
    23. <i v-for="a in arr">{{a}}  i>
    24. <i v-for="i,u in users">{{u.name}}  {{i}}i>
    25. <select>
    26. <option v-for ="h in hobby" :value="h.id">{{h.name}}option>
    27. select>
    28. <div id="" v-for="h in hobby">
    29. <input type="checkbox" name="hobby" :value="h.id"/>{{h.name}}
    30. div>
    31. <p>动态参数p>
    32. <input v-model="evname" />
    33. <button v-on:[evname]="test">点我button>
    34. div>
    35. <script type="text/javascript">
    36. new Vue({
    37. el:"#app",
    38. data(){
    39. return{
    40. score:69,
    41. isShow:false,
    42. arr: [1,2,3,4],
    43. users:[{
    44. name:'lb',id:1
    45. },{
    46. name:'lx',id:2
    47. },{
    48. name:'lz',id:3
    49. },{
    50. name:'lw',id:4
    51. }],
    52. hobby:[{
    53. name:'洗脚',id:1
    54. },{
    55. name:'洗脚',id:2
    56. },{
    57. name:'洗脚',id:3
    58. },{
    59. name:'SPA',id:4
    60. }],
    61. evname:'click'
    62. };
    63. },
    64. methods:{
    65. test(){
    66. //单机事件,
    67. alert('点我试试!!! ');
    68. }
    69. }
    70. });
    71. script>
    72. body>
    73. html>

    过滤器

    Vue.js的过滤器是一个强大的功能,可以让我们轻松地处理模板中的数据,提高代码的可读性和可维护性。同时需要注意的是,过滤器只适合于简单的数据格式化和处理,如果需要进行复杂的数据操作,应该使用计算属性或方法。

    1. html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.js">script>
    6. <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js">script>
    7. <script src="date.js" type="text/javascript" charset="UTF-8">script>
    8. <title>过滤器title>
    9. head>
    10. <body>
    11. <div id="app">
    12. <p>局部过滤器基本应用p>
    13. {{msg}}<br />
    14. {{msg |filterA}}
    15. <p>局部过滤器串行应用p>
    16. {{msg}}<br />
    17. {{msg |filterA |filterB}}
    18. <p>局部过滤器传参p>
    19. {{msg | filterC(3,10)}}<br />
    20. <p>全局过滤器p>
    21. {{time}}<br />
    22. {{time | fmtDateFilter}}
    23. div>
    24. <script type="text/javascript">
    25. Vue.filter('fmtDateFilter', function(value) {
    26. //value表示要过滤的内容
    27. return fmtDate(value);
    28. });
    29. new Vue({
    30. el: "#app",
    31. filters: {
    32. 'filterA': function(v) {
    33. return v.substring(0, 6)
    34. },
    35. 'filterB': function(v) {
    36. return v.substring(2, 5)
    37. },
    38. 'filterC': function(v, begin, end) {
    39. return v.substring(begin, end);
    40. }
    41. },
    42. data() {
    43. return {
    44. msg: '想死了',
    45. time: new Date()
    46. }
    47. },
    48. methods: {
    49. test() {
    50. alert('点我试试!!!');
    51. }
    52. }
    53. });
    54. script>
    55. body>
    56. html>

    排座

    1. html>
    2. <html>
    3. <head>
    4. <title>排座title>
    5. <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js">script>
    6. head>
    7. <body>
    8. <div id="app">
    9. <h2>排座h2>
    10. <input type="text" v-model="seatInput1">
    11. <input type="text" v-model="seatInput2">
    12. <input type="text" v-model="seatInput3">
    13. <hr>
    14. <h3>用户:h3>
    15. <ul>
    16. <li v-for="user in filteredUsers" :key="user.id">{{ user.name }}li>
    17. ul>
    18. <hr>
    19. div>
    20. <script>
    21. new Vue({
    22. el: '#app',
    23. data: {
    24. seatInput1: '',
    25. seatInput2: '',
    26. seatInput3: '',
    27. users: [{
    28. id: 1,
    29. name: '刘鑫'
    30. },
    31. {
    32. id: 2,
    33. name: '刘文'
    34. },
    35. {
    36. id: 3,
    37. name: '刘兵'
    38. },
    39. {
    40. id: 4,
    41. name: '刘志'
    42. },
    43. {
    44. id: 5,
    45. name: '大B'
    46. }
    47. ]
    48. },
    49. /* 定义一个filteredUsers计算属性 */
    50. computed: {
    51. /* 使用filter方法来过滤users数组中的元素。filter方法接受一个回调函数作为参数,
    52. 该回调函数会对数组中的每个元素进行判断,并返回一个新的数组,其中包含满足条件的元素。 */
    53. filteredUsers() {
    54. return this.users.filter(
    55. /* 使用=>箭头函数的语法来定义一个匿名函数。这个匿名函数接受一个参数user,
    56. 表示users数组中的每个元素。 */
    57. user => {
    58. /* 使用逻辑运算符&&来判断user.name是否不等于seatInput1、seatInput2和seatInput3的值。
    59. 如果满足这个条件,说明user.name不等于任何一个输入框的值,那么这个元素就会被保留在过滤后
    60. 的数组中。 */
    61. return user.name !== this.seatInput1 &&
    62. user.name !== this.seatInput2 &&
    63. user.name !== this.seatInput3
    64. });
    65. }
    66. }
    67. });
    68. script>
    69. body>
    70. html>

    计算属性监听属性 

    计算属性

    Vue.js的计算属性是一个非常有用的功能,它可以提高代码的可读性和可维护性,同时也可以实现复杂的数据计算和处理。如果需要进行非响应式的数据操作,建议使用methods方法。

    监听属性 

    在上面的例子中,我们定义了一个数据属性message,并且使用watch选项来监听该数据属性的变化。当该数据属性发生变化时,会触发watch中对应的函数,实现对数据属性变化的响应。

    需要注意的是,使用watch选项来监听数据属性的变化时,需要在Vue实例中显式地定义响应式的数据属性,并且需要将计算属性转为响应式的数据属性,以便在watch选项中进行监听。

    总的来说,Vue.js的监听属性功能可以帮助我们实现对数据属性的变化响应,可以在实际开发过程中提高代码的可读性和可维护性。

    1. html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.js">script>
    6. <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js">script>
    7. <title>计算属性监听属性title>
    8. <style type="text/css">
    9. .f30{
    10. font-size: 30px;
    11. }
    12. style>
    13. head>
    14. <body>
    15. <div id="app">
    16. <p>计算机属性p>
    17. 单价:<input v-model="price" />
    18. 数量:<input v-model="num" />
    19. 小计: {{count}}
    20. <p>监听属性p>
    21. 千米: <input v-model="km" /><br />
    22. 米:<input v-model="m" />
    23. div>
    24. <script>
    25. new Vue({
    26. el:'#app',
    27. data(){
    28. return{
    29. price:79,
    30. num:1,
    31. m:1000,
    32. km:1
    33. };
    34. },
    35. computed:{
    36. count:function(){
    37. return this.price * this.num;
    38. }
    39. },
    40. watch:{
    41. km:function(v){
    42. //v指的是被监听的属性,是km
    43. this.m =parseInt(v) * 1000;
    44. },
    45. m:function(v){
    46. //v指的是被监听的属性,是m
    47. this.km = parseInt(v)/1000;
    48. }
    49. }
    50. });
    51. script>
    52. body>
    53. html>

     今天就分享到这了谢谢各位的支持,谢谢大家!

  • 相关阅读:
    mysql的基本用法
    车辆网络安全开发
    VUE(混入mixin、计算属性computed、监听watch)
    屏幕不清晰,可能是你的设置不正确
    前端的页面代码
    SpringCloud + SpringGateway 解决Get请求传参为特殊字符导致400无法通过网关转发的问题
    学透shell 带你写常用的100个 shell 脚本(一)定时删除过期文件
    Nginx-动静分离与 URLRwrite
    基于电动汽车的带时间窗的路径优化(Python&Matlab代码实现)
    CSS文本样式详解
  • 原文地址:https://blog.csdn.net/djssubddbj/article/details/133018342