研发效能DevOps: Vite 使用 Element Plus

目录

一、实验

1.环境

2.初始化前端项目

3.安装 vue-route

4.安装 pinia

5.安装 axios

6.安装 Element Plus

7.gitee创建工程

8. 配置路由映射

9.Vite 使用 Element Plus

二、问题

1.README.md 文档推送到gitee未自动换行

2.访问login页面显示空白

3.表单输入账户与密码,按钮依然为禁用状态


一、实验

1.环境

(1)主机

表1 主机

系统

软件版本备注
Windows11VS Code1.96.2
Node.jsv18.20.4(LTS)

运行(输入cmd)

bb3a3a38004c40f2bbe67919cce22e05.png

查看VS Code版本

Code --version

查看node版本

node -v

87de6fb85c2d465592c1d9bf92f6903d.png

查看npm版本

npm -v

e2bc65daa7634b05ab83d20f2e7f53ca.png

2.初始化前端项目

(1)安装vite

cnpm create vite@latest

输入y,然后选择vue

接下来选择JavaScript

(2)安装依赖

切换目录

cd vite-axios

这里切换cnpm安装依赖

cnpm install

(3) 运行

npm run dev

弹出界面:

可以访问到Vite + Vue

http://localhost:5173/

(4)退出

CTRL + C 结束

0f487b1ab5c24e3d91e69c4272ca89e8.png

输入Y

f23cf1681ec44fa68e7c1bdc1515faf3.png

3.安装 vue-route

(1) 查阅

https://router.vuejs.org/zh/installation.html

(2) 安装vue-router

使用cnpm安装

cnpm install vue-router@4

(3) main.js集成路由

导入router

import router from './router'

注册路由

const app = createApp(App)
app.use(router)
app.mount('#app')

修改前:

修改后:

(4)创建路由配置目录router

(5) router下创建index.js (实现组件与路由映射)

(6)修改index.js

导入创建路由的方法

import { createWebHistory, createRouter } from 'vue-router'

定义路由映射

const listRoutes = {

}

const routes = [
    listRoutes,
]

创建路由实例

const router = createRouter({
    history: createWebHistory(),
    routes,
})

导出默认路由

export default router 

 (7) 运行

npm run dev

弹出界面:

可以访问到Vite + Vue

http://localhost:5173/

(8)退出

CTRL + C 结束

0f487b1ab5c24e3d91e69c4272ca89e8.png

输入Y

f23cf1681ec44fa68e7c1bdc1515faf3.png

4.安装 pinia

(1) 查阅

https://pinia.vuejs.org/zh/getting-started.html

 (2) 安装pinia

使用cnpm安装

cnpm install pinia

(3) main.js集成pinia

导入创建pinia的方法

import { createPinia } from 'pinia'

注册pinia

const pinia = createPinia()
app.use(router).use(pinia)
app.mount('#app')

修改前:

修改后:

(5)创建全局状态(容器)目录store

(6)store下创建index.js

(7)修改index.js

导入定义Store

import { defineStore } from 'pinia'

state 是 store 的数据 (data),getters 是 store 的计算属性 (computed),而 actions 则是方法 (methods)

export const useStoreDemo = defineStore('storeDemo', {
    state: () => {
       return {
        msg: "This is Pinia"
        }   
    },
    getters: {},
    actions: {
       changeStoreDemo(value) {
        this.msg = value
        }
    }
})

5.安装 axios

(1) 查阅

https://www.axios-http.cn/docs/intro

(2)安装axios

使用cnpm安装

cnpm install axios

(3) 创建封装目录api

(4)api下创建index.js

(5)修改 index.js

import axios from 'axios'
const request = (url = '', data = {}, method = "get", timeout = 5000) => {
    return new Promise((resolve, reject)=>{
        const methodLower = method.toLowerCase() 
        if (methodLower === 'get') {
            axios({
                method: methodLower,
                params: data,
                timeout: timeout,
                url: url,
            }).then((response)=>{
                resolve(response)
            }).catch((error)=>{
                reject(error)
            })
        } else if (methodLower === "post") {
            axios({
                method: methodLower,
                data: data,
                timeout: timeout,
                url: url,
            }).then((response)=>{
                resolve(response)
            }).catch((error)=>{
                reject(error)
            })
        }
    })
}

