vue+element-plus简洁完美实现古诗文网

目录

一、项目介绍

二、项目截图

1.项目结构图

2.首页(推荐)

3.诗文

4.名句

5.作者

6.古籍

7.我的

三、源码实现

1.路由配置

2.顶部

四、总结


一、项目介绍

项目在线预览:点击访问

本项目为vue项目,参考古诗文网官方样式为主题来设计元素,简洁美观;

技术要点:vue、 路由router、element-plus、vuex、axios、css、vue组件等;

二、项目截图

1.项目结构图

开发软件是webstorm,当然vscode、hbuilder等都可以,看自己习惯就行。

布局组件分别为顶部+功能内容+底部。

2.首页(推荐)

分为首页+底部,组件思想重复利用实现 ,首页顶部样式特别,因为有背景图,所以一起放在首页,并没有独立出去作为组件,其他页面顶部统一共用顶部组件。

3.诗文

顶部+内容+底部,内容设计为左右两部分。

组件如下图,通过路由实现内容切换,其他页面都同理:

4.名句

各个类目可收起展开。

5.作者

列表/略缩,默认列表,可点击切换。

6.古籍

列表/略缩,默认列表,可点击切换。

7.我的

三、源码实现

 项目以组件(顶部、底部)+主布局页面配合路由构思实现,可以通过组件思维重复利用共同的局部页面,简单且美观,也更加利于后期功能页面拓展和维护、修改等。

1.路由配置
import { createRouter, createWebHistory } from 'vue-router'
// import { useUserStore } from '@/stores'

const router = createRouter({
  // history: createWebHistory(import.meta.env.BASE_URL),
  history: createWebHistory(import.meta.env.VITE_APP_BASE_PATH),
  routes: [
    {
      name: '诗文',
      path: '/shiwens',
      component: () => import('@/components/layout/index.vue'),
      redirect: '/shiwens',
      children: [
        {
          name: '诗文',
          path: '/shiwens',
          component: () => import('@/views/shiwens/index.vue')
        },
        {
          name: '名句',
          path: '/mingjus',
          component: () => import('@/views/mingjus/index.vue')
        },
        {
          name: '作者',
          path: '/authors',
          component: () => import('@/views/authors/index.vue')
        },
        {
          name: '古籍',
          path: '/guwen',
          component: () => import('@/views/guwen/index.vue')
        },
        {
          name: '我的',
          path: '/user',
          component: () => import('@/views/user/index.vue')
        }
      ],
    },
    {
      path: '/',
      name: '首页',
      component: () =>
        import( /* webpackChunkName: "page" */ '@/views/home/index.vue')
    }
  ]
})

// 登录访问拦截 => 默认是直接放行的
// 根据返回值决定,是放行还是拦截
// 返回值:
// 1. undefined / true  直接放行
// 2. false 拦回from的地址页面
// 3. 具体路径 或 路径对象  拦截到对应的地址
//    '/login'   { name: 'login' }
// router.beforeEach((to) => {
//   // 如果没有token, 且访问的是非登录页,拦截到登录,其他情况正常放行
//   const useStore = useUserStore()
//   if (!useStore.token && to.path !== '/login3') return '/login3'
// })

export default router
2.顶部
<template>
    <div>
        <div class="maintopbc" style=" height:45px; background:url(https://ziyuan.guwendao.net/siteimg/24jie/%e6%83%8a%e8%9b%b0small.jpg) top center no-repeat; background-size:cover;">
            <div class="maintop" style="opacity:0.94;">
                <div class="cont">
                    <div class="left">
                        <a @click="toPath('/')">古诗文网</a>
                    </div>
                    <div class="right">
                        <div class="son1">
                            <a style="margin-left:1px;" @click="toPath('/')">推荐</a>
                            <a @click="toPath('/shiwens')" :class="this.$route.path==='/shiwens'?'menu-active':''">诗文</a>
                            <a @click="toPath('/mingjus')" :class="this.$route.path==='/mingjus'?'menu-active':''">名句</a>
                            <a @click="toPath('/authors')" :class="this.$route.path==='/authors'?'menu-active':''">作者</a>
                            <a @click="toPath('/guwen')" :class="this.$route.path==='/guwen'?'menu-active':''">古籍</a>
                            <a @click="toPath('/user')" :class="this.$route.path==='/user'?'menu-active':''">我的</a>
                        </div>
                        <div class="son2">
                            <div class="search">
                                <form action="">
                                    <input id="txtKey" name="value" type="text" value="" maxlength="40" autocomplete="off" style="height:25px; line-height:25px; float:left; padding-left:10px; width:255px; font-size:14px; clear:left; border:0px;">
                                    <input type="submit" style="float:right; width:23px; height:23px; clear:right; margin-top:2px; margin-right:4px; background-image:url(../../../public/img/docSearch230511.png); background-repeat:no-repeat; background-size:23px 23px; border:0px;cursor:pointer;" value="">
                                </form>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
            <div class="main3">
                <div style="width:300px; float:right;">
                    <div id="box"></div>
                </div>
            </div>
        </div>
    </div>
