vue3配置导航栏和页脚(附代码)

一:前言

        本文主要是针对刚上手 Vue3 的初学者所写。涉及内容比较简单,没有太过于复杂的逻辑。因此有想学神入知识的可以看一下别的文章。

        本次实验的技术是 Vue3 + TypeScript + Element Plus 。因为这三个是在 Vue 开发中经常一起出现的。如果没有学过的话也不要紧,逻辑大体是一样的,不妨碍阅读。

        这里附上 Gitee 开源地址,有想要实践一下又懒得写代码的小伙伴可以直接下载运行。同时在本系列 Vue3 学习中,后续代码也都会更新在这个 Gitee 库中。

二:开发

涉及的 Element Plus 组件:

  • 布局容器:el-container
  • 单选:el-radio-group
  • 菜单:el-sub-menu
  • 面包屑:el-breadcrumb

项目目录如下:

各文件代码

1、views 下的 index.vue 

        该页面是用户的首页,其使用了布局容器,菜单等组件,以及自己封装的注入底部标签等。后续我们进行开发的时候,都是在<el-main>标签中开发,可以使用一个<keep-alive>进行缓存路由等。 

<template>
  <div class="common-layout">
    <!-- 设置布局格式,做菜单,右边上中下是,头,内容,脚 -->
    <el-container>
      <el-aside width="200px"><navbar></navbar></el-aside>
      <el-container class="container">
        <el-header><breadcrumb></breadcrumb></el-header>
        <el-main>这里是主页的内容</el-main>
        <el-footer><footers></footers></el-footer>
      </el-container>
    </el-container>
  </div>
</template>

<script setup>
import { ElButton, ElInput } from 'element-plus'
import { ref } from 'vue'
import navbar from '@/components/navbar.vue'
import breadcrumb from '@/components/breadcrumb.vue'
import footers from '@/components/footers.vue'

</script>


<style>
.common-layout{
  margin-top: 15px;
}
.container{
  padding:5px 0 0 15px;
}
.input {
  display: inline;
  margin: 20px 30px;
}

.button {
  width: 90px;
}
</style>

2、navbar组件

        这个组件是我们右侧的菜单组件,目前的话是使用的纯静态来写的,后续会进行完善,届时通过配置路由的方式来同步菜单。 

<template>
    <el-radio-group v-model="isCollapse" style="margin-bottom: 20px">
      <el-radio-button :label="false">expand</el-radio-button>
      <el-radio-button :label="true">collapse</el-radio-button>
    </el-radio-group>
    <el-menu
      default-active="2"
      class="el-menu-vertical-demo"
      :collapse="isCollapse"
      @open="handleOpen"
      @close="handleClose"
    >
      <el-sub-menu index="1">
        <template #title>
          <el-icon><location /></el-icon>
          <span>Vue3 练习</span>
        </template>
        <el-menu-item-group>
          <template #title><span>主要知识点</span></template>
          <el-menu-item index="1-1">store</el-menu-item>
          <el-menu-item index="1-2">Router</el-menu-item>
        </el-menu-item-group>
        <el-menu-item-group title="次级知识点">
          <el-menu-item index="1-3">Elements Plus</el-menu-item>
        </el-menu-item-group>
        <el-sub-menu index="1-4">
          <template #title><span>打包</span></template>
          <el-menu-item index="1-4-1">Vite知识</el-menu-item>
        </el-sub-menu>
      </el-sub-menu>
      <el-menu-item index="2">
        <el-icon><icon-menu /></el-icon>
        <template #title>TypeScript</template>
      </el-menu-item>
      <el-menu-item index="3" disabled>
        <el-icon><document /></el-icon>
        <template #title>Vite</template>
      </el-menu-item>
      <el-menu-item index="4">
        <el-icon><setting /></el-icon>
        <template #title>Pina</template>
      </el-menu-item>
    </el-menu>
  </template>
  
  <script lang="ts" setup>
  import { ref } from 'vue'
  import {
    Document,
    Menu as IconMenu,
    Location,
    Setting,
  } from '@element-plus/icons-vue'
  
  const isCollapse = ref(true)
  const handleOpen = (key: string, keyPath: string[]) => {
    console.log(key, keyPath)
  }
  const handleClose = (key: string, keyPath: string[]) => {
    console.log(key, keyPath)
  }
  </script>
  
  <style>
  .el-menu-vertical-demo:not(.el-menu--collapse) {
    width: 200px;
    min-height: 400px;
  }
  </style>
  