export default request

6.安装 Element Plus

(1) 查阅

https://element-plus.org/zh-CN/guide/installation.html

(2)安装Element Plus

使用cnpm安装

(--save 参数 在装的时候会把包的信息写入package.json )

cnpm install element-plus --save

(3) 查看package.json 

(4)查阅

https://element-plus.org/zh-CN/guide/quickstart.html

(5)main.js集成Element Plus

……
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
……
app.use(router).use(pinia).use(ElementPlus)

修改前:

修改后:

  (6) 运行

npm run dev

弹出界面:

可以访问到Vite + Vue

http://localhost:5173/

F12 查看控制台 (目前暂未配置路由)

(7)退出

CTRL + C 结束

0f487b1ab5c24e3d91e69c4272ca89e8.png

输入Y

f23cf1681ec44fa68e7c1bdc1515faf3.png

7.gitee创建工程

(1)新建仓库

https://gitee.com/

(2)创建

(3)创建 git 仓库

git init

git add .

git add -A

git commit -m "项目初始化配置"

XXXXXXXX/vite-scaffold为创建的gitee仓库

git remote add origin git@gitee.com:XXXXXXXX/vite-scaffold.git

git push -u origin "master"

(4) gitee查看

(5)修改README.md

# scaffold项目初始化配置

cnpm create vite@latest
cnpm install
cnpm install vue-router@4
cnpm install pinia
cnpm install axios
cnpm install element-plus --save

(6)git查看状态

git status

(7) 提交并推送

git commit -am "修改文档"

git push -u origin "master"

(8)gitee查看

8. 配置路由映射

(1)创建页面组件目录view

(2)view下创建多个组件

Login.vue

然后把compoents下的HelloWorld.vue 内容,复制到Login.vue

(3)修改router下的index.js

通过懒加载形式把Login.vue导入

const Login = () => import('../view/Login.vue')

添加路由映射关系

……
const routes = [
    listRoutes,
    {
        path: "/login",
        component: Login,
    }
]
^

(4)路由输出到App.vue

修改App.vue

……
<router-view></router-view>
……

   (5) 运行

npm run dev

弹出界面:

可以访问到Vite + Vue

http://localhost:5173/login

(6)退出

CTRL + C 结束

0f487b1ab5c24e3d91e69c4272ca89e8.png

输入Y

f23cf1681ec44fa68e7c1bdc1515faf3.png

9.Vite 使用 Element Plus

(1)查阅

https://element-plus.org/zh-CN/component/card.html

(2)修改Login.vue

添加卡片

<template>
  <el-card class="box-card">
    <p v-for="o in 4" :key="o" class="text item">{{ 'List item ' + o }}</p>
  </el-card>
</template>

样式

<style scoped>
  .text {
    font-size: 14px;
  } 
  .item {
    padding: 18px 0;
  }
  .box-card {
    width: 480px;
  }
</style>

(3) 访问到Vite + Vue

http://localhost:5173/login

(4)git查看状态

git status

(5) 提交

git add -A

git commit -am "首页路由配置"

(6)添加标题元素

修改Login.vue

……
<h2>DevOps系统</h2>
……

(7) 访问到Vite + Vue

http://localhost:5173/login

(8)查阅表单

https://element-plus.org/zh-CN/component/card.html

(9)添加表单

修改Login.vue

<el-form
      :model="loginInfo"
      status-icon
      :rules="rules"
    >
      <el-form-item prop="username">
        <el-input v-model.number="loginInfo.username" />
      </el-form-item>
      <el-form-item prop="password">
        <el-input v-model="loginInfo.password" type="password" autocomplete="off" />
      </el-form-item>

      <el-form-item>
        <el-button type="primary" @click="submitForm(ruleFormRef)">
          登录
        </el-button>
      </el-form-item>
  </el-form>

