【Vue2+Element ui通用后台】项目搭建和vue-router使用

news2024/11/20 10:37:41

文章目录

  • 介绍
  • 创建项目并引入Element-ui
    • 按需引入
    • 全局引入
  • vue-router
    • 安装
    • 嵌套路由

介绍

通过这个系列文章,我们将学到:
1.项目搭建+使用element实现首页布局
2.顶部导航菜单及与左侧导航联动的面包屑实现
3.封装—个ECharts组件
4.封装一个Form表单组件和Table表格组件
5.企业开发之权限管理思路讲解

创建项目并引入Element-ui

首先我们创建项目,在 D 盘中打开 cmd,执行 vue create my-app 来创建项目,我们选择 vue2 来创建这个后台项目

用 webstorm 打开项目,我们来安装 Element-ui,执行 npm i element-ui -S即可

按需引入

之后我们按需引入,首先我们需要安装插件,执行npm install babel-plugin-component -D,然后修改 babel.config.js

module.exports = {
  presets: [
    '@vue/cli-plugin-babel/preset',
    ["@babel/preset-env", { "modules": false }]
  ],
  "plugins": [
    [
      "component",
      {
        "libraryName": "element-ui",
        "styleLibraryName": "theme-chalk"
      }
    ]
  ]
}

然后就可以在 main.js 中把需要的组件引入进来,例如我们需要用到 Button 和 Row,修改 main.js

import Vue from 'vue'
import App from './App.vue'
import { Button, Row } from 'element-ui';

Vue.config.productionTip = false
// 按需引入
Vue.use(Button);
Vue.use(Row);

new Vue({
  render: h => h(App),
}).$mount('#app')

然后我们在 App.vue 中我们使用 Button

<template>
  <div id="app">
    <el-row>
      <el-button>默认按钮</el-button>
      <el-button type="primary">主要按钮</el-button>
      <el-button type="success">成功按钮</el-button>
      <el-button type="info">信息按钮</el-button>
      <el-button type="warning">警告按钮</el-button>
      <el-button type="danger">危险按钮</el-button>
    </el-row>
  </div>
</template>

<script>
</script>

执行 npm run serve执行项目看效果:
在这里插入图片描述
按需引入虽然繁琐,但是打包体积小,package.json 中的 scripts 中是我们能执行的命令
在这里插入图片描述
我们执行 npm run build 来进行打包,执行结束后我们会发现项目下多了 dist 文件夹,这个文件夹
在这里插入图片描述
点进去发现有 index.html、css、js 和 字体图标,这就是我们打包之后的静态文件,将来上线的时候就是需要将这些打包之后的文件进行部署
在这里插入图片描述
我们看下它的大小目前是 747kb
在这里插入图片描述
为了对比,接下来我们使用全局引入的方式

全局引入

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

Vue.config.productionTip = false
// 全局引入
Vue.use(ElementUI);

new Vue({
  render: h => h(App),
}).$mount('#app')

然后我们再执行 npm run build,之后我们再查看 dist 的大小,已经变成了 2.72M了
在这里插入图片描述
所以为了更好的用户体验,提倡使用按需引入

vue-router

安装

由于我们使用 vue2,所以 vue-router 我们使用 3.x 的版本:Vue-router官方文档

安装时执行 npm install vue-router,这样会下载最新版本,如果想指定版本可以使用 @ 连接相应版本,例如 npm install vue-router@3.1.1

如果想看下 vue-router 3.x 的最新版本是多少,可以打开 npm ,搜索 vue-router 然后查看 versions 即可),我们可以看到是 3.6.5

我们执行 npm i vue-router@3.6.5

安装完成后我们在 src 下新建 router 文件夹,然后新建 index.js

在 src 下新建 views 文件夹,创建 Home.vue 和 User.vue 两个组件
在这里插入图片描述
在安装的步骤中的 javascript部分我们看到

  1. 如果使用模块化机制编程,导入Vue和VueRouter,要调用 Vue.use(VueRouter)

我们把示例代码复制进 index.js 中,然后按实例代码进行编写,index.js 代码如下

import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter)

//1、创建组件
import Home from '../views/Home';
import User from '../views/User';
//2、将路由与组件进行映射
const routes = [
    { path: '/home', component: Home },
    { path: '/user', component: User }
]
//3、创建router实例
const router = new VueRouter({
    routes // (缩写) 相当于 routes: routes
})

export default router

第四步是:创建和挂载根实例。记得要通过 router 配置参数注入路由,从而让整个应用都有路由功能,所以我们需要将其挂载到 main.js 中

......
import router from "@/router";
......

new Vue({
  router,
  render: h => h(App),
}).$mount('#app')

然后我们看 html 的部分,因为我们要把内容展示到 App.vue 中所以,复制示例代码的内容到 App.vue 中

<template>
  <div id="app">
    <!-- 路由出口 -->
    <!-- 路由匹配到的组件将渲染在这里 -->
    <router-view></router-view>
  </div>