3、breadcrumb组件

        该组件同样是使用的 Element Plus 自带的面包屑组件,一样是静态的,后面应当根据路由守卫,进行跳转配置标签。

<template>
    <el-breadcrumb separator="/">
      <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
      <el-breadcrumb-item
        ><a href="/">promotion management</a></el-breadcrumb-item
      >
      <!-- <el-breadcrumb-item>promotion list</el-breadcrumb-item>
      <el-breadcrumb-item>promotion detail</el-breadcrumb-item> -->
    </el-breadcrumb>
  </template>
  

4、footers

        页脚组件是我们自己封装的,可以根据自己的喜欢来设置布局,只是一些简单的CSS样式。由于我们这里还没有写太多的内容,因此没有吧这个放在最下面,不然会有些不美观。有需要的小伙伴可以将CSS中注释掉的两行代码解开。 

<template>
    <div class="app-foot">
        {{ footerMsgCopyright }}
        <span class="source">{{ footerMsgName }}</span>
    </div>
</template>
<script setup>
    // 版权说明的文字
    const footerMsgCopyright = 'Copyright © 2020-2021 xxxx平台 - Powered By ';
    // 单位
    const footerMsgName = 'xxxx实验室'
</script>

<style scoped>
.app-foot {
    /* footer 固定在页面底部 */
    min-height: 35px;
    background-color: #eeeeee;
    width: 100%;
    font-size: 14px;
    display: flex;
    align-items: center;
    justify-content: center;
    /* position: fixed; */
    /* bottom: 0px; */
}

.source {
    font-weight: 600;
}
</style>

5、router下的index.ts

        这个是路由配置页面,没有了解过路由配置的小伙伴可以参考我之前的文章。

Vue3路由配置-CSDN博客 

import { createRouter, createWebHistory } from 'vue-router'

const routes = [
  {
    path: '/',
    name: 'index',
    component: () => import('../views/index.vue')
  }
]

const router = createRouter({
  // history: createWebHistory(process.env.BASE_URL),
  history: createWebHistory(import.meta.env.BASE_URL),
  routes
})

export default router

三:总结

        这篇文章是很简单的,写的东西也都是非常基础的,并没有进行很复杂的传值等。刚上手的小伙伴可以琢磨一下。最后把项目的gitee地址放上去,需要的小伙伴可以自行下载。

