Spring Cloud + Vue前后端分离-第4章 使用Vue cli 4搭建管理控台

Spring Cloud + Vue前后端分离-第4章 使用Vue cli 4搭建管理控台

4-1 使用vue cli创建admin项目

Vue 简介

Vue作者尤雨溪在google工作时,最早只想研究angular的数据绑定功能,后面觉得这个小功能很好用,有前景,就再扩展,取名vue并放到github

vue、angular和微信小程序的代码结构很像,学了一个,另外两个上手就比较容易

学习建议:有空时多浏览文档,熟悉vue提供了哪些功能。在实战中遇到各种杨景,再回归文栏寻找解决方案

Vue CLI

使用vue cli新建admin项目

注意:需要提前安装好node.js,可以看这篇文章

如果想要idea终端是bash形式的,可以在设置的Terminal中选择Shell path路径为bash.exe

npm install -g @vue/cli可以用于初始安装,也可以用于升级到最新版本

创建admin项目 

​ 

vuecli初始安装带了babel和eslint插件,bable:javascript编译器;eslint:代码规范检查

点击网址,就可以打开

​ 

package.json类似于pom.xml,里面配置各种js版本依赖

main.js是vue入口文件,用来初始化vue实例并集成所需要的插件

4-2 集成bootstrap后台管理模板ace

响应式设计与bootstrap

Bootstrap中文网

Bootstrap来自Twitter,是目前最受欢迎的响应用框架,它基于html,css,javascript,简单易扩展,因此有很多第三方的模板

栅格系统是bootstrap的布局核心,需要重点掌握

ace admin模板介绍

bootstrap有很多第三方模板,有很多机构或个人通过开发模板收费赚钱。模板种类很多,控台、商城、企业官网、博客等

点击github,下载zip,解压文件夹

admin 增加 ace 模板

复制ace-master文件夹,粘贴到public文件夹下

所有项目中的静态代码,全部放在public目录下

2.index.html中加入ace admin模板所需要的js css 

1.把login.html中<head></head>和引用第三方的js,如图所示,拷贝到index.html中,把<script>放到<head>里的末尾

2.原来index.html中<head></head>里保留一句

是这个index.html

3.第二部保留那句话,是为了我们更好的去模仿

ctrl+r,输入好替换的,然后点击Replace All

批量替换小技巧:找到要批量替换的共同点,可以包含特殊字符,"= 等,替换的时候,也加上这些特殊字符,这样又快又准

Ctrl+Z撤销,Ctrl+Shift+Z重做

双击serve相当于启动命令,启动后点击网址就可以访问了

推荐把Autoscrol to Source和Autoscroll from Source勾选,文件快速定位,左右同步

Autoscroll to Source -> Open Files with Single Click
Autoscroll from Source -> Always Select Opened File

然后把login.html中的main-container拷贝到这里

把不用的先去掉 

然后serve启动

在这里,可能会提示错误,$未定义,但是我们的js已经引入过了,我们需要改一下配置,在rules中加上"no-undef": "off",再次启动,就可以了

eslint,用于检测代码规范。是一把双刃剑,有一些检测没必要,可以通过修改配置禁用掉 

1.简化登录页面代码 

一般后台管理系统不允许注册,需要由管理员来新建用户

App.vue

