vue若依前端项目搭建

2023-11-19

1.项目搭建

首先进入到你需要创建的项目目录下面,然后输入命令vue create .创建项目
接下来选择手动搭建,然后把下面图片中的内容选上
需要选择的内容
再然后继续配置一些参数信息
配置参数内容
接下来运行npm run serve项目就启动起来了

2.配置登录界面文件

首先修改src/router/index.js这个界面,写若依的登录界面
先把这一串内容删除掉

{
  path: '/',
  name: 'home',
  component: HomeView
},

然后修改src/router/index.js下面的内容

const routes = [
  {
    path: '/login',
    name: 'login',
    // route level code-splitting
    // this generates a separate chunk (about.[hash].js) for this route
    // which is lazy-loaded when the route is visited.
    component: () => import(/* webpackChunkName: "about" */ '../views/login.vue')
  }
]

接下来到package.json下面打开lint的调试
打开lint的调试
然后把app.vue上面的导航部分删除掉
app下面的导航内容
打开login的界面
login的界面
注意这里的#号必须放在login的前面
查看package.json下面的dependencies之中是否存在着element-ui,如果不存在使用命令安装

npm install --save element-ui

并且把depencies之中的

"element-ui": "^2.15.14"

加入到下面的devDependencies之中
然后打开src/main.js之中,加入

import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
Vue.use(Element-UI)

注意这里的特定index.css样式一定要引入,不然显示的样式跟element-ui官网中显示的样式不同
然后首先把背景图片放入src/assets/images/login-background.jpg,接着在login.vue之中先写界面

<template>
    <div class="login">
        <el-form class="login-form">
            <h3>管理系统</h3>
            <el-form-item>
            </el-form-item>
        </el-form>
        <div class="el-login-footer">
            <span>opyright © 2018-2021 ruoyi.vip All Rights Reserved.</span>
        </div>
    </div>
</template>

然后在style之中加入配置

<style scoped lang="scss">
.login{
    height: 100%;
background-image: url("../assets/images/login-background.jpg");
}
//.login定义上面的样式,这里的login证明login这部分占界面的100%
</style>

3.写登录文件的样式

首先把页面定义出来

<template>
    <div class="login">
        <el-form class="login-form" :model="loginForm">
            <!--这里的login-form是一个对象,在下面的data()中有所定义,否则这里无法进行输入-->
            <h3 class="title">管理系统</h3>
            <el-form-item class="login-item">
                <el-input v-model="loginForm.username" type="text" placeholder="账号"></el-input>
                <!--v-model跟下面data()中的数据绑定,placeholder为显示的提示-->
            </el-form-item>
            <el-form-item class="login-item">
                <el-input v-model="loginForm.password" type="password" placeholder="密码"></el-input>
            </el-form-item>

            <el-form-item class="login-item">
                <el-col :span="15">
                    <el-input class="code-item" v-model="loginForm.code" type="text" placeholder="验证码"></el-input>
                </el-col>
                <el-col :span="9">
                    <el-image class="login-code" :src="codeUrl" @click="getCode"></el-image>
                </el-col>
            </el-form-item>
            <el-form-item class="login-item">
                <el-row>
                  <el-checkbox v-model="loginForm.rememberMe" class="remeberpasswordcheck">记住密码</el-checkbox>
                </el-row>
            </el-form-item>
            <el-form-item class="login-item">
                <el-button class="login-button" type="primary">
                    <span>登录</span>
                </el-button>
            </el-form-item>
        </el-form>
        <div class="el-login-footer">
            <span>Copyright © 2018-2021 ruoyi.vip All Rights Reserved.</span>
        </div>
    </div>
</template>

<script>
import { getCodeImg } from '../api/login'

export default {
  name: 'login',
  data () {
    return {
      loginForm: {
        username: '',
        password: '',
        code: '',
        rememberMe: false
      },
      codeUrl: ''
    }
  },
  created () {
    this.getCode()
  },
  methods: {
    getCode () {
      console.log('getcode')
      getCodeImg().then(res => {
        console.log('gsdres', res)
      })
    }
  }
}
</script>

<style scoped lang="scss">
.login-item {
    margin-bottom: 10px;
    &:last-child {
      margin-bottom: 0;
    }
  }
.login{
    display: flex;
    //display: flex为弹性布局,能够扩展和收缩flex容器内的元素,以最大
    //限度地填充可用空间。Flex是Flexible Box的缩写,为弹性布局ß
    height: 100%;
    background-image: url("../assets/images/login-background.jpg");
    background-size: cover;
    //background-size: cover:背景图片拉伸或者缩放以适应元素,同时保持宽高比
    justify-content: center;//让上下居中
    align-items: center;//左右居中
}
.title{
    color:#707070;
    text-align: center;
    margin: 0px auto 30px auto;
}

