小白学习Vue3之管理系统模板搭建(三)——node-sass安装及登录页面

node-sass安装

安装准备

项目应用node-sass时,必须与node版本对应

node和node-sass版本对应表

Node JSSupported node-sass versionnode module
node177.0+102
node166.0+93
node155.0+88
node144.14+83
node134.13+, <5.0+79
node124.12+72
node114.10+ ,<5.067
node104.9+64
node84.5.3+, <5.057
node<8<5.0<57

查看自己node版本

npm -v

在这里插入图片描述
小白电脑的版本时16.20.0所以安装的node-sass是6.0.+
除了node-sass意外,还需要sass-loader(主要用于将Sass或SCSS文件转换为CSS文件

部分sass-loader与node-sass版本

sass-loadernode-sass
sass-loader 4.1.1node-sass 4.3.0
sass-loader 7.0.3node-sass 4.7.2
sass-loader 7.3.1node-sass 4.7.2
sass-loader 7.3.1node-sass 4.14.1
sass-loader 10.0.1node-sass 6.0.1

安装

安装python

由于node-sass是python编译的,所以需要电脑安装python ,node版本高的安装python3,版本低的安装python2.*
Tips: 安装python不知道版本,可以先直接安装node-sass,安装报错会提示的
从别的地方找的提示,如下图
在这里插入图片描述
安装python的方式很多可以百度
推荐安装教程:超详细的Python安装和环境搭建教程

校验python是否安装完成

python

在这里插入图片描述

安装node-sass

npm install node-sass@版本号 --save-dev

安装sass-loader

npm install sass-loader@版本号 --save-dev

小白对应的版本

软件版本号
node16.20.0
node-sass^6.0.1
sass-loader^10.0.0
python3.10.9

登录页面

路由配置

项目的第一页面一般都是登录页面
在src/router/index.js中
在这里插入图片描述
有在前面写过------>小白学习Vue3之管理系统模板搭建(二)——axios&router

在路由跳转,进入src/view/Login.vue页面

登录页面

  1. Longin.vue 源码如下
<template>
  <div class="login_calss">
    <el-card class="login_card">
      <el-image class="logo_image" :src="logoImg"></el-image>
      <p class="login_title">登 录</p>
      <p class="login_desc">欢迎登录XXX后台管理系统</p>
      <el-form
        :model="fromData"
        :rules="rules"
        ref="ruleFromRef"
        label-width="80px"
        class="login_form"
      >
        <el-form-item label="账户:" prop="username">
          <el-input v-model="fromData.username" placeholder="请输入账号" />
        </el-form-item>
        <el-form-item label="密码:" prop="password">
          <el-input
            type="password"
            v-model="fromData.password"
            placeholder="请输入密码"
          />
        </el-form-item>
      </el-form>
      <div>
        <el-button
          class="btn-class"
          type="primary"
          @click="onSubmit()"
          :loading="loading"
          >登 录</el-button
        >
        <el-button class="btn-class" @click="resetForm()">重 置</el-button>
      </div>
    </el-card>
  </div>
</template>
<script setup name="login">
import logoImg from "../assets/img/logo.png";
import userApi from "../api/user";
//import { reactive, ref, getCurrentInstance } from "vue"; 有自动引入包插件了
import { ElMessage } from "element-plus";

const ruleFromRef = ref();
const fromData = reactive({
  username: "",
  password: "",
});

const loading = ref(false);

const rules = reactive({
  username: [{ required: true, message: "账号不能为空", trigger: "blur" }],
  password: [{ required: true, message: "密码不能为空", trigger: "blur" }],
});
const onSubmit = () => {
  if (!ruleFromRef) return;
  loading.value=true
  ruleFromRef.value.validate(async (valid, fields) => {
    if (valid) {
      //   const res = await userApi.login(from);
      //   if (res.data) {
      //     if (res.data.success) {
      //       loading.value=false
      //       跳转到首页或者存储用户信息...
      //     } else {
      //       loading.value=false
      //       ElMessage.error(res.data.message);
      //     }
      //   } else {
      //     return false;
      //   }
    } else {
      loading.value=false
    }
  });
};
const resetForm = () => {
  if (!ruleFromRef) return;
  ruleFromRef.value.resetFields();
};
</script>

<style scoped>
.login_calss {
  width: 100%;
  height: 100%;
  background-image: url("../assets/img/bg.jpg");
  position: absolute;
  left: 0;
  top: 0;
  background-size: 100% 100%;
}
.login_card {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  margin: auto;
  width: 20%;
  height: 45%;
  border-radius: 10px;
  text-align: center;
  background-color: rgba(255, 255, 255, 0.2);
}
.logo_image {
  width: 100px;
  height: 100px;
  margin-top: 5px;
}
.login_title {
  font-size: 25px;
  font-weight: bold;
  margin-top: auto;
}
.login_desc {
  margin-top: auto;
  margin-bottom: 3vh;
  letter-spacing: 8px;
  color: #414646;
}
.login_form {
  background-color: rgba(255, 255, 255, 0.2);
}
.btn-class {
  margin-top: 10px;
  margin-left: 5vh;
}
:deep(.el-input__wrapper) {
  background-color: transparent !important;
}
:deep(.el-form-item) {
  background-color: unset !important;
}
</style>
  1. 在/src文件夹下,建立api文件夹,在/src/api/下建立user.js
    user.js 源码如下
import http from '../utils/http/http'

const login = (data) => {
    return http.post("/user/login",data);
}

const getuserList = (data) => {
    return http.get("/user/login",data);
}

const saveuser = (data) => {
    return http.post("/user/login",data);
}

const delUser = (data) => {
    return http.del("/user/login",data);
}

const getUserDetail = (data) => {
    return http.get("/user/login",data);
}

export default {
    login, getuserList, saveuser, delUser, getUserDetail
}

  1. 在/src/assets/建立img文件夹,存储登录背景图和登录logo

  2. 在App.vue中加入

<router-view/>

在这里插入图片描述

结构目录

在这里插入图片描述
自动引入插件 ** unplugin-auto-import **

下载unplugin-auto-import

npm install unplugin-auto-import -D

在vite.config.js中加入

import AutoImport from 'unplugin-auto-import/vite'

AutoImport({ 
      imports: [
        'vue',
        'vue-router',
      ]
     })

在这里插入图片描述
参考教程:【Vite + Vue3 + TS】unplugin-auto-import自动引入配置及Eslint报错解决

  • 9
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值