</template>

<script>
  export default {
    data() {
      return {

      };
    },
    mounted() {
    },
    methods: {
      toPath(path){
        this.$router.push({path: path});
      },
    }
  };
</script>

<style scoped>
    .menu-active{
        border-bottom:3px solid #5D6146;
        font-weight:bold;
        line-height:45px;
        height:43px;
    }

</style>

其他源码没法一一列举,看第四步骤。 

四、总结

项目页面完整,后续可能将不断升级,完善其他页面。

关注作者,及时了解更多好项目!

更多优质项目请看作者主页!

获取源码或如需帮助,可通过博客后面名片+作者即可!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/984131.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue项目通过内嵌iframe访问另一个vue页面,获取token适配后端鉴权(以内嵌若依项目举例)

1. 改造子Vue项目进行适配(ruoyi举例) (1) 在路由文件添加需要被外链的vue页面配置 // 若依项目的话是 router/index.js文件 {path: /contrast,component: () > import(/views/contrast/index),hidden: true },(2) 开放白名单 // 若依项目的话是 permission.js 文件 cons…

RuleOS:区块链开发的“破局者”,开启Web3新纪元

RuleOS&#xff1a;区块链开发的“破冰船”&#xff0c;驶向Web3的星辰大海 在区块链技术的浩瀚宇宙中&#xff0c;一群勇敢的探索者正驾驶着一艘名为RuleOS的“破冰船”&#xff0c;冲破传统开发的冰层&#xff0c;驶向Web3的星辰大海。这艘船&#xff0c;正以一种前所未有的姿…

指针的工作原理,函数的传值和传址

在C之中&#xff0c;指针是一个变量用于存储另外一个变量的内存地址。指针可以指向各种数据类型例如基础数据类型和自定义数据类型等。 在计算机之中的内存被划分为一个一个的存储单元&#xff0c;每个存储单元拥有唯一的内存地址&#xff0c;指针就是指向这些内存单元的地址。…

RISC-V汇编学习(三)—— RV指令集

有了前两节对于RISC-V汇编、寄存器、汇编语法等的认识&#xff0c;本节开始介绍RISC-V指令集和伪指令。 前面说了RISC-V的模块化特点&#xff0c;是以RV32I为作为ISA的核心模块&#xff0c;其他都是要基于此为基础&#xff0c;可以这样认为&#xff1a;RISC-V ISA 基本整数指…

基于控制障碍函数(Control Barrier Function)的二次规划(QP)控制

文章目录 研究背景主要贡献障碍函数&#xff08;Barrier Function&#xff09;&#xff08;一&#xff09;倒数障碍函数&#xff08;Reciprocal Barrier Function, RBF&#xff09;&#xff08;二&#xff09;归零障碍函数&#xff08;Zeroing Barrier Function, ZBF&#xff0…

软件工程:软件需求之需求分析方法

目录 前言 需求分析方法 工具和方法 具体分析方法 对运行环境的影响 ​编辑 前言 本文重点介绍开展软件需求分析的方法。 需求分析方法 工具和方法 软件需求可以维护在ALM系统中&#xff0c;譬如&#xff1a;doors&#xff0c;codeBeamer等&#xff0c;JIRA适合互联网行…

蓝桥杯—走迷宫(BFS算法)

题目描述 给定一个NM 的网格迷宫 G。G 的每个格子要么是道路&#xff0c;要么是障碍物&#xff08;道路用 11表示&#xff0c;障碍物用 0 表示&#xff09;。 已知迷宫的入口位置为 (x1​,y1​)&#xff0c;出口位置为 (x2​,y2​)。问从入口走到出口&#xff0c;最少要走多少…

Ubuntu无风扇工控机:解决精密仪器散热难题的利器

在现代工业自动化领域&#xff0c;精密仪器的控制对设备的稳定性、可靠性和静音性提出了极高的要求。而无风扇Ubuntu工控机&#xff0c;凭借其独特的无风扇设计和强大的计算能力&#xff0c;正逐渐成为精密仪器控制场景中的“无声守护者”。本文将深入探讨无风扇工控机在精密仪…