//.login定义上面的样式,这里的login证明login这部分占界面的100%,调节完.login-form之后发现字到中间了需要调节

    .login-form{
        width: 400px;
        height: 350px;
        border-radius: 6px;
        background: #fff;
        padding: 25px 25px 5px 20px;//代表三个框在整个白框中的上 右 底 左四个位置的间距
    }
    //这里不加last-child调整大小不变的原因在于element ui自动在外套一层div,因此对其设置的宽度并没有直接设置在文本域上面
    //在last-child中的padding体现在文本框上右底左的间距上

    .code-item :last-child{
        width: 250px;
    }

    .login-code {
        width: 120px;
        float: right;
    }
    /***
    .code-item :last-child{
        height: 20px;
        width: 158px;
        font-size: 15px;
    }
    ***/
    //因为el-text本质上是div拼上普通的text标签,所以这里需要使用last-child取到最里面的标签

    /***
    .code-item{
        padding: 25px 25px 5px 40px;
    }
    ***/

    .el-login-footer{
        height: 40px;
        line-height: 40px;
        position: fixed;
        bottom: 0px;
        color: #fff;
        font-size: 12px;
        //letter-spacing: 1px;
        font-family: Arial;
    }
    //padding为上下左右,调节完.login-form这里发现脚标直接挪移到正中间了,此时需要挪移脚标的位置
    //这里position: fixed为固定定位,bottom:0px将字体放到最下面
.login-button {
    width: 100%;
}

.remeberpasswordcheck {
    float: left;
}
</style>

这里注意几点内容:
1.如果不知道格式和布局,可以查看element-ui的官网,上面有几种布局样式的定义
2.上面的html语句定义布局,下面的css语句定义样式
3.el-input实际上是div加上普通的input样式
4.如果需要在上面引用数据,则在data上面需要加上要引用的数据

export default {
   ......
   data() {
     return {
       ......
     }
   }
}

4.页面发送请求需要的相关配置

在页面中我们定义了相应的请求方法

import { getCodeImg } from '../api/login'
......
methods: {
    getCode () {
      console.log('getcode')
      getCodeImg().then(res => {
        console.log('gsdres', res)
      })
    }
  }

这里我们首先在根目录下配置.env.development文件

VUE_APP_BASE_URL = '/dev-api'

然后在src/utils/request.js下面定义创建service需要默认加入的url,便于前端在后台区分,这个文件定义为request.js

import axios from 'axios'
// 通过axios发送请求
// 这个axios需要从devDependencies传输到dependencies的依赖之中
// 如果没有axios时候需要安装一下!!!
// 有可能devDependencies中没有,但是dependencies中存在axios依赖
// npm install axios
const service = axios.create({
  baseURL: process.env.VUE_APP_BASE_URL,
  timeout: 10000
})
export default service

这样定义好之后默认请求前面都会加上url '/dev-api,然后我们定义getCodeImg方法

import request from '../utils/request.js'
export function getCodeImg () {
  return request({
    url: '/captchaImage',
    method: 'get',
    timeout: 20000
  })
}

最后还需要在vue.config.js之中配置默认的表头替换原则以及路径,注意这个vue.config.js在根目录下面

// const { defineConfig } = require('@vue/cli-service')
// 这个文件是自动生成的,下面的配置是手动加入的
// 手动配置的,在配置完成.env.development之后进行配置
// 代理url,在前端发送url的时候如何转换给后端
module.exports = {
  devServer: {
    host: '0.0.0.0',
    port: 8008,
    proxy: {
      [process.env.VUE_APP_BASE_URL]: {
        target: 'http://localhost:8080',
        changeOrigin: true,
        // 将发送的url转换成target的地址
        // '^'+process.env.VUE_APP_BASE_URL会转换成空字符串
        // 配置完之后还是访问localhost:8008/#/login登录页面
        pathRewrite: {
          ['^' + process.env.VUE_APP_BASE_URL]: ''
        }
      },
    },
    historyApiFallback: true,
    allowedHosts: "all",
    //注意如果这里报没有disableHostCheck属性的时候,对应的进行替换
  }
}