<template>
  <div class="main-container">
    <div class="main-content">
      <div class="row">
        <div class="col-sm-10 col-sm-offset-1">
          <div class="login-container">
            <div class="center">
              <h1>
                <i class="ace-icon fa fa-leaf green"></i>
                <span class="">控台登录</span>
              </h1>

            </div>

            <div class="space-6"></div>

            <div class="position-relative">
              <div id="login-box" class="login-box visible widget-box no-border">
                <div class="widget-body">
                  <div class="widget-main">
                    <h4 class="header blue lighter bigger">
                      <i class="ace-icon fa fa-coffee green"></i>
                      请输入用户名密码
                    </h4>

                    <div class="space-6"></div>

                    <form>
                      <fieldset>
                        <label class="block clearfix">
														<span class="block input-icon input-icon-right">
															<input type="text" class="form-control" placeholder="Username" />
															<i class="ace-icon fa fa-user"></i>
														</span>
                        </label>

                        <label class="block clearfix">
														<span class="block input-icon input-icon-right">
															<input type="password" class="form-control" placeholder="Password" />
															<i class="ace-icon fa fa-lock"></i>
														</span>
                        </label>

                        <div class="space"></div>

                        <div class="clearfix">
                          <label class="inline">
                            <input type="checkbox" class="ace" />
                            <span class="lbl"> 记住我</span>
                          </label>

                          <button type="button" class="width-35 pull-right btn btn-sm btn-primary">
                            <i class="ace-icon fa fa-key"></i>
                            <span class="bigger-110">登录</span>
                          </button>
                        </div>

                        <div class="space-4"></div>
                      </fieldset>
                    </form>

                  </div><!-- /.widget-main -->
                </div><!-- /.widget-body -->
              </div><!-- /.login-box -->
            </div><!-- /.position-relative -->
          </div>
        </div><!-- /.col -->
      </div><!-- /.row -->
    </div><!-- /.main-content -->
  </div><!-- /.main-container -->
</template>

<script>
$('body').attr('class', 'login-layout light-login');
export default {
  name: 'App',
}
</script>


4-3 集成路由vue-router

会生成2个文件

别人拉取我的代码到本地后,运行“npm install”会去下载package.json里配置的所有依赖的js,这时vue-router可能下载到的版本是3.6.6或其他版本

这样下载到的版本肯定是3.6.5

login.vue里面的内容就是原来app里面的内容 


angular也有这两种url展现形式,一般选择history,美观

router-view是路由嵌套标签,一般配合父子路由使用

app.vue

<template>
  <div id="app">
    <router-view/>
  </div>
</template>

main.js

import Vue from 'vue'
import App from './app.vue'
import router from './router'
Vue.config.productionTip = false;

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

即便我在网址上面输入其他内容

回车之后,依然是/login

根据需求可以将这些改成2,看起来更加紧凑好看

Ctr+AIt+L格式化代码,就可以看到效果了

制作admin页面

1.增加admin页面

 2.增加路由配置,访问/admin时,加载admin组件

登录还有点问题,之后会继续改进 

login页面和admin页面跳转 

1.增加login页面登录按钮点击事件,跳转到admin页面

点击登录,就会跳转到admin页面

4-4 控台欢迎页面开发

mouted的使用

vue组件生命周期中有很多钩子函数,mounted和created都是vue的初始化函数。

参考Vue 实例 — Vue.js

1.使用mounted解决组件初始化样式的问题

现在,再次刷新,就是都正常的了 

结论:组件每次加载,mounted都会再次执行

使用router-view增加welcome子组件

1.增加welcome子组件,增加/admin/welcome子路由

router-view 一般配合子路由使用

注意:子路由的配置不要”/"开头 

eslint实在是每次都要检查,我干脆把它卸载掉,并且把相关的配置都删除掉,就不会再检查报错 

 

{
  "name": "admin",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint"
  },
  "dependencies": {
    "core-js": "^3.8.3",
    "vue": "^2.6.14",
    "vue-router": "^3.6.5"
  },
  "devDependencies": {
    "@babel/core": "^7.12.16",

    "@vue/cli-plugin-babel": "~5.0.0",

    "@vue/cli-service": "~5.0.0",


    "vue-template-compiler": "^2.6.14"




  },
  "browserslist": [
    "> 1%",
    "> 1%",
    "last 2 versions",
    "not dead"
  ]
}

 控台页面元素修改

响应式设计的一个体现:根据不同屏幕分辨率不同,弹窗显示在不同的位置

Ctrl+Y:删除当前选中的行,只要某一行有部分被选中,这一行就会全部删除

structure窗口,显示当前文件的代码层级结构

1.将面包屑导航、搜索、设置删除

1.增加js依赖,解决navbar中,三个菜单的点击弹窗效果。

js从ace/index.htmI复制

data-toggle:用于按钮和模态框(弹出层)的事件绑定

