• 你不能不了解的Vue【模板语法上集】!


    🏅我是默,一个在CSDN分享笔记的博主。📚📚

    🌟在这里,我要推荐给大家我的专栏《Vue》。🎯🎯

    🚀无论你是编程小白,还是有一定基础的程序员,这个专栏都能满足你的需求。我会用最简单易懂的语言,带你走进Vue的世界,让你从零开始,一步步成为JAVA大师。🚀🏆

    🌈让我们在Vue的世界里畅游吧!🌈

    🎁如果感觉还不错的话请记得给我点赞哦!🎁🎁

    💖期待你的加入,一起学习,一起进步!💖💖

    一.Vue插值 

    1.文本

    2.html样式渲染

     3.表达式

    4.源码

    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>Vue入门title>
    8. <style type="text/css">
    9. .f30{
    10. font-size: 30px;
    11. }
    12. style>
    13. <div id="lz">
    14. <p>文本p>
    15. {{msg}}
    16. <p>样式渲染p>
    17. <b :class="msg3" v-html="msg2">b>
    18. <p>表达式p>
    19. {{num+1}}
    20. {{warn.substring(0,2)}}
    21. <input v-model="ok"/>
    22. {{ok==1? '你没了' : '一起上路'}}
    23. div>
    24. <script type="text/javascript">
    25. new Vue({
    26. el:"#lz",
    27. data(){
    28. return {
    29. msg:'刘兵要上百星王者' ,
    30. msg2:'刘兵要上百星王者' ,
    31. msg3:'f30',
    32. num:6,
    33. warn:'警察来咯',
    34. ok:1
    35. };
    36. }
    37. });
    38. script>
    39. head>
    40. <body>
    41. body>
    42. html>

    二.插值

    1.源码

    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>Vue入门title>
    8. <div id="lz">
    9. <p>v-if/v-else-if/v-elsep>
    10. <input v-model="score" /><br/>
    11. <b v-if="score <60">不行b>
    12. <b v-else-if="score >60 && score<70">还行b>
    13. <b v-else-if="score >=70 && score<80">一篇b>
    14. <b v-else-if="score >=80 && score<90">辣鸡b>
    15. <b v-else-if="score >=90 && score<100">ok'b>
    16. <p>v-showp>
    17. v-if 和v-show区别
    18. <b v-if="isShow">展示b>
    19. <b v-show="isShow">展示b>
    20. <p>v-forp>
    21. <i v-for="a in arr">{{a}}i>
    22. <i v-for=" u in user">{{u.name}}i>
    23. <p>下拉框p>
    24. <select>
    25. <option v-for="h in hoppy" :value="h.id">{{h.name}}option>
    26. select>
    27. <div id="" v-for="h in hoppy">div>
    28. <input type="checkbox" name="hoppy" :value="h.id"/>{{h.name}}
    29. div>
    30. <script type="text/javascript">
    31. new Vue({
    32. el:"#lz",
    33. data(){
    34. return {
    35. score:55,
    36. isShow:false,
    37. arr:[1,2,3,4],
    38. user:[
    39. {name:'lz',id:1},
    40. {name:'zx',id:2},
    41. {name:'nb',id:3},
    42. ],
    43. hoppy:
    44. [
    45. {name:'洗澡',id:1},
    46. {name:'是假的吧',id:2},
    47. {name:'撒旦解放和',id:3},
    48. ]
    49. };
    50. }
    51. });
    52. script>
    53. head>
    54. <body>
    55. body>
    56. html>

    2.v-if

    2.v-if 和v-show区别

    3.变量数据以及 下拉框和


    三.过滤器

    1.局部过滤器

    1.1语法

    new Vue({

     filters:{'filterName':function(value){}}    

    });

    在其中 filterName是过滤器名字,根据自己需求即可

    常见的过滤器使用

    vue允许你自定义过滤器,被用作一些常见的文本格式化,格式如下:

    {{ name | capitalize }}

    注1:过滤器函数接受表达式的值作为第一个参数

    注2:过滤器可以串联    

             {{ message | filterA | filterB }}

    注3:过滤器是JavaScript函数,因此可以接受参数:

             {{ message | filterA('arg1', arg2) }}

    1.2实例

    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="js/date.js">script>
    8. <title>局部过滤器title>
    9. <div id="app">
    10. {{msg|all}},{{msg|single}},{{msg|all|single}},{{msg|param(4,5)}}
    11. div>
    12. body>
    13. <script type="text/javascript">
    14. new Vue({
    15. el: '#app',
    16. data() {
    17. return {
    18. msg:"还是短发v江户时代列举法"
    19. };
    20. },
    21. filters:{
    22. 'all': function(val) {
    23. return val.substring(1, 4);
    24. },
    25. 'single':function(val){
    26. return val.substring(2,3);
    27. },
    28. 'param':function(val,start,end){
    29. return val.substring(start,end);
    30. }
    31. }
    32. })
    33. script>
    34. head>
    35. <body>
    36. body>
    37. html>

     1.3效果展示

    2.全局过滤器

    2.1语法

    全局过滤器

    Vue.filter('filterName', function (value) {

     // value 表示要过滤的内容

    });

     其核心作用为:在全局对于我们要过滤的内容进行过滤

     2.2实例

    导入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. <script src="js/date.js">script>
    8. <title>局部过滤器title>
    9. <script src="date.js" type="text/javascript" charset="utf-8">script>
    10. <body>
    11. <div id="app">
    12. {{msg}}_过滤之前<br>
    13. {{msg | all}}_过滤之后
    14. div>
    15. body>
    16. <script type="text/javascript">
    17. // 全局过滤器
    18. Vue.filter('all', function(value) {
    19. return fmtDate(value);
    20. });
    21. new Vue({
    22. el: '#app',
    23. data(){
    24. return{
    25. msg:new Date()
    26. }
    27. }
    28. })
    29. script>
    30. head>
    31. <body>
    32. body>
    33. html>

    导入时间的js用于验证方法

    1. //给Date类添加了一个新的实例方法format
    2. Date.prototype.format = function (fmt) {
    3. //debugger;
    4. var o = {
    5. "M+": this.getMonth() + 1, //月份
    6. "d+": this.getDate(), //日
    7. "h+": this.getHours(), //小时
    8. "m+": this.getMinutes(), //分
    9. "s+": this.getSeconds(), //秒
    10. "q+": Math.floor((this.getMonth() + 3) / 3), //季度
    11. "S": this.getMilliseconds() //毫秒
    12. };
    13. if (/(y+)/.test(fmt))
    14. fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    15. for (var k in o)
    16. if (new RegExp("(" + k + ")").test(fmt))
    17. fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
    18. return fmt;
    19. };
    20. function fmtDate(date, pattern) {
    21. var ts = date.getTime();
    22. var d = new Date(ts).format("yyyy-MM-dd hh:mm:ss");
    23. if (pattern) {
    24. d = new Date(ts).format(pattern);
    25. }
    26. return d.toLocaleString();
    27. };

    2.3效果图

    四.计算属性&监听属性

    1.计算属性

    1.1语法

       计算属性可用于快速计算视图(View)中显示的属性。这些计算将被缓存,并且只在需要时更新

       computed:{}

    1.2实例

    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="js/date.js">script>
    8. <title>计算属性title>
    9. <script src="date.js" type="text/javascript" charset="utf-8">script>
    10. <body>
    11. <div id="app">
    12. 千米:<input v-model="km"><br>
    13. 米:<input v-model="m">
    14. div>
    15. <script type="text/javascript">
    16. new Vue({
    17. el: '#app',
    18. data(){
    19. return{
    20. m:1000,
    21. km:1
    22. }
    23. },
    24. watch:{
    25. // v指的是m变量
    26. m: function(v){
    27. this.km = parseInt(v)/1000;
    28. },
    29. // v指的是km变量
    30. km: function(v){
    31. this.m = parseInt(v)*1000;
    32. }
    33. }
    34. })
    35. script>
    36. head>
    37. <body>
    38. body>
    39. html>

       2.监听属性

      2.1语法

    监听属性 watch,我们可以通过 watch 来响应数据的变化

       watch:{}

    2.2实例

    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="js/date.js">script>
    8. <title>监听属性title>
    9. <script src="date.js" type="text/javascript" charset="utf-8">script>
    10. <body>
    11. <div id="app">
    12. 单价:<input v-model="price">
    13. 数量:<input v-model="num">
    14. 总价:<input v-model="count">
    15. div>
    16. <script type="text/javascript">
    17. new Vue({
    18. el: '#app',
    19. data(){
    20. return{
    21. price:20,
    22. num:1
    23. }
    24. },
    25. computed:{
    26. count:function(){
    27. return this.price*this.num
    28. }
    29. }
    30. })
    31. script>
    32. head>
    33. <body>
    34. body>
    35. html>

     5.购物车(通过Vue实现)

    1.最基础代码购物车

    通过纯js代码实现,没有借助其他框架代码

    1. html>
    2. <html>
    3. <head>
    4. <title>Shopping Carttitle>
    5. <style>
    6. /* CSS 样式可以根据需求自行设计 */
    7. body {
    8. font-family: Arial, sans-serif;
    9. margin: 0;
    10. padding: 20px;
    11. }
    12. h1 {
    13. text-align: center;
    14. }
    15. table {
    16. width: 100%;
    17. border-collapse: collapse;
    18. }
    19. th, td {
    20. padding: 10px;
    21. text-align: left;
    22. border-bottom: 1px solid #ddd;
    23. }
    24. tr:hover {
    25. background-color: #f5f5f5;
    26. }
    27. .total {
    28. font-weight: bold;
    29. text-align: right;
    30. }
    31. .quantity-input {
    32. display: flex;
    33. justify-content: space-between;
    34. align-items: center;
    35. }
    36. .quantity-btn {
    37. cursor: pointer;
    38. background-color: #ddd;
    39. border: none;
    40. font-size: 1.2rem;
    41. padding: 4px;
    42. }
    43. .checkout-btn {
    44. display: block;
    45. margin-top: 20px;
    46. text-align: right;
    47. }
    48. style>
    49. head>
    50. <body>
    51. <h1>Shopping Carth1>
    52. <table>
    53. <thead>
    54. <tr>
    55. <th>商品名字th>
    56. <th>商品图片th>
    57. <th>商品价格th>
    58. <th>增加商品th>
    59. <th>删除商品th>
    60. tr>
    61. thead>
    62. <tbody>
    63. <tr>
    64. <td>小兵嘎子td>
    65. <td><img src="img/微信图片_20230918163623.jpg" width="50" height="50">td>
    66. <td class="price">¥19.99td>
    67. <td class="quantity-input">
    68. <button class="quantity-btn minus">-button>
    69. <input type="number" min="1" value="2">
    70. <button class="quantity-btn plus">+button>
    71. td>
    72. <td class="subtotal">¥39.98td>
    73. tr>
    74. tbody>
    75. <tfoot>
    76. <tr class="total">
    77. <td colspan="4">Total:td>
    78. <td id="total">$69.95td>
    79. tr>
    80. tfoot>
    81. table>
    82. <div class="checkout-btn">
    83. <button>Checkoutbutton>
    84. div>
    85. <script>
    86. const quantityInputs = document.querySelectorAll('.quantity-input input');
    87. quantityInputs.forEach(input => {
    88. input.addEventListener('change', updateSubtotal);
    89. });
    90. const minusBtns = document.querySelectorAll('.minus');
    91. const plusBtns = document.querySelectorAll('.plus');
    92. minusBtns.forEach((btn, index) => {
    93. btn.addEventListener('click', () => {
    94. let currentVal = Number(quantityInputs[index].value);
    95. if (currentVal > 1) {
    96. quantityInputs[index].value = currentVal - 1;
    97. updateSubtotal();
    98. }
    99. });
    100. });
    101. plusBtns.forEach((btn, index) => {
    102. btn.addEventListener('click', () => {
    103. let currentVal = Number(quantityInputs[index].value);
    104. quantityInputs[index].value = currentVal + 1;
    105. updateSubtotal();
    106. });
    107. });
    108. function updateSubtotal() {
    109. const prices = document.querySelectorAll('.price');
    110. const quantities = document.querySelectorAll('.quantity-input input');
    111. const subtotals = document.querySelectorAll('.subtotal');
    112. let total = 0;
    113. for (let i = 0; i < prices.length; i++) {
    114. const price = Number(prices[i].textContent.slice(1));
    115. const quantity = Number(quantities[i].value);
    116. const subtotal = price * quantity;
    117. subtotals[i].textContent = '$' + subtotal.toFixed(2);
    118. total += subtotal;
    119. }
    120. document.querySelector('#total').textContent = '$' + total.toFixed(2);
    121. }
    122. script>
    123. body>
    124. html>

     1.2效果展示

    2.通过Vue来实现购物车功能 

    2.1.代码

    小编,使用Vue.js和jQuery库实现。用户可以通过增加或减少商品的数量来调整购物车中商品的数量,同时总计费用会实时更新。

    在Vue实例中,小编定义了一items数组,每个元素代表一个商品对象,包含了商品名字、图片路径、价格和数量,总计属性calculateSubtotal方法用于计算每个商品的小计,calculateTotal方法用于计算购物车的总计。

    页面中使用了Vue的数据绑定和事件监听,当用户点击增加或减少数量按钮时,会触发对应的Vue方法来更新商品数量,并重新计算小计和总计。最终,页面会根据数据的变化进行实时回显。

    1. html>
    2. <html>
    3. <head>
    4. <title>Shopping Carttitle>
    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. <style>
    8. /* CSS 样式可以根据需求自行设计 */
    9. body {
    10. font-family: Arial, sans-serif;
    11. margin: 0;
    12. padding: 20px;
    13. }
    14. h1 {
    15. text-align: center;
    16. }
    17. table {
    18. width: 100%;
    19. border-collapse: collapse;
    20. }
    21. th, td {
    22. padding: 10px;
    23. text-align: left;
    24. border-bottom: 1px solid #ddd;
    25. }
    26. tr:hover {
    27. background-color: #f5f5f5;
    28. }
    29. .total {
    30. font-weight: bold;
    31. text-align: right;
    32. }
    33. .quantity-input {
    34. display: flex;
    35. justify-content: space-between;
    36. align-items: center;
    37. }
    38. .quantity-btn {
    39. cursor: pointer;
    40. background-color: #ddd;
    41. border: none;
    42. font-size: 1.2rem;
    43. padding: 4px;
    44. }
    45. .checkout-btn {
    46. display: block;
    47. margin-top: 20px;
    48. text-align: right;
    49. }
    50. style>
    51. head>
    52. <body>
    53. <div id="app">
    54. <table>
    55. <thead>
    56. <tr>
    57. <th>商品名字th>
    58. <th>商品图片th>
    59. <th>商品价格th>
    60. <th>商品数量th>
    61. <th>商品小计th>
    62. tr>
    63. thead>
    64. <tbody>
    65. <tr v-for="(item, index) in items" :key="index">
    66. <td>{{ item.name }}td>
    67. <td><img :src="item.image" width="50" height="50">td>
    68. <td><input v-model.number="item.price" />td>
    69. <td>
    70. <button @click="decrementQuantity(item)">-button>
    71. <input v-model.number="item.quantity" />
    72. <button @click="incrementQuantity(item)">+button>
    73. td>
    74. <td>{{ calculateSubtotal(item) }}¥td>
    75. tr>
    76. tbody>
    77. <tfoot>
    78. <tr class="total">
    79. <td colspan="4">总计:td>
    80. <td>{{ calculateTotal() }}¥td>
    81. tr>
    82. tfoot>
    83. table>
    84. div>
    85. <script type="text/javascript">
    86. new Vue({
    87. el: '#app',
    88. data() {
    89. return {
    90. items: [
    91. {
    92. name: '小兵嘎子',
    93. image: 'img/微信图片_20230918163623.jpg',
    94. price: 9.9,
    95. quantity: 1
    96. },
    97. {
    98. name: '小彪子',
    99. image: 'img/微信图片_20230918163616.jpg',
    100. price: 19.9,
    101. quantity: 1
    102. }
    103. ]
    104. }
    105. },
    106. methods: {
    107. incrementQuantity(item) {
    108. item.quantity++;
    109. },
    110. decrementQuantity(item) {
    111. if (item.quantity > 1) {
    112. item.quantity--;
    113. }
    114. },
    115. calculateSubtotal(item) {
    116. return (item.price * item.quantity).toFixed(2);
    117. },
    118. calculateTotal() {
    119. let total = 0;
    120. for (let i = 0; i < this.items.length; i++) {
    121. total += this.items[i].price * this.items[i].quantity;
    122. }
    123. return total.toFixed(2);
    124. }
    125. }
    126. })
    127. script>
    128. body>
    129. html>

    2.2展示

  • 相关阅读:
    Linux性能优化--性能追踪3:系统级迟缓(prelink)
    快速排序——及其改进
    JavaScript —— 算法思想之栈数据结构
    win32&mfc————win32消息机制
    ESP8266-Arduino编程实例-L3G4200D三轴陀螺仪驱动
    【高德地图】 覆盖物/画点/画折线/画多边形/画矩形/画圆
    论文解读:《DeepKla:一种基于注意力机制的深度神经网络,用于蛋白质赖氨酸乳酸化位点预测》
    (附源码)spring boot大学毕业设计管理系统 毕业设计 030945
    uniapp:tabBar点击后设置动画效果
    HTML5期末考核大作业 基于HTML+CSS+JavaScript仿王者荣耀首页 游戏网站开发 游戏官网设计与实现
  • 原文地址:https://blog.csdn.net/lz17267861157/article/details/132985808