1、引言
设计结课作业,课程设计无处下手,网页要求的总数量太多?没有合适的模板?数据库,java,python,vue,html作业复杂工程量过大?毕设毫无头绪等等一系列问题。你想要解决的问题,在微信公众号“coding加油站”中全部会得到解决
2、作品介绍
菜谱做菜网站系统采用html,css,vue技术来实现,符合所学知识体系,适用于常见的作业以及课程设计,需要获取更多的作品,请关注微信公众号:coding加油站,获取,如需更多资料,可在微信后台留言。欢迎大家来提问,交流学习。
2.1、作品简介方面
菜谱做菜网站系统采用常规方式来实现,符合绝大部分的要求。代码配置有相关文档讲解,如需从代码中学到知识点,那么这个作品将是你的不二之选
2.2、作品二次开发工具
此作品代码相对简单,基本使用课堂中所学知识点来完成,只需要修改相关的介绍文字,一些图片,就可以改为自己独一无二的代码,网页作品下载后可使用任意编辑软件(例如:DW、HBuilder、NotePAD 、Vscode 、Sublime 、Webstorm 所有编辑器均可使用)。
2.3、作品技术介绍
html网页作品技术方面:使用CSS制作了网页背景图、鼠标经过及选中导航变色效果、下划线等相关技术来美化相关界面,部分采用了javascript来做校验。 使用html5,以及css3等相关技术完成技术的布局,在本作品中,会使用常见的布局,常见的浮动布局,flex布局都会有使用到哦。同时在操作方面上运用了html5和css3,采用了div+css结构、表单、超链接、浮动、绝对定位、相对定位、字体样式、引用视频等基础知识,同时使用了一些js的相关知识。例如使用到了dom,和bom来获取浏览器的相关api,同时使用css对样式进行相关的美化,使得界面更加符合网页设计
vue作品技术方面:使用vue技术开发的网站,涉及常见的vue指令,如v-for,v-if,v-show,v-html等的使用,包含watch,计算属性等常见功能的开发,以及组件的使用,使用vue相关全家桶的使用,运用了v-router来作为路由,完全符合常见的网站开发技术。同时也会使用html5,以及css3等相关技术完成技术的布局,在本作品中,会使用常见的布局,常见的浮动布局,flex布局都会有使用到哦。
3、作品演示
【coding加油站】vue程序设计---模仿做菜菜谱网站
3.1、首页

相关代码:
- <template>
- <div class="home">
- <homeNavBar />
- <homeIconList/>
- <homeSwipe />
- <hiddenTopNav v-show="listShow" :listShow = "listShow"/>
-
- <tab1 />
- <tab2 />
- <tab3 />
- <tab4 />
- <tab5 />
- <tab6 />
- <bottomSwipe />
- <bottomBar />
- div>
- template>
-
- <script>
- import {reactive,toRefs,onMounted,ref} from 'vue';
- import bottomBar from '../components/bottomBar.vue';
- import homeSwipe from '../components/homePage/homeSwipe.vue'
- import homeNavBar from '../components/homePage/homeNavBar.vue'
- import homeIconList from '../components/homePage/homeIconList.vue'
- import hiddenTopNav from '../components/homePage/hiddenTopNav.vue'
- import tab1 from '../components/homePage/tab1.vue'
- import tab2 from '../components/homePage/tab2.vue'
- import tab3 from '../components/homePage/tab3.vue'
- import tab4 from '../components/homePage/tab4.vue'
- import tab5 from '../components/homePage/tab5.vue'
- import tab6 from '../components/homePage/tab6.vue'
- import bottomSwipe from '../components/homePage/bottomSwipe.vue'
- // @ is an alias to /src
- export default{
- components:{
- homeSwipe,
- homeNavBar,
- homeIconList,
- hiddenTopNav,
- tab1,
- tab2,
- tab3,
- tab4,
- tab5,
- tab6,
- bottomSwipe,
- bottomBar
- },
- setup(){
- const state = reactive({
- listShow: false,
- })
- onMounted(()=>{
- window.addEventListener('scroll', () => {
- let top = document.documentElement.scrollTop || document.body.scrollTop || window.pageYOffset
- if(top>=197){
- state.listShow = true;
- }
- else {
- state.listShow = false;
- }
- })
- })
- return {
- ...toRefs(state),
- }
- }
-
- }
- script>
3.2、课堂界面

