首页 > 其他分享 >vue前端页面搭建

vue前端页面搭建

时间:2024-05-29 09:54:58浏览次数:19  
标签:axios console log Header vue import 页面 搭建

十、页面搭建学习

10.1 安装element

在这里看一下有没有elementui,有就是下载成功了。

10.2 mainjs全局引入

import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';

Vue.use(ElementUI)

10.3简单试用

运行serve

10.4页面布局

(都可以直接查看官网:https://element.eleme.cn/#/zh-CN/component/container)
再src的components下面新建一个inde.vue,把官网代码复制进来

然后将index.vue加到App.vue里面去

运行时可能会出现的错误:
vue2Component name "Index" should always be multi-word
在package.json里面找到rules或者添加rules,关闭组件驼峰命名规则

"rules": {
      "vue/multi-word-component-names": "off"
    }

运行:

10.4创建全局样式表

在assets中创建global.css

然后在main.js里面导入一下

import './assets/global.css';

10.5 将侧边栏等代码拷贝到一个单独的vue里面





太方便了把,以后要修改侧边栏就只用去到vue里面修改,我之前都是一个个页面进行修改的。。

10.6 按照需求修改一下header

主要是添加点击事件

<template>
<!--  这里要加一层div,如果不加,就有两个节点就是<eldropdown>和<span>-->
  <div style="display: flex">
<!--    菜单栏伸缩-->
    <div>
      <i class="el-icon-s-fold" style="font-size: 25px"></i>
    </div>
    <div style="flex: 1;text-align: center">
      <span>XXXX系统</span>
    </div>
    <el-dropdown>
      <span>王小虎</span>
      <i class="el-icon-setting" style="margin-right: 15px;margin-left: 10px"></i>
      <el-dropdown-menu slot="dropdown">
        <el-dropdown-item @click.native="toUser">个人中心</el-dropdown-item>
        <el-dropdown-item @click.native="logout">退出登录</el-dropdown-item>
        <el-dropdown-item>删除</el-dropdown-item>
      </el-dropdown-menu>
    </el-dropdown>
  </div>
</template>

<script>
export default {
  name: "Header",
  methods:{
    toUser(){
      console.log("点击事件toUser")
    },
    logout(){
      console.log("logout被点击")
    }
  }
}
</script>

<style scoped>

</style>

F12打开开发者工具,点击后在控制台会出现console.log里面的值

10.7侧边栏实现收缩

Header.vue

<template>
<!--  这里要加一层div,如果不加,就有两个节点就是<eldropdown>和<span>-->
  <div style="display: flex">
<!--    菜单栏伸缩-->
    <div>
      <i class="el-icon-s-fold" style="font-size: 25px" @click="collapse"></i>
    </div>
    <div style="flex: 1;text-align: center">
      <span>XXXX系统</span>
    </div>
    <el-dropdown>
      <span>王小虎</span>
      <i class="el-icon-setting" style="margin-right: 15px;margin-left: 10px"></i>
      <el-dropdown-menu slot="dropdown">
        <el-dropdown-item @click.native="toUser">个人中心</el-dropdown-item>
        <el-dropdown-item @click.native="logout">退出登录</el-dropdown-item>
        <el-dropdown-item>删除</el-dropdown-item>
      </el-dropdown-menu>
    </el-dropdown>
  </div>
</template>

<script>
export default {
  name: "Header",
  methods:{
    toUser(){
      console.log("点击事件toUser")
    },
    logout(){
      console.log("logout被点击")
    },
    //侧边栏伸缩
    collapse(){
      this.$emit('doCollapse')
    }
  }
}
</script>

<style scoped>

</style>

Index.vue

<template>
  <el-container style="height: 100%; border: 1px solid #eee">
    <el-aside :width="aside_width" style="background-color: rgb(238, 241, 246)">
      <Aside :isCollapse="isCollapse"></Aside>
    </el-aside>

    <el-container style="height: 100%;">
      <el-header  style="text-align: right; font-size: 12px">
        <Header @doCollapse="doCollapse"></Header>
      </el-header>

      <el-main>
        <Main></Main>
      </el-main>
    </el-container>
  </el-container>

</template>

<script>
import Aside from "@/components/Aside";
import Header from "@/components/Header";
import Main from "@/components/Main";
export default {
  name: "Index",
  components: {Main, Header, Aside},
  data(){
    return{
      //将值传到Aside里面去
      isCollapse: false,
      aside_width: '200px'
    }
  },
  methods:{
    doCollapse(){
      //接收Header传来的东西
      console.log("Index.vue中调用Header.ver里面提交的doCollapse")
      this.isCollapse = !this.isCollapse
      if(!this.isCollapse){
        //展开
        this.aside_width='200px'
      }else {
        //收起
        this.aside_width='64px'
      }
    }
  }
}
</script>

<style scoped>
.el-header {
  background-color: #B3C0D1;
  color: #333;
  line-height: 60px;
}

.el-aside {
  color: #333;
}
</style>

Aside.vue

<template>
  <el-menu
      background-color="#545c64"
      text-color="#fff"
      active-text-color="#ffd04b"
      default-active="/Home"
      style="height: 100vh;"
      :collapse="isCollapse"
      :collapse-transition="false"
  >
    <el-menu-item index="/Home">
      <i class="el-icon-s-home"></i>
      <span>首页</span>
    </el-menu-item>

    <el-menu-item index="/First">
      <i class="el-icon-s-flag"></i>
      <span>导航1</span>
    </el-menu-item>

    <el-menu-item index="/Second">
      <i class="el-icon-s-data"></i>
      <span>导航2</span>
    </el-menu-item>

  </el-menu>
</template>

<script>
export default {
  name: "Aside",
  data(){
    return {
      // isCollapse:false
    }
  },
  props: {
    //接收Index里面传来的东西
    isCollapse: Boolean
  }
}
</script>

<style scoped>

</style>

Main.vue

<template>
  <el-table :data="tableData">
    <el-table-column prop="date" label="日期" width="140">
    </el-table-column>
    <el-table-column prop="name" label="姓名" width="120">
    </el-table-column>
    <el-table-column prop="address" label="地址">
    </el-table-column>
  </el-table>
</template>

<script>
export default {
  name: "Main",
  data() {
    const item = {
      date: '2016-05-02',
      name: '王小虎',
      address: '上海市普陀区金沙江路 1518 弄'
    };
    return {
      tableData: Array(10).fill(item)
    }
  }
}
</script>

<style scoped>

</style>

如果想要收起来之后,触碰显示导航栏对应的名字。可以在<span></span>里面添加
<span slot="title">导航1</span>

十一、axios处理跨域

为了前端后端一起开发,vue前端端口号是8080,那我们区springboot的application.yml里面改一下端口号8090,这样子两个端口不冲突。

10.1 安装axios

npm install axios --save

在main.js全局引入axios

import axios from "axios";
Vue.prototype.$axios=axios

10.2使用

可能会出现的错误:
No 'Access-Control-Allow-Origin' header is present on the requested resource
需要创建一个全局跨域类

package com.example.comment;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
//解决跨域问题:全局跨域类
@Configuration
public class CorsConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                //是否发送Cookie
                .allowCredentials(true)
                //放行哪些原始域
                .allowedOriginPatterns("*")
                .allowedMethods(new String[]{"GET", "POST", "PUT", "DELETE"})
                .allowedHeaders("*")
                .exposedHeaders("*");
    }
}