</template>

<script>
</script>

然后执行 npm run serve看下运行效果,如果报错,可以先关闭vue.config.js中的 lintOnSave ,它的作用是设置是否在开发环境下每次保存代码时都启用 eslint验证

在这里插入图片描述
再次运行项目,当我们在地址栏输入 http://localhost:8080/#/home 时,页面就会展示 Home 组件的内容了
在这里插入图片描述
需要注意的时,vue2 中组件内容需要有一个根元素,我们看下 Home.vue 的内容,是有一个根 div 的,没有会报错

<template>
  <div>
    我是Home组件
  </div>
</template>

<script>
export default {
  name: "Home"
}
</script>

<style scoped>

</style>

嵌套路由

当然后台的头部和左侧都是固定的,所以我们在 views 下新建 Main.vue,然后修改 index.js

import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter)

//1、创建组件
import Home from '../views/Home';
import User from '../views/User';
import Main from '../views/Main';
//2、将路由与组件进行映射
const routes = [
    {
        //主路由
        path: '/',
        component: Main,
        children: [
            { path: '/home', component: Home },
            { path: '/user', component: User }
        ]
    }
]
//3、创建router实例
const router = new VueRouter({
    routes // (缩写) 相当于 routes: routes
})

export default router

Main.vue

<template>
  <div>
    <h1>Main<h1>
      <router-view></router-view>
  </div>
</template>

<script>
export default {
  name: "Main"
}
</script>

当匹配到 / 时
在这里插入图片描述
当匹配到 home 时
在这里插入图片描述
当匹配到 user 时
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

木字楠后台管理系统开发(4):SpringSecurity引入并编写登陆接口

&#x1f3b6; 文章简介&#xff1a;木字楠后台管理系统开发(4)&#xff1a;SpringSecurity引入并编写登陆接口 &#x1f4a1; 创作目的&#xff1a;为了带大家完整的体验木字楠后台管理系统模版的开发流程 ☀️ 今日天气&#xff1a;冬天来啦&#xff01; &#x1f4dd; 每日一…

在ubuntu上部署gitlab详细步骤

一、Ubuntu安装gitlab步骤&#xff1a; 安装依赖 通过快捷键ctrlaltT打开命令行窗口&#xff0c;然后运行下面两行命令 sudo apt update sudo apt-get upgrade sudo apt-get install curl openssh-server ca-certificates postfix 如果这一步遇到下面提示界面&#xff0c…

BUUCTF Web2

[HCTF 2018]admin flask session的伪造 改密码的页面源码有提示&#xff0c;得到秘钥ckj123 自己的session .eJw9kEGLwjAUhP_KkrOHJm09CB5cbKULeaHwanm5iKu1adK4UBVpxP--XRc8zGmGj5l5sN1paC6GLa7DrZmxXXdkiwf7-GYLptCl2uoOcHWXmDu1kYnGLIFNdQdsBYmtkbb3YI89YDXKUHKNTkCg8S9PliJ…

Kotlin 开发Android app(二十二):Retrofit和简单的mvp框架

到这一节&#xff0c;基本上把大部分kotlin和android的开发都已经介绍完成了&#xff0c;通过了前面和这一章的框架结构&#xff0c;基本上能解决开发中的很多问题&#xff0c;并且能够知道android的主要的技术&#xff0c;并进行独立开发了。对于传统的开发的话&#xff0c;还…

一些可以显著提高大型 Java 项目启动速度的尝试

我们线上的业务 jar 包基本上普遍比较庞大&#xff0c;动不动一个 jar 包上百 M&#xff0c;启动时间在分钟级&#xff0c;拖慢了我们在故障时快速扩容的响应。于是做了一些分析&#xff0c;看看 Java 程序启动慢到底慢在哪里&#xff0c;如何去优化&#xff0c;目前的效果是大…

SpringSecurity安全框架

目录 一、Spring Security介绍 1、框架介绍 2、认证与授权实现思路 二、整合Spring Security 1、在common下创建spring_security模块 2、在spring_security引入相关依赖 3.代码结构说明&#xff1a; 4、创建spring security核心配置类 5、创建认证授权相关的工具类 &a…

Roson的Qt之旅 #139 Qt读写Excel

1.使用QAxObject读写Excel QAxObject类提供了一个包裹COM对象的QObject。 QAxObject可以被实例化为一个空的对象&#xff0c;用它应该包裹的COM对象的名字&#xff0c;或者用一个指向代表现有COM对象的IUnknown的指针。如果COM对象实现了IDispatch接口&#xff0c;该对象的属性…

【Python 身份证JSON数据读取】——身份证前六位地区码对照表文件(最全版-JSON文件)