相关代码:
- <template>
- <van-tabs v-model:active="active" >
- <transition enter-active-class="animate__animated animate__fadeInLeft animate__faster " >
- <van-tab title="推荐" class="rec-box">
- <div class="item" v-for="item in list">
- <div @click="jump(item.img,item.name)">
- <div class = "linkBox" >
- <img class="imgbox" :src="item.img" alt="">
- <span>{{item.name}}span>
- div>
- div>
- div>
- van-tab>
- transition>
- <transition enter-active-class="animate__animated animate__fadeInLeft animate__faster " >
- <van-tab title="减脂">
- <fatLoss />
- van-tab>
- transition>
- <transition enter-active-class="animate__animated animate__fadeInLeft animate__faster " >
- <van-tab title="分类">
-
- <kinds />
- van-tab>
- transition>
-
-
- van-tabs>
- <div style="height: 2rem" >div>
-
-
-
- template>
-
- <script>
- import { ref ,reactive ,toRefs,onMounted} from 'vue';
- import { useStore } from 'vuex';
- import { useRoute,useRouter } from 'vue-router';
- import fatLoss from '../classPage/fatLoss/fatLoss.vue'
- import kinds from '@/views/kinds.vue';
- export default {
- components:{
- fatLoss,
- kinds
- },
- setup(){
- const router = useRouter();
- const store = useStore();
- const state = reactive({
- list:[
- {
- img: require('@/assets/class/1.jpg'),
- name:'炒合菜',
- url:'cook1',
- },
- {
- img: require('@/assets/class/2.jpg'),
- name:'土豆炖牛肉',
- url:'cook2',
- },
- {
- img: require('@/assets/class/3.jpg'),
- name:'清蒸鲈鱼🐟',
- url:'cook3',
- },
- {
- img: require('@/assets/class/4.jpg'),
- name:'娃娃菜粉丝汤',
- url:'cook4',
- },
- {
- img: require('@/assets/class/5.jpg'),
- name:'番茄炒蛋',
- url:'cook5',
- },
- {
- img: require('@/assets/class/6.jpg'),
- name:'皮蛋拌黄瓜',
- url:'cook6',
- },
- {
- img: require('@/assets/class/7.jpg'),
- name:'虾仁芦笋',
- url:'cook7',
- },
- {
- img: require('@/assets/class/8.jpg'),
- name:'鱼香茄子',
- url:'cook8',
- },
- {
- img: require('@/assets/class/9.jpg'),
- name:'烧腐竹',
- url:'cook9',
- },
- {
- img: require('@/assets/class/10.jpg'),
- name:'蒜蓉金针菇',
- url:'cook10',
- },
-
-
- ],
- })
- onMounted(()=>{
- console.log(store.state.cook);
- })
- const jump = (img,text)=>{
- console.log(text);
- router.push({name:'cook1',params:{img:img,text:text}});
- //改进要用store存储,点击之后存到信息里显示
-
- }
- return {
- ...toRefs(state),
- jump
- }
- }
- }
-
- script>
-
- <style lang="less" scoped>
- .rec-box{
- width: 95%;
- height:auto;
- display:flex;
- flex-direction: row;
- flex-wrap: wrap;
- margin: -.2rem auto;
- justify-content: space-around;
- align-items: center;
- align-content: center;
-
- .item{
- width: 3.3rem;
- height: 4rem;
- display:flex;
- margin-top: .3rem;
- flex-direction: row;
- flex-wrap: wrap;
- justify-content:start;
- align-items:left;
- }
- .linkBox{
- width: 3.3rem;
- height: 4rem;
- display:flex;
- margin-top: .3rem;
- flex-direction: column;
- justify-content:center;
- align-items:left;
- img{
- width: 100%;
- height: 3.5rem;
- border-radius: .2rem;
- box-shadow: 2px 2px 2px rgb(178, 175, 175);
- }
- span{
- margin-top: .1rem;
- text-align: left;
- color: black;
- font-weight: 550;
- }
- }
-
-
- }
-
- style>
3.3、步骤界面