ace/blank页面引入js,只到这个位置,从ace/index页面中再复制下面的js库

放到public/index.html

2.使用相对路径解决头像路径问题 

把其他的地方也进行替换

1.侧边栏去掉无用的菜单

2.底部文案修改

active:当前菜单是激活样式 (高亮,粗体,字体颜色蓝色等)。open :把当前菜单下的子菜单展开

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

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

相关文章

C语言之数组精讲(2)

目录 数组的复制 输入数组元素的值 对数组的元素进行倒序排列 使用数组进行成绩处理 对象式宏 数组元素的最大值和最小值 赋值表达式的判断 数组的元素个数 结语 数组的复制 我们把数组中的元素全部复制到另一个数组中。 #include<stdio.h>int main() {int i;int…

用23种设计模式打造一个cocos creator的游戏框架----(三)外观模式模式

1、模式标准 模式名称&#xff1a;外观模式 模式分类&#xff1a;结构型 模式意图&#xff1a;为一组复杂的子系统提供了一个统一的简单接口。这个统一接口位于所有子系统之上&#xff0c;使用户可以更方便地使用整个系统。 结构图&#xff1a; 适用于&#xff1a; 当你想为…

基于Java SSM框架实现毕业生就业信息管理系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架实现毕业生就业信息管理系统演示 摘要 目前高校毕&#xff0c;毕业生就业工作意义尤为重大但形势又特别严峻。党中央和国务院高度重视高校毕业生就业工作&#xff0c;及时作出了一系列决策部署&#xff0c;多措并举拓展就业渠道&#xff0c;千方百计帮助高校…

iOS(swiftui)——系统悬浮窗( 可在其他应用上显示,可实时更新内容)

因为ios系统对权限的限制是比较严格的,ios系统本身是不支持全局悬浮窗(可在其他app上显示)。在iphone14及之后的iPhone机型中提供了一个叫 灵动岛的功能,可以在手机上方可以添加一个悬浮窗显示内容并实时更新,但这个功能有很多局限性 如:需要iPhone14及之后的机型且系统…

CTF 7

