前端应用开发实验:Vue的特性

目录

关于需要准备的内容,如Vue的下载就不多赘述了

实验目的

(1)掌握vue实例编写的语法和基本选项的使用

(2)在实际情境中灵活运用计算属性和监听属性

(3)理解vue的数据绑定相关指令,且在实际中灵活运用

实验内容

图片浏览功能

1.图片浏览功能实现:点击上下翻页按钮,实现图片浏览。

代码实现

vue 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>图片浏览器</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            background-color: #f4f4f4;
            margin: 0;
            padding: 0;
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
        }
        #app {
            text-align: center;
        }
        button {
            padding: 10px 20px;
            margin: 10px;
            background-color: #4CAF50;
            color: #fff;
            border: none;
            border-radius: 4px;
            cursor: pointer;
            transition: background-color 0.3s;
        }
        button:hover {
            background-color: #45a049;
        }
        img {
            max-width: 100%;
            height: auto;
            margin: 20px 0;
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
        }
    </style>
</head>
<body>
    <div id="app">
        <button v-on:click="left">上一张</button>
        <img :src="imgUrl[index]">
        <button v-on:click="right">下一张</button>
        <br>
        <button v-on:click="goods">购物车</button>
        <button v-on:click="money">美元换算</button>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
    <script type="text/javascript">
        new Vue({
            el:'#app',
            data:{
                index:0,
                imgUrl:[
                    "image1.jpg",//这里填写自己的存放的图片,不过用网络图片的url也可以
                    "https://th.bing.com/th/id/OIP.LHrQijaTBDxVvYZH1d_pYQHaEB?w=322&h=180&c=7&r=0&o=5&dpr=1.3&pid=1.7",//这里是网络上的一张图片的url
                    "pic3.jpg",
                ]
            },
            methods: {
                left:function(){
                    if(this.index > 0) {
                        this.index--;
                    }
                },
                right:function(){
                    if(this.index < this.imgUrl.length - 1) {
                        this.index++;
                    }
                },
                money:function(){
                    const nextPageUrl = 'http://localhost:5176/money'; // 替换为您想要跳转的网址
                    window.location.href = nextPageUrl;
                },
                goods:function(){
                    const nextPageUrl = 'http://localhost:5176/shopping'; // 替换为您想要跳转的网址
                    window.location.href = nextPageUrl;
                }
            },
        })
    </script>
</body>
</html>

效果

点击下一张就可以切换到另一张图片

简单购物车功能

2.简单购物车功能实现:要求计算出每种商品的总价和所有商品合计价格(要求精确到小数点后一位)

代码实现

vue 复制代码
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>简单购物车</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
</head>
<body>
<div id="app">
  <div class="panel panel-info">
    <div class="panel-heading">
      <h3 class="panel-title">宝珠兑换</h3>
    </div>
    <div class="panel-body">
      <div class="checkbox">
        <label>
          <input type="checkbox" v-model="checkAll">
          全选
        </label>
      </div>
      <ul class="list-group">
        <li class="list-group-item" v-for="(item, index) in list" :key="item.id">
          <div class="checkbox">
            <label>
              <input type="checkbox" v-model="item.checked">
              {{ item.name }}--{{ item.price }}*{{ item.quantity }}
              <button type="button" @click="item.quantity>1?item.quantity-=1:1"
                class="btn btn-success">-</button>
              <button type="button" @click="item.quantity+=1" class="btn btn-success">+</button>
            </label>
          </div>
        </li>
      </ul>
      <p>总价:{{ sumPrice }}</p>
    </div>
  </div>
</div>

<script>
new Vue({
  el: "#app",
  data: {
    list: [
      {
        id: 1,
        name: "界徐盛",
        price: 20,
        checked: false,
        quantity: 1
      },
      {
        id: 2,
        name: "神郭嘉",
        price: 101,
        checked: false,
        quantity: 1
      },
      {
        id: 3,
        name: "神甘宁",
        price: 70,
        checked: false,
        quantity: 1
      },
      {
        id: 4,
        name: "文鸯",
        price: 50,
        checked: false,
        quantity: 1
      }
    ]
  },
  computed: {
    checkAll: {
      set(v) {
        this.list.forEach(item => item.checked = v);
      },
      get() {
        return this.list.length === this.list.filter(item => item.checked).length;
      }
    },
    sumPrice() {
      return this.list.filter(item => item.checked).reduce((pre, cur) => {
        return pre + cur.price * cur.quantity;
      }, 0);
    }
  },
  methods: {
    save() {
      console.log(this.list.filter(item => item.checked));
    }
  }
});
</script>
</body>
</html>

效果


汇率换算功能

3.汇率换算功能实现:要求实现人民币和美元的兑换。

代码实现

vue 复制代码
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>汇率换算器</title>
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
</head>
<body>
<div id="app">
  <h2>汇率换算器</h2>
  <div>
    <label for="rmb">人民币 (CNY):</label>
    <input type="number" id="rmb" v-model.number="rmb">
  </div>
  <div>
    <label for="usd">美元 (USD):</label>
    <input type="number" id="usd" v-model.number="usd">
  </div>

<p>1美元等于{{ exchangeRate }}人民币</p>
</div>

<script>
new Vue({
  el: '#app',
  data: {
    rmb: 0,
    usd: 0,
    youka:0,
    exchangeRate: 6.45 // 假设的汇率,需要从实时API获取
    
  },
  watch: {
    rmb(newVal) {
      this.usd = newVal / this.exchangeRate;
    },
    usd(newVal) {
      this.rmb = newVal * this.exchangeRate;
    }
  }
});
</script>
</body>
</html>

效果


相关推荐
姚*鸿的博客17 分钟前
pinia在vue3中的使用
前端·javascript·vue.js
宇文仲竹36 分钟前
edge 插件 iframe 读取
前端·edge
Kika写代码39 分钟前
【基于轻量型架构的WEB开发】【章节作业】
前端·oracle·架构
天下无贼!2 小时前
2024年最新版Vue3学习笔记
前端·vue.js·笔记·学习·vue
Jiaberrr2 小时前
JS实现树形结构数据中特定节点及其子节点显示属性设置的技巧(可用于树形节点过滤筛选)
前端·javascript·tree·树形·过滤筛选
赵啸林2 小时前
npm发布插件超级简单版
前端·npm·node.js
我码玄黄2 小时前
THREE.js:网页上的3D世界构建者
开发语言·javascript·3d
罔闻_spider2 小时前
爬虫----webpack
前端·爬虫·webpack
吱吱鼠叔2 小时前
MATLAB数据文件读写:1.格式化读写文件
前端·数据库·matlab
爱喝水的小鼠3 小时前
Vue3(一) Vite创建Vue3工程,选项式API与组合式API;setup的使用;Vue中的响应式ref,reactive
前端·javascript·vue.js