相关代码:
- <template>
- <div class="cook" >
- <div class="cookBar">
- <img class="btn1" :src = "imgs[0]" @click="$router.go(-1)">
- <img class="btn2" :src="imgs[1]" @click="share">
- div>
- <div class="cookBar1" >div>
- <img class="imgbox" :src="$route.params.img" alt="">
- <div class="text"> {{$route.params.text}}div>
- <div class="need">
- <div class="title">
- <span>用料span>
- <img :src="imgs[2]" alt="">
- div>
- <div class = "shadow">
- <div class="need-item" v-for="item in needs">
- <div class="item-name">{{item.name}}div>
- <div class="item-account">{{item.account}}div>
- div>
- div>
-
- <div class="steps" v-for="(item,index) in steps">
- <span>步骤{{index+1}}span>
- <img :src=item.img alt="">
- <div class="dis">{{item.dis}}div>
- <el-divider border-style="dashed" />
- div>
- div>
- div>
-
- <cookBottom @event="addCollect"> cookBottom>
- <van-share-sheet
- v-model:show="showShare"
- title="立即分享给好友"
- :options="options"
- />
- template>
-
- <script>
- import { StarFilled } from '@element-plus/icons-vue'
- import cookBottom from '@/components/classPage/cooks/cookBottom.vue';
- import {reactive,toRefs,onMounted,ref} from 'vue'
- import { useStore } from 'vuex';
- import {useRoute} from 'vue-router'
- export default {
- components: {
- cookBottom
- },
- setup(){
- const route = useRoute();
- const store = useStore();
- const showShare = ref(false);
- const options = [
- [
- { name: '微信', icon: 'wechat' },
- { name: '朋友圈', icon: 'wechat-moments' },
- { name: '微博', icon: 'weibo' },
- { name: 'QQ', icon: 'qq' },
- ],
- [
- { name: '复制链接', icon: 'link' },
- { name: '分享海报', icon: 'poster' },
- { name: '二维码', icon: 'qrcode' },
- { name: '小程序码', icon: 'weapp-qrcode' },
- ],
- ];
- const state = reactive({
- needs:[
- {
- name:'绿豆芽',
- account:'300克',
- },
- {
- name:'韭菜',
- account:'200克',
- },
- {
- name:'鸡蛋',
- account:'2个',
- },
- {
- name:'粉条',
- account:'一小把',
- },
- {
- name:'生抽',
- account:'2勺',
- },
- {
- name:'盐',
- account:'一小勺',
- },
- {
- name:'鸡精',
- account:'一小勺',
- },
- {
- name:'蒜末',
- account:'2瓣',
- },
- {
- name:'耗油',
- account:'一小勺',
- },
- ],
- steps:[
- {
- img: require('@/assets/cook/1.jpg'),
- dis:'绿豆芽洗净,控水'
- },
- {
- img: require('@/assets/cook/2.jpg'),
- dis:'绿豆芽洗净,控水'
- },
- {
- img: require('@/assets/cook/3.jpg'),
- dis:'绿豆芽洗净,控水'
- },
- {
- img: require('@/assets/cook/4.jpg'),
- dis:'绿豆芽洗净,控水'
- },
- {
- img: require('@/assets/cook/5.jpg'),
- dis:'绿豆芽洗净,控水'
- },
- {
- img: require('@/assets/cook/6.jpg'),
- dis:'绿豆芽洗净,控水'
- },
- {
- img: require('@/assets/cook/7.jpg'),
- dis:'绿豆芽洗净,控水'
- },
- {
- img: require('@/assets/cook/8.jpg'),
- dis:'绿豆芽洗净,控水'
- },
- {
- img: require('@/assets/cook/9.jpg'),
- dis:'绿豆芽洗净,控水'
- },
- ],
- imgs:[
- require('@/assets/class图标/1.png'),
- require('@/assets/class图标/2.png'),
- require('@/assets/class图标/3.png'),
- ],
-
- })
- onMounted(()=>{
- window.addEventListener('scroll',()=>{
- let top = document.documentElement.scrollTop || document.body.scrollTop || window.pageYOffset;
- let o = document.querySelector('.cookBar1');
- o.style.opacity = top/400;
- })
-
- })
- const share = ()=>{
- showShare.value = true;
- }
- const addCollect = ()=>{
- console.log('收到消息')
- store.commit('setCook1',route.params.img);
- store.commit('setCook2',route.params.text);
- store.state.cook.isCollect = true;
- console.log(store.state.cook.isCollect)
- console.log(store.state.cook);
-
- }
- return{
- ...toRefs(state),
- options,
- showShare,
- share,
- addCollect
- }
- }
-
- }
- script>
4、代码结构图

总结
以上就是本次项目的全部内容,需要交流或者获取代码请关注微信公众号:coding加油站获取