使用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" /><buttonv-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天时间。