信息收集 存活主机探测 arp-scan -l 端口探测 nmap -sT --min-rate 10000 -p- 192.168.0.5 服务版本等信息 nmap -sT -sV -sC -O -p22,80,137,138,139,901,5900,8080,10000 192.168.0.5Starting Nmap 7.94 ( https://nmap.org ) at 2023-11-02 21:23 CST Stats: 0:01:30 elaps…

基于vue开发-创建登录页

我们使用vue创建完成项目后就开始我们的项目页面开发&#xff0c;如有不清楚怎么操作的可以看博主的前一篇文档 使用vue UI安装路由插件-CSDN博客 在src/views文件夹中创建一个登录页面 在此之前&#xff0c;我们可以先安装一个插件、element、vant、iview等等&#xff0c;可…

vue中shift+alt+f格式化防止格式掉其它内容

好处就是使得提交记录干净&#xff0c;否则修改一两行代码&#xff0c;习惯性按了一下格式化快捷键&#xff0c;遍地飘红&#xff0c;下次找修改就费时间 1.点击设置图标-设置 2.点击这个转成配置文件 {"extensions.ignoreRecommendations": true,"[vue]":…

Stable Diffusion AI绘画系列【17】:绘本童话风格场景

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

使用 Kubernetes Agent Server 实现 GitOps

目录 温习 GitOps 极狐GitLab Kubernetes Agent 极狐GitLab GitOps workflow 极狐GitLab KAS 的配置 创建极狐GitLab agent 创建 agent token Kubernetes 上安装 agent&#xff08;agentk&#xff09; 极狐GitLab GitOps workflow 实践 写在最后 温习 GitOps GitOps …

课题学习(十五)----阅读《测斜仪旋转姿态测量信号处理方法》论文

一、 论文内容 1.1 摘要 为准确测量旋转钻井时的钻具姿态&#xff0c;提出了一种新的信号处理方法。测斜仪旋转时&#xff0c;垂直于其旋转轴方向加速度计的输出信号中重力加速度信号分量具有周期性特征&#xff0c;以及非周期性离心加速度分量频率低于重力加速度信号分量频率…

渲染(iOS渲染过程解析)

渲染 渲染原理 一个硬核硬件科普视频 CPU和GPU CPU&#xff08;Central Processing Unit&#xff09;&#xff1a;现代计算机整个系统的运算核心、控制核心&#xff0c;适合串行计算。GPU&#xff08;Graphics Processing Unit&#xff09;&#xff1a;可进行绘图运算工作的…

系列四、过滤器简介

一、简介 1.1、概述 过滤器作为JavaWEB的三大组件&#xff08;Servlet程序、Filter过滤器、Listener监听器&#xff09;&#xff0c;它的主要功能是用来拦截请求的&#xff0c;当客户端要访问某个资源时&#xff0c;先来到配置好的过滤器&#xff0c;过滤器可以在用户访问某个…

Docker架构、镜像操作和容器操作

一、docker基本管理和概念 1、概念 docker&#xff1a;开源的应用容器引擎。基于go语言开发的。运行在Linux系统中的开源的轻量级的“虚拟机” docker的容器技术可用在一台主机上轻松到达为任何应用创建一个轻量级到的&#xff0c;可移植的&#xff0c;自给自足的容器 dock…

基于remix+metamask+ganache的智能合约部署调用

在我们部署合约时为了让它更接近真实区块链去中心化体验&#xff0c;我们需要调用小狐狸&#xff08;Metamask&#xff09;来进行真实交易&#xff0c;而metamask里没有内置虚拟测试币&#xff0c;我们需要进行调用Ganache来添加带有虚拟测试币的账号。以上就是三者的关系&…

编程实战:类C语法的编译型脚本解释器(十)编译表达式

系列入口&#xff1a;编程实战&#xff1a;类C语法的编译型脚本解释器&#xff08;九&#xff09;编译语句 本文介绍表达式的编译。 一、代码概览 表达式的编译就是不断获取下一个标识符&#xff0c;直到遇到不属于表达式的东西。 完整代码如下&#xff1a; Expression* GetExp…

Java+Swing: (jframe自定义图标和居中显示) 整理1

package com.test;import javax.swing.*; import java.awt.*; import java.net.URL;/*** Author&#xff1a;xiexu* Date&#xff1a;2023/12/3 19:13*/ public class JframeTest {JFrame jFrame;JButton jButton;public JframeTest() {// 容器组件&#xff08;jframe, jpanel,…

深圳冬季穿搭造型

深圳冬季穿搭造型 今天是2023年11月17日&#xff0c;北方在11月初就降下了大雪&#xff0c;那是我的老家&#xff0c;无比怀念。 而在深圳&#xff0c;冬天是体会不到那份冷冽的寒冷的&#xff0c;所以在深圳&#xff0c;每天的晚上&#xff0c;我都会出去散步&#xff0c;昨…

Kubernetes Service控制器详解以及切换为ipvs代理模式

文章目录 一、Service 存在的意义二、Pod与Service的关系三、Service定义与创建四、Service三种常用类型五、Service代理模式六、切换Service代理模式七、service总体工作流程八、kube-proxy ipvs和iptables的异同九、Service DNS名称 一、Service 存在的意义 service的引入主…

推荐10款App安全测试工具

移动互联网时代&#xff0c;我们的生活和工作深受 App 影响。伴随移动 App 的广泛应用&#xff0c;App 安全日益重要。本文介绍了 App 开发可能用到的安全测试工具。 当今&#xff0c; 全球移动用户大约超过37亿。 Google Play 上大约有 220 万个 App&#xff0c; 苹果App Sto…

二极管是什么

二极管 电子元器件百科 文章目录 二极管前言一、二极管是什么二、二极管的类别三、二极管的应用实例四、二极管的作用原理总结前言 二极管是一种重要的电子器件,通过其整流行为和管理方向的特性,可以在电路中实现电流控制和电压整流等功能。 一、二极管是什么 二极管是一种…