Main.vue里面:

methods:{
    myget(){
      this.$axios.get('http://localhost:8090/login00/loginAll').then(res=>{
        console.log(res.data)
      })
    },
    mypost(){
      this.$axios.post('http://localhost:8090/login00/listPageC',{}).then(res=>{
        console.log(res.data)
      })
    }
  },
  beforeMount() {
    // this.myget();
    this.mypost();
  }

从上面的代码可以看到这个网址一直重复写,可以在Main.js里面写一段这个:

Vue.prototype.$httpUrl='http://localhost:8090'

image

标签:axios,console,log,Header,vue,import,页面,搭建
From: https://www.cnblogs.com/hmy22466/p/18192217

相关文章

  • vue 项目发布到docker
    在vue项目目录下执行npmrunbuild 会生成dist文件夹,dist文件夹中的内容就是包含了打包好的静态文件 写dockerfile FROMnginx#将本地的dist文件夹复制到nginx默认的静态文件目录COPY./dist/usr/share/nginx/html执行 dockerbuild-tmy-vue-app.  ......
  • 【C++】【YOLO】搭建环境运行YOLO模型,完成目标识别
    1、安装VisualStudio,勾选C++和Python负荷 2、安装CUDA|Pytorch|Python这三者之间的版本关系很重要详情参考:Pycharm搭建CUDA,Pytorch教程(匹配版本,安装,搭建全保姆教程)_cuda12.3对应的pytorch版本-CSDN博客3、下载ultralytics所有代码进行修改(https://github.com/ultralyt......
  • AI智能体服务平台-智能客服系统-独立部署搭建
    平台简介LLM大模型是AI大脑,智能体就是AI的手和脚。我们一直在积极探索将大模型技术运用到有价值的业务场景上,而不是仅仅停留在娱乐性的聊天,探索出了以下组合使用方式:即时通讯人工客服系统+LLM大模型+RAG搜索增强知识库+RPA自动化机器人+浏览器扩展插件+语音合成TTS+Python......
  • springboot+vue+mybatis餐厅点菜管理系统+vue+PPT+论文+讲解+售后
    网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代,所以对于信息的宣传和管理就很关键。因此餐厅点菜信息的管理计算机化,系统化是必要的。设计开发餐厅点菜管理系统不......
  • springboot+vue+mybatis基于java web的公益网站的设计与实现+jsp+PPT+论文+讲解+售后
    现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本公益网站就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍......
  • hexo + vercel 构建你的静态页面博客系统(免费)
    参考资料注册vercel、安装hexo:https://blog.chitang.dev/posts/hexo-vercel-blog/插入图片:https://blog.csdn.net/m0_43401436/article/details/107191688QuickStart如果一切都安装完毕了,命令行下进入hexo工作目录新建博文的命令hexonewbravo你会在source/_post......
  • 【讲解如何在Android开发环境搭建】
    ......
  • Vue从入门到实战Day12~14 - Vue3大事件管理系统
    一、用到的知识Vue3compositionAPIPinia/Pinia持久化处理ElementPlus(表单校验,表格处理,组件封装)pnpm包管理升级Eslint+prettier更规范的配置husky(Githooks工具):代码提交之前,进行校验请求模块设计VueRouter4路由设计AI大模型开发一整个项目模块(掌握最新的开发方式)·......
  • Ollama+Chatbox,搭建本地AI聊天系统
        Ollama是一个开源的大型语言模型服务,提供了类似OpenAI的API接口和聊天界面,可以非常方便地部署最新版本的GPT模型并通过接口使用。支持热加载模型文件,无需重新启动即可切换不同的模型。Ollama的优势    提供类似OpenAI的简单内容生成接口,极易上手使用类似Ch......
  • Vue3 实现登录跳转页面
    点击登录按钮即跳转到新页面,而不是在当前页面加载组件App.Vue:<script>exportdefault{data(){return{}}}</script><template>//必须加上router-view,否则会显示空白页面<router-view></router-view></template><style></style>main......