(10)访问到Vite + Vue

http://localhost:5173/login

(11)查阅输入框与图标

输入框

https://element-plus.org/zh-CN/component/input.html

图标

https://element-plus.org/zh-CN/component/icon.html

(12)安装图标

cnpm install @element-plus/icons-vue --save

(13)找到username图标

https://element-plus.org/zh-CN/component/icon.html

点击图标

显示已复制

获取到图标信息:

<el-icon><User /></el-icon>

(14)找到password图标

 点击图标

显示已复制

获取到图标信息:

<el-icon><Lock /></el-icon>

(15) 添加图标,并将图标映射到输入框中

修改Login.vue

……
import { User,Lock } from '@element-plus/icons-vue';
……
:prefix-icon="User"
……
:prefix-icon="Lock"
……

 (16)访问到Vite + Vue

http://localhost:5173/login

 (17)git提交

git commit -am "输入框与按钮配置"

(18)查阅输入框设置固定宽度

https://element-plus.org/zh-CN/component/input.html

(19)添加clearable 图标

修改Login.vue

clearable

 (20)访问到Vite + Vue

http://localhost:5173/login

(21)查阅切换密码图标

(22)添加切换密码图标

修改Login.vue

show-password

 (23)访问到Vite + Vue

http://localhost:5173/login

(24)查阅输入框占位文本

(25)添加输入框占位文本

修改Login.vue

……
placeholder="请输入账户名"
……
placeholder="请输入密码"
……

 (26)访问到Vite + Vue

http://localhost:5173/login

(27)查阅表单校验

https://element-plus.org/zh-CN/component/form.html

(28)表单添加校验

修改Login.vue

import { reactive,ref } from 'vue';
……
const loginRef = ref()
const rules = reactive({
    username: [
      { required: true, message: '请输入账户名', trigger: 'blur' },
    ],
    password: [
      { required: true, message: '请输入密码', trigger: 'blur' },
    ],
})
……
ref="loginRef"
:rules="rules"
……

 (29)访问到Vite + Vue

http://localhost:5173/login

(30)查阅按钮禁用状态

https://element-plus.org/zh-CN/component/button.html

(31)登录按钮添加禁用状态

import { watch } from 'vue';
……
let loginButtonDisabled = ref(true)
watch([() => loginInfo.username,() => loginInfo.password],() =>{
  loginRef.value.validate((valid)=>{
      if(valid){
        loginButtonDisabled = false
      } else {
        loginButtonDisabled = true
      }
    }
  )
})
……
:disbaled="loginButtonDisabled"
……

(32)访问到Vite + Vue

http://localhost:5173/login

未输入账户或密码。登录按钮为禁用状态 (浅蓝色)

未输入密码。登录按钮为禁用状态 (浅蓝色)

输入账户与密码。登录按钮为启用状态 (深蓝色)

(33)git提交

git commit -am "输入框与按钮配置"

二、问题

1.README.md 文档推送到gitee未自动换行

(1)问题

README.md写好内容时,发现它缩到一起了,不是想要的格式

(2)原因

换行末尾,未打上空格。

(3)方法

   直接在要换行的语句最后打上2个空格

git push后,成功换行

2.访问login页面显示空白

(1)问题

访问login页面空白

(2)原因

渲染配置错误

(3) 方法

修改前

修改后:

成功:

3.表单输入账户与密码,按钮依然为禁用状态

(1)问题

表单输入账户与密码,按钮依然为禁用状态 (浅蓝色)

(2)原因分析

watch监听状态的值判断需要配置正确

(3)方法

修改watch监听里if判断

修改前:

修改后:

成功:

图标显示(深蓝色)

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

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

相关文章

动态规划练习四(子序列子数组问题)

一、解决思路 与之前的dp问题相比&#xff0c;给我三个最大的不同感受是&#xff1a; 1、考虑能否自成一组&#xff0c;毕竟一个也是子序列&#xff0c;子数组。所以在很多的dp表填写中需要考虑只有一个的情况。 2、由于子数组子序列是连续的&#xff0c;所以有一些题可以利…