由于这个方法在created调用的时候就调用了getCodeImg的请求,因此在浏览器中可以看到发送出的相应请求。
页面发送的相关配置
发送请求之后,这里我们可以看到后端返回回来的数据
后端返回回来的数据
我们可以通过后端返回的数据生成图片

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue若依前端项目搭建 的相关文章

  • libxmljs 的替代品 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 目标 使用 Node js 访问网页 使用 xpath 语法操作 DOM 并打印新的 DOM libxm
  • 在其他不可滚动的 div 上滚动时如何滚动可滚动的 div?

    我知道这个问题听起来很令人困惑 但这就是我想要做的 在下面的代码片段中 如果用户在绿色 div 上滚动 我希望黄色 div 相应地滚动 就像滚动黄色 div 一样 请注意 黄色 div 有overflow auto 但绿色的则不然 docu
  • React Native:不透明视图内的透明视图

    我想用不透明框架和透明中心显示相机的视图 就像图片中的一样 黑色部分是相机的视图 我正在寻找具有纯反应本机组件的解决方案 没有额外的库 例如https github com gilbox react native masked view h
  • 实现悬停信息框

    我有一个日历 当用户将鼠标悬停在单元格上时 会出现一个很大的信息框 其中包含该日期的详细信息 虽然当用户离开时使信息框消失 但我遇到了一些麻烦 我基本上想要它 这样当鼠标光标移出信息框隐藏的日历单元格时 它就会消失 但我遇到了麻烦 因为mo
  • Javascript 在另一个函数中检测“Shift”键按下

    我正在从 Flash 影片 使用外部接口 调用我的 html 页面中的 Javascript 函数 并且我想知道调用该函数时用户是否按下了 Shift 键 例如 如果我通过鼠标单击调用该函数 这似乎很简单 因为我可以传递事件并检查 if e
  • 使用命名的成功/错误回调在 AngularJS 中声明一个 Promise

    我正在尝试做一些与 http 服务非常相似的事情 根据我的理解 http 返回一个 Promise 对象 使用它时 语法是 http success function data success callback error function
  • 如何在php中使用一张图像绘制形状

    我需要使用图像的一部分来创建帧图像 例如 用户将从后端上传图像片段 现在我需要根据前端用户的要求在前端创建一个框架 用户将选择框架的高度和宽度 然后他将选择该图像片段 如下所示 我没有办法做到这一点 我尝试通过 css 和 html can
  • 如果用户在 Laravel 中经过身份验证,如何检查 Vue 组件?

    正如标题所述 我有点困惑如何根据用户是否登录并使用 Laravel 的 Auth 外观进行身份验证 使用 if else 语句处理 Vue 组件中的方法 我正在发出各种 Axios 请求 我需要根据用户是否登录来允许 禁止这些请求 我有 V
  • setInterval() 在用户离开选项卡时暂停?

    javascript 中是否有任何方法的行为类似于 setInterval 并且当用户离开选项卡时停止并在用户再次进入选项卡时恢复 您可以使用以下方法创建自己的 API可见性API https developer mozilla org e
  • “|”是什么意思(单管道)在 JavaScript 中做什么?

    console log 0 5 0 0 console log 1 0 1 console log 1 0 1 为什么0 5 0返回零 但任何整数 包括负数 都返回输入整数 单管道 有什么作用 这是一个按位或 https developer
  • ReactCSSTransitionGroup 组件WillLeave 未调用

    我尝试使用 ReactCssTransition 但不知何故该事件没有被调用 componentWillLeave 这是我的组件 import React Component from react import TransitionGrou
  • @aspnet/signalr 与 @microsoft/signalr javascript 库

    aspnet signalr 与 microsoft signalr javascript 库有什么区别 两者似乎都对 DotNetCore SignalR 有效 两者似乎都很活跃 在一些教程中 我找到 aspnet signalr 在Do
  • 根据特定字符获取整个字符串或子字符串

    我有一个包含 MIME 类型的字符串 例如application json 现在我想将其与实际的 HTTP 标头进行比较 在本例中content type 如果标头包含 MIME 类型 那么就很简单 if mimeType contentT
  • 弹出窗口的动态高度取决于内容,可能吗?

    是否有可能获得一个宽度始终为 400px 的弹出窗口 但根据弹出窗口中的内容动态高度 我已经看到了这个 但不知道如何将其应用到弹出窗口 调整 iframe 的宽度高度以适应其中的内容 https stackoverflow com ques
  • 使用 AJAX 和 JQuery 按设定的时间间隔刷新 Rails 部分

    I have a page in my rails application that looks like 现在 我有另一个用 python 编码的人工智能应用程序 它处理视频 显示在 Rails 应用程序页面的左侧 并使用捕获的车辆及其相
  • 检测浏览器选项卡是否具有焦点

    是否有可靠的跨浏览器方法来检测选项卡是否具有焦点 场景是 我们有一个定期轮询股票价格的应用程序 如果页面没有焦点 我们可以停止轮询并为每个人节省流量噪音 特别是当人们喜欢打开具有不同投资组合的多个选项卡时 Is window onblur
  • 具有固定顶部菜单的语义 UI 侧边栏

    Semantic UI 对其进行预警侧边栏页面 http semantic ui com modules sidebar html usage 当侧边栏出现时 固定位置内容可能会出现改变其位置的问题 然后它提供了该问题的两种可能的解决方案
  • AngularJS 在指令运行之前通过 AJAX 检索数据

    我正在使用 AngularUIuiMap http angular ui github com directives map实例化谷歌地图的指令 uiMap 指令非常适合处理硬编码数据 mapOptions and myMarkers 但是
  • 如何获得 JavaScript 阶乘程序的循环来显示所使用的工作?

    你好 我面临着用 JavaScript 编写一个程序的挑战 尽管我对它不太了解 但它要求用户输入一个数字 然后计算该数字的阶乘 我使用了已经提出的问题并设法使计算正常工作 但无法获得所需的输出 我必须在以下输出中获取它 而不使用任何花哨的库
  • 用javascript调用外部网页(跨域)

    我正在尝试使用以下网络服务来验证提要这个问题 https stackoverflow com questions 11996430 check if a url is a valid feed 但浏览器不允许我向另一台服务器发送 ajax

随机推荐