当前位置: 首页 > article >正文

使用vitejs搭配vue.js,快速构建简单的网站案例展示Demo

使用vitejs搭配vue.js,快速构建简单的网站案例展示Demo!为了缩短开发周期,让自己心目中的项目可以快速上线,服务大众,我采用了这种架构插件的方式,下面的案例网站代码,基本上90%以上都是机器人,人工智能Chatgpt写的。欢迎大家交流互动。


1:由于代码较多,这里仅仅展示部分组件的代码内容。

<template>
  <div class="chou-container">
    <!-- 签筒图片 -->
    <img v-if="isShaking" :src="shakingImage" alt="签筒" class="chou-img" />
    <button @click="drawLottery" class="draw-button" v-if="isShow">抽签</button>

    <!-- 显示抽签后的签号 -->
    <div v-if="lotteryId !== null" class="lottery-id">
      <img :src="currentSignImage" alt="签图片" class="lottery-image" />
      <button
        v-if="lotteryId"
        @click="viewLotteryDetail()"
        class="view-detail-button"
      >
        查看解签详细信息
      </button>
    </div>
  </div>

  <!-- 弹窗遮罩层 -->
  <div v-if="isShowLotteryDetail" class="overlay" @click="closeDetail">
    <div class="detail-container">
      <button @click="closeDetail" class="close-button">关闭</button>
      <h1>解签详情</h1>
      <p>签号:{{ lotteryId }}</p>
      <div class="lottery-content">
        <p>{{ lotterySignContent }}</p>
      </div>
    </div>
  </div>
</template>

<script>
import { lotterySigns } from '/src/data/all.js'; // 导入数据

export default {
  data() {
    return {
      isShow: true,
      isShaking: false,
      shakingImage: "/img/qiantong.png",
      lotteryId: null,
      currentSignImage: "",
      isShowLotteryDetail: false, // 控制弹窗显示
      lotterySignContent: "", // 解签内容
    };
  },
  methods: {
    drawLottery() {
      this.isShaking = true;
      this.isShow = false;
      setTimeout(() => {
        this.isShaking = false;
        this.lotteryId = this.getRandomLotteryId();
        this.currentSignImage = this.getSignImage(this.lotteryId);
      }, 2000);
    },
    getRandomLotteryId() {
      return Math.floor(Math.random() * 5) + 1;
    },
    getSignImage(id) {
      const sign = lotterySigns.find((sign) => sign.id === id);
      return sign ? sign.image : "";
    },
    viewLotteryDetail() {
      const sign = lotterySigns.find((sign) => sign.id === this.lotteryId);
      if (sign) {
        this.lotterySignContent = sign.content;
      }
      this.isShowLotteryDetail = true;
    },
    closeDetail() {
      this.isShowLotteryDetail = false;
      this.$router.push('/'); // 跳转回首页
    },
  },
};
</script>

<style scoped>
.chou-container {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  height: 100vh; /* 设置容器高度为视窗高度 */
  background-color: #fff;
  padding: 20px;
  box-sizing: border-box;
}

.chou-img {
  max-width: 100%;
  height: auto;
  transition: transform 0.3s;
}

.draw-button {
  margin-top: 20px;
  padding: 10px 20px;
  background-color: #3498db;
  color: white;
  border: none;
  cursor: pointer;
  border-radius: 5px;
}

.lottery-id {
  margin-top: 20px;
  text-align: center;
}

.lottery-image {
  max-width: 80%;
  height: auto;
  margin-top: 10px;
}

/* 弹窗遮罩层 */
.overlay {
  position: fixed;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  background-color: rgba(0, 0, 0, 0.5); /* 半透明黑色遮罩 */
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 1000;
}

.detail-container {
  background-color: #fff;
  border-radius: 8px;
  padding: 20px;
  max-width: 600px;
  width: 90%; /* 适配移动端 */
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
  text-align: center;
  position: relative;
}

h1 {
  font-size: 24px;
  margin-bottom: 20px;
}

p {
  font-size: 18px;
  line-height: 1.6;
  margin-bottom: 15px;
}

.lottery-content {
  max-height: 400px; /* 限制解签内容区域的最大高度 */
  overflow-y: auto; /* 超出部分滚动 */
  padding: 10px;
  background-color: #fff;
  border: 1px solid #ddd;
  border-radius: 5px;
  margin-top: 10px;
  text-align: left;
}

.close-button {
  position: absolute;
  top: 20px;
  right: 20px;
  padding: 10px;
  background-color: #e74c3c;
  color: white;
  border: none;
  border-radius: 50%;
  cursor: pointer;
  font-size: 16px;
}

.close-button:hover {
  background-color: #c0392b;
}
</style>

2: 

这个是代码组件结构图。里面可以看见,使用了路由插件,我为了缩短时间,使用了本地存储的方式。把用到的信息,存入了一个all.js文件中。


3.本来打算是使用node.js搭配sqlite数据库存储信息的,但是自己之前不太熟练,再加上,本次项目是小点的内容,内容不多。干脆直接使用js文件存储了。


4:

可以看见在解签组件内,引入了这个数据文件all.js。


5: 

内容有100条信息,一个一个手工录入的。费了2个多小时完成录入。


6:实现的功能简单,就是点击抽签按钮,可以随机抽取到一个签号码,根据号码去查询对应的文本信息,展示给前端用户查看解签内容。


7:入口地址是:qian.tianjibk.com;大家可以自己浏览


 

如图所示,首页入口页面截图。

这个网站从开始设计到上架服务器,只用了1天时间。


http://www.kler.cn/a/442049.html

相关文章:

  • 【Linux系统编程】—— 深度解析进程等待与终止:系统高效运行的关键
  • 流量分析复现(第十八届信息安全大赛 第二届长城杯 )
  • LLM - 大模型 ScallingLaws 的 C=6ND 公式推导 教程(1)
  • 3. Go函数概念
  • 本地仓库管理之当前分支内的操作
  • Kubernetes(k8s)和Docker Compose本质区别
  • Java基础夯实——2.6 Java中锁
  • STM32-笔记3-驱动蜂鸣器
  • 警告 torch.nn.utils.weight_norm is deprecate 的参考解决方法
  • Scala 的迭代器
  • 基于遗传优化SVM支持向量机的数据分类算法matlab仿真,SVM通过编程实现,不使用工具箱
  • VMware Workstation Pro 17 与 虚拟机 ——【安装操作】
  • NoSQL数据库介绍与分类
  • 引言和相关工作的区别
  • AOP实现操作日志记录+SQL优化器升级
  • NFT市场回暖:蓝筹项目成为复苏主力,空投潮助推价格上涨
  • Android 13 Aosp SystemServer功能裁剪(PackageManager.hasSystemFeature())
  • Jenkins搭建并与Harbor集成上传镜像
  • 如何查看K8S集群中service和pod定义的网段范围
  • 备战美赛!2025美赛数学建模C题模拟预测!用于大家练手模拟!
  • Python之公共操作篇
  • AirSim 无人机不同视角采集不同场景的图片
  • SEO短视频矩阵系统源码开发概述
  • 域名历史是什么?怎么进行域名历史查询?
  • gorm源码解析(四):事务,预编译
  • Java基础知识(四) -- 面向对象(中)