点个赞留个关注吧&#xff01;&#xff01; 1、生成身份证前六位地区码对照表JSON文件 2、python 读取JSON文件 提取码【1234】 json文件下载 废话不多说&#xff0c;先上效果图 一、生成身份证json数据文件 先去百度搜索地区身份证号码前6位查询 ,然后进入网站控制台界面&…

经常会采坑的javascript原型应试题

一&#xff0e; 前言 原型和原型链在面试中历来备受重视&#xff0c;经常被提及。说难可能也不太难&#xff0c;但要真正完全理解&#xff0c;吃透它&#xff0c;还是要多下功夫的。 下面为大家简单阐述我对原型和原型链的理解&#xff0c;若是觉得有说的不对的地方&#xff…

必备技能,MySQL 查找并删除重复行

本文讲述如何查找数据库里重复的行。这是初学者十分普遍遇到的问题。方法也很简单。这个问题还可以有其他演变&#xff0c;例如&#xff0c;如何查找“两字段重复的行”&#xff08;#mysql IRC 频道问到的问题&#xff09; 如何查找重复行 第一步是定义什么样的行才是重复行。…

碳酸钾碱性溶液除钙镁软化树脂

碳酸钾是重要的基本无机化工、医药、轻工原料之一&#xff0c;主要用于光学玻璃、电焊条、电子管、电视显像管、灯泡、印染、染料、油墨、照相药品、泡花碱、聚酯、炸药、电镀、制革、陶瓷、建材、水晶、钾肥皂及药物的生产。用作气体吸附剂&#xff0c;干粉灭火剂&#xff0c;…

Spring Boot 整合 Groovy 脚本,实现动态编程

Groovy简介 Groovy 是增强 Java 平台的唯一的脚本语言。它提供了类似于 Java 的语法&#xff0c;内置映射&#xff08;Map&#xff09;、列表&#xff08;List&#xff09;、方法、类、闭包&#xff08;closure&#xff09;以及生成器。脚本语言不会替代系统编程语言&#xff…

「Redis数据结构」哈希对象(Hash)

「Redis数据结构」哈希对象&#xff08;Hash&#xff09; 文章目录「Redis数据结构」哈希对象&#xff08;Hash&#xff09;一、概述二、编码ZipListHashTable三、编码转换一、概述 Redis中hash对象是一个string类型的field和value的映射表&#xff0c;hash特别适合用于存储对…

RabbitMQ:消息模型

RabbitMQ 提供了 6 种消息模型&#xff0c;分别为&#xff1a;单生产单消费模型&#xff08;Hello World&#xff09;、消息分发模型&#xff08;Work queues&#xff09;、Fanout 消息订阅模式&#xff08;Publish/Subscribe&#xff09;、Direct 路由模式&#xff08;Routing…

基于JSP的手工艺品在线网站

摘 要 在Internet高速发展的今天&#xff0c;我们生活的各个领域都涉及到计算机的应用&#xff0c;其中包括手工艺品在线网站的网络应用&#xff0c;在外国手工艺品已经是很普遍的方式&#xff0c;不过国内的手工艺品可能还处于起步阶段。手工艺品在线网站具有在线下单功能。手…

详解vue中watch的用法

前言 说到 vue 中的 watch 方法&#xff0c;大家可能首先想到&#xff0c;它是用来监听数据的变化&#xff0c;一旦数据发生变化可以执行一些其他的操作。但是 watch 的操作可不止如此&#xff0c;本章就带大家一起深剖细析 vue 中的 watch 方法。 watch&#xff1f; 因为 vue…

DocuWare平台——用于文档管理和工作流程自动化的内容服务平台详细介绍(上)

DocuWare平台——用于文档管理和工作流程自动化的内容服务平台 成功实现办公自动化所需的一切 DocuWare 是一个先进的平台&#xff0c;可让您集中、快速、有效地管理、处理和利用业务信息。 我们的文档管理和工作流程解决方案的各项功能可以集成到任何 IT 系统中&#xff0c;…

源码解析:从 kubelet、容器运行时看 CNI 的使用

这是 Kubernetes 网络学习的第三篇笔记。 深入探索 Kubernetes 网络模型和网络通信认识一下容器网络接口 CNI&#xff08;本篇&#xff09;源码分析&#xff1a;从 kubelet、容器运行时看 CNI 的使用从 Flannel 学习 Kubernetes VXLAN 网络Cilium CNI 与 eBPF... 在上一篇中&…

web前端期末大作业 基于HTML+CSS+JavaScript程序员个人博客模板(web学生作业源码)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

翻译: ChatGPT 的激发敬畏、恐惧、特技和试图绕过其护栏的尝试

来自 OpenAI 的新聊天机器人正在激发敬畏、恐惧、特技和试图绕过其护栏的尝试。 以下是 DALL-E 2 在给出提示时生成的内容&#xff0c;“采用 AI 聊天机器人形式的分布式语言超级大脑。” “A distributed linguistic superbrain that takes the form of an A.I. chatbot.” 信…