乾辰/vue3全家桶练习icon-default.png?t=N7T8https://gitee.com/qianchen12138/vue3-family-bucket-practice

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Vue.js 是一个用于构建用户界面的开源 JavaScript 框架,非常适合用来开发企业官网。以下是一个示例代码片段,用于展示如何利用 Vue.js 开发企业官网: 1. 首先,在 HTML 文件中引入 Vue.js 库: ```html <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> ``` 2. 创建一个 Vue 实例: ```javascript var app = new Vue({ el: '#app', data: { companyName: 'ABC 公司', navItems: ['首页', '关于我们', '产品', '新闻', '联系我们'], currentNavItem: '首页' }, methods: { setActiveNavItem: function (navItem) { this.currentNavItem = navItem; } } }); ``` 3. 在 HTML 文件中定义企业官网的布局和内容,并绑定数据: ```html <div id="app"> <header> <h1>{{ companyName }}</h1> <nav> <ul> <li v-for="item in navItems" :class="{ 'active': item === currentNavItem }" @click="setActiveNavItem(item)">{{ item }}</li> </ul> </nav> </header> <main> <section v-if="currentNavItem === '首页'"> <!-- 首页内容 --> </section> <section v-if="currentNavItem === '关于我们'"> <!-- 关于我们内容 --> </section> <section v-if="currentNavItem === '产品'"> <!-- 产品内容 --> </section> <section v-if="currentNavItem === '新闻'"> <!-- 新闻内容 --> </section> <section v-if="currentNavItem === '联系我们'"> <!-- 联系我们内容 --> </section> </main> <footer> <!-- 页脚内容 --> </footer> </div> ``` 4. 在 CSS 文件中定义样式,美化企业官网的外观: ```css /* 样式规则 */ ``` 通过上述代码,我们可以利用 Vue.js 构建一个简单的企业官网,实现导航栏的切换和页面内容的动态展示。开发者可以根据具体需求,进一步完善和扩展官网功能。 ### 回答2: Vue开发企业官网的代码可以实现一个动态、交互式的网站。首先,我们可以使用Vue CLI来创建一个新的Vue项目: 1. 安装Vue CLI:在终端中运行`npm install -g @vue/cli`来全局安装Vue CLI。 2. 创建新项目:在终端中运行`vue create project-name`来创建一个新的Vue项目。可以选择默认配置或手动选择配置。 3. 安装其他必要的插件:使用`npm install`或`yarn install`命令来安装其他所需的依赖插件,例如Vue Router、Vuex等。 4. 创建组件:在src目录下创建各个组件的.vue文件,例如Header.vue、Footer.vue等。在组件中编写HTML代码Vue的模板语法,定义组件样式和交互逻辑。 5. 配置路由:在src目录下创建router目录,并在其下创建index.js文件。在index.js文件中配置路由信息,定义各个页面对应的路由路径和组件。 6. 管理状态:在src目录下创建store目录,并在其下创建index.js文件。在index.js文件中配置Vuex的状态管理,定义全局共享的数据、变量和方法。 7. 引入外部资源:如果需要使用外部资源,例如字体、图标等,可以在public目录下的index.html文件中添加相应的引用。 8. 构建页面结构:在App.vue文件中编写整体的网站结构,包含Header组件、Footer组件以及路由视图组件。 9. 开发各个页面:根据设计稿或需求文档,分别开发各个页面的视图组件,例如首页、产品展示页、新闻资讯页等。 10. 添加动态效果:使用Vue的指令、动画和过渡效果等功能,为网站添加动态效果,使用户体验更加流畅和友好。 11. 部署上线:使用`npm run build`命令来构建生产环境的代码,然后将生成的dist目录中的文件上传到服务器上进行部署。 以上是Vue开发企业官网的简要步骤。在实际开发中,我们还需要根据具体需求进行调整和改进,例如优化页面性能、添加表单验证、处理数据请求等。Vue的灵活性和易用性使得它成为开发企业官网的一个理想选择。 ### 回答3: Vue是一个流行的前端框架,它被广泛用于开发企业官网。下面是一个示例代码演示如何使用Vue来开发企业官网: 首先,我们需要创建一个Vue实例。可以通过引入Vue库,并在HTML模板中添加一个Vue根组件进行实例化。 ```javascript import Vue from 'vue'; new Vue({ el: '#app', data: { // 在这里定义需要用到的数据 }, methods: { // 在这里定义需要用到的方法 }, components: { // 在这里注册需要用到的组件 } }); ``` 接下来,在HTML模板中,我们可以使用Vue提供的模板语法来动态渲染页面内容。比如,我们可以使用`v-for`指令来循环遍历一个数组,并使用`v-bind`指令来绑定属性值。 ```html <div id="app"> <ul> <li v-for="item in items" :key="item.id">{{ item.name }}</li> </ul> </div> ``` 然后,在Vue实例的`data`选项中,我们可以定义一个`items`数组,并在方法中填充数据。 ```javascript new Vue({ el: '#app', data: { items: [] }, methods: { fetchData() { // 通过Ajax或其他方式获取数据,并将数据填充到items数组中 } }, created() { // 在Vue实例创建时调用fetchData方法来获取数据 this.fetchData(); } }); ``` 最后,我们可以在Vue组件中注册事件监听器,比如点击按钮触发`fetchData`方法重新获取数据,并更新页面内容。 ```javascript Vue.component('refresh-button', { template: '<button @click="fetchData">Refresh</button>', methods: { fetchData() { // 调用父组件的fetchData方法来重新获取数据 this.$emit('fetch-data'); } } }); ``` 通过这样的方式,我们就可以使用Vue来开发企业官网。当然,以上只是一个简单的示例代码,实际的开发中还需要考虑更多的功能和效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暴怒的代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值