TCP协议与包头格式

patience is key in life&#xff01;&#xff01;&#xff01; 文章目录 一、什么是TCP&#xff1f;二、TCP的特点三、TCP为什么可靠&#xff1f;四、TCP的包头格式五、TCP的三次握手与四次挥手1.三次握手2.四次挥手 一、什么是TCP&#xff1f; TCP&#xff08;Transmission …

LeetCode Hot100刷题——反转链表(迭代+递归)

206.反转链表 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1]示例 2&#xff1a; 输入&#xff1a;head [1,2] 输出&#xff1a;[2,1]示例 3&#…

【Linux】http 协议

目录 一、http协议 &#xff08;一&#xff09;http 协议的概念 &#xff08;二&#xff09;URL的组成 &#xff08;三&#xff09;urlencode 和 urldecode 二、http 的协议格式 &#xff08;一&#xff09;http 请求方法 &#xff08;二&#xff09;http 响应状态码 &a…

ACE协议学习1

在多核系统或复杂SoC&#xff08;System on Chip&#xff09;中&#xff0c;不同处理器核心或IP&#xff08;Intellectual Property&#xff09;模块之间需要保持数据的一致性。常用的是ACE协议or CHI。 先对ACE协议进行学习 ACE协议&#xff08;Advanced Microcontroller Bu…

ES-分词器安装与使用详解

安装分词器 windows环境&#xff0c;分词器有2种安装方式&#xff0c;1.直接命令安装&#xff1b;2.压缩包安装 IK分词器 查看ik分词器文档&#xff0c;找到安装方式介绍 文档链接&#xff1a; 方式1 elasticsearch-plugin install https://get.infini.cloud/elasticsearch/an…

FY-3D MWRI亮温绘制

1、FY-3D MWRI介绍 风云三号气象卫星&#xff08;FY-3&#xff09;是我国自行研制的第二代极轨气象卫星&#xff0c;其有效载荷覆 盖了紫外、可见光、红外、微波等频段&#xff0c;其目标是实现全球全天候、多光谱、三维定量 探测&#xff0c;为中期数值天气预报提供卫星观测数…

P8686 [蓝桥杯 2019 省 A] 修改数组--并查集 or Set--lower_bound()的解法!!!

P8686 [蓝桥杯 2019 省 A] 修改数组--并查集 题目 并查集解析代码【并查集解】 Set 解法解析lower_bound代码 题目 并查集解析 首先先让所有的f&#xff08;i&#xff09;i&#xff0c;即每个人最开始的祖先都是自己&#xff0c;然后就每一次都让轮到那个数的父亲1&#xff08…

docker启动jenkins,jenkins中调用docker

在jenkins中执行docker 思路 jenkins中安装docker客户端&#xff0c;使用第三方的docker(需要付费)。jenkins中安装docker客户端&#xff0c;另一个容器中安装docker服务&#xff0c; docker-in-docker&#xff0c;需要特权模式&#xff0c;或者第三方的工具。jenkins中什么都…

【GPT入门】第9课 思维树概念与原理

【GPT入门】第9课 思维树概念与原理 1.思维树概念与原理2. 算24游戏的方法 1.思维树概念与原理 思维树&#xff08;Tree of Thought&#xff0c;ToT &#xff09;是一种大模型推理框架&#xff0c;旨在解决更加复杂的多步骤推理任务&#xff0c;让大模型能够探索多种可能的解决…

时态--02--⼀般将来时

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 ⼀般将来时1.肯定句结构:主am/is/aregoing to do(v.原型) 2.否定句结构:主am/is/arenotgoing to do(v.原型) 3.一般疑问句结构:Am/Is/Are(提句⾸)主going to do (v.…

模型压缩技术(二),模型量化让模型“轻装上阵”

一、技术应用背景 在人工智能蓬勃发展的浪潮下&#xff0c;大模型在自然语言处理、计算机视觉等诸多领域大放异彩&#xff0c;像知名的GPT以及各类开源大语言模型&#xff0c;其规模与复杂度持续攀升。然而&#xff0c;这一发展也带来了挑战&#xff0c;模型越大&#xff0c;对…

swift-5-汇编分析闭包本质

一、枚举、结构体、类都定义方法 方法占用对象的内存么&#xff1f; 不占用 方法的本质就是函数 方法、函数都存放在代码段&#xff0c;因为方法都是公共的&#xff0c;不管 对象一还是对对象二调用都是一样的&#xff0c;所以放在代码段&#xff0c;但是每个对象的成员不一样所…