【工具变量】中国数字经济发展水平面板数据DID(2012-2022)

数据来源&#xff1a;《中国统计年鉴》、国家统计局 时间跨度&#xff1a;2012-2022年 数据范围&#xff1a;中国各省 包含指标&#xff1a; 1. 地区 2. id 3. 年份 4. 互联网域名数 5. 互联网接入端口数 6. 互联网宽带接入用户数 7. 移动基站密度 8. 移动电…

一文速通 IIC I2C子系统驱动 通信协议原理 硬件 时序 深度剖析

本文作为一个引入&#xff0c;作用是让读者理解熟知IIC协议关键内容&#xff0c;结合实际手册内容&#xff0c;深度解析协议本质&#xff0c;作为后续嵌入式linux驱动IIC子系统的一个铺垫。 目录 1. 硬件连接 2. IIC传输时序 2.1.写操作 2.2.读操作 2.3.I2C信号 3.IIC协议…

Go语言启动独立进程

文章目录 问题解决方案1. **将 npc.exe 启动为独立的进程**2. **修改 exec.Command 函数**示例代码解释为什么这样有效注意 问题 在你当前的代码中&#xff0c;调用 exec.Command("XXX.exe") 启动 XXX.exe 程序时&#xff0c;这个程序是由 Go 程序直接启动的。如果 …

【Cadence射频仿真学习笔记】IC设计中电感的分析、建模与绘制(EMX电磁仿真,RFIC-GPT生成无源器件及与cadence的交互)

一、理论讲解 1. 电感设计的两个角度 电感的设计可以从两个角度考虑&#xff0c;一个是外部特性&#xff0c;一个是内部特性。外部特性就是把电感视为一个黑盒子&#xff0c;带有两个端子&#xff0c;如果带有抽头的电感就有三个端子&#xff0c;需要去考虑其电感值、Q值和自…

Everything实现,快速搜索文件

最近编写NTFS文件实时搜索工具, 类似 Everything 这样, 翻阅了很多博客, 结果大致如下: 1.分析比较肤浅, 采用USN日志枚举来获取文件记录 速度一言难尽, 因为日志枚举的是全盘所有文件的所有日志, 记录比文件记录还多, 速度当然很慢, 还有的甚至于是 使用 DeviceIoControl 函数…

【完美解决】windows打开cmd窗口的时候闪退解决办法

本章教程&#xff0c;主要记录&#xff0c;windows中打开cmd的时候&#xff0c;闪退问题。产生问题的原因&#xff0c;电脑上之前安装了anaconda&#xff0c;卸载之后&#xff0c;就发现cmd无法正常打开&#xff0c;一执行不会弹出窗口。 解决办法 一、打开注册表 regedit二、…

乐凡信息智能安全管控方案:助力油气田行业安全管控多方位升级

我国油田地域广阔&#xff0c;分布着大量各种油井&#xff0c;油井开采设备的连续稳定运行是保证石油开采的首要条件。然而&#xff0c;由于油田多位于特殊地理环境中&#xff0c;因而实现油井之间的通信首要问题就是要克服地理环境所带来的限制&#xff0c;传统通信系统的建设…

2024年企业中生成式 AI 的现状报告

从试点到生产&#xff0c;企业 AI 格局正在被实时改写。我们对 600 名美国企业 IT 决策者进行了调查&#xff0c;以揭示新兴的赢家和输家。 从试点到生产 2024 年标志着生成性人工智能成为企业关键任务的一年。这些数字讲述了一个戏剧性的故事&#xff1a;今年人工智能支出飙升…

L24.【LeetCode笔记】 杨辉三角

目录 1.题目 2.分析 模拟二维数组的大致思想 杨辉三角的特点 二维数组的元素设置代码 两个参数returnSize和returnColumnSizes 理解"有效"的含义 完整代码 提交结果 1.题目 给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。 在「杨辉…

“从零到一:揭秘操作系统的奇妙世界”【操作系统中断和异常】

一开始看王道网课&#xff0c;它说内中断就是异常。但是我一查ai&#xff0c;它又说内中断和异常不能等同&#xff0c;是两个概念&#xff0c;这时候我觉得天都塌了。内中断到底是不是异常啊&#xff1f; 我心想我今天一定要把这个搞懂&#xff0c;我来交作业了&#xff01;我…

C#代码实现把中文录音文件(.mp3 .wav)转为文本文字内容

我们有一个中文录音文件.mp3格式或者是.wav格式&#xff0c;如果我们想要提取录音文件中的文字内容&#xff0c;我们可以采用以下方法&#xff0c;不需要使用Azure Speech API 密钥注册通过离线的方式实现。 1.首先我们先在NuGet中下载两个包 NAudio 2.2.1、Whisper.net 1.7.3…

Windows装Docker至D盘/其他盘(最新,最准确,直接装)

前言 Docker的默认安装路径为 C:\你的用户名\AppData\Local\Docker\wsl这样安装常常会导致C盘爆满。目前现有博客的安装方法往往不能把docker的container和image也装在非C盘。本博客旨在用最简单的方式&#xff0c;把Docker Deskstop的images和container装在D盘中。 安装前&a…

前端关于pptxgen.js个人使用介绍

官方文档链接:Quick Start Guide | PptxGenJS git地址&#xff1a;https://github.com/gitbrent/PptxGenJS/ 1. 安装命令 npm install pptxgenjs --save yarn add pptxgenjs 2. 示例demo import pptxgen from "pptxgenjs"; // 引入pptxgen // 1. Create a Presenta…

Vulnhub靶场Nginx解析漏洞复现

一.nginx_parsing 原理&#xff1a;这个解析漏洞其实是PHP CGI的漏洞&#xff0c;在PHP的配置⽂件中有⼀个关键的选项cgi.fix_pathinfo默认是开启的&#xff0c;当URL中有不存在的⽂件&#xff0c;PHP就会向前递归解析。在⼀个⽂件/xx.jpg后⾯加上/.php会将 /xx.jpg/xx.php 解…

harbor离线安装 配置https 全程记录

1. 下载harbor最新版本 下载网址: 找最新的版本: https://github.com/goharbor/harbor/releases/download/v2.11.2/harbor-offline-installer-v2.11.2.tgz 这里我直接使用迅雷下载, 然后上传 1.1解压 sudo tar -xf harbor-offline-installer-v2.11.2.tgz -C /opt/ 2. 配置Harb…

Next.js v15 - 服务器操作以及调用原理

约定 服务器操作是在服务器上执行的异步函数。它们可以在服务器组件和客户端组件中调用&#xff0c;用于处理 Next.js 应用程序中的表单提交和数据修改。 服务器操作可以通过 React 的 “use server” 指令定义。你可以将该指令放在 async 函数的顶部以将该函数标记为服务器操…

编译原理复习---目标代码生成

适用于电子科技大学编译原理期末考试复习。 1. 目标代码 是目标机器的汇编代码或机器码&#xff0c;在本课程中指的是类似于汇编代码的一种形式&#xff0c;由一条条的指令构成目标代码。 抽象机指令格式&#xff1a;OP 目的操作数&#xff0c;源操作数。 我们要做的&…

JaxaFx学习(三)

目录&#xff1a; &#xff08;1&#xff09;JavaFx MVVM架构实现 &#xff08;2&#xff09;javaFX知识点 &#xff08;3&#xff09;JavaFx的MVC架构 &#xff08;4&#xff09;JavaFx事件处理机制 &#xff08;5&#xff09;多窗体编程 &#xff08;6&#xff09;数据…

Type-C 接口电热毯:开启温暖智能新时代

在当今科技迅猛发展的时代&#xff0c;智能家居产品如同璀璨繁星般点缀着我们的生活&#xff0c;从智能灯光的温馨到温控系统的精准&#xff0c;处处都彰显着科技赋予生活的便捷与舒适。而在这股追求高效与智能化的洪流之中&#xff0c;一款极具创新的电热毯——Type-C 接口电热…