一、常规项目配置安装:
1、安装vue-router路由:
cmd下在当前项目目录下执行 :
npm install vue-router --save-dev
如果因为依赖安装失败,则执行 :
npm install --legacy-peer-deps vue-router --save-dev
如果后续出现版本冲突问题,可以降低版本。
2、安装vue-axios:
cmd下在当前项目目录下执行:
npm install --save axios vue-axios
3、安装element-ui:
cmd下在当前项目目录下执行:
npm i element-ui -S
4、安装sass加载器:
cmd下在当前项目目录下执行:
cnpm install sass-loader node-sass --save-dev
切记版本不要选太高,可以指定版本安装,亲测4.0.0最稳定。
5、将所有安装部署到项目中:
cmd下在当前项目目录下执行:
npm install
6、启动测试:
cmd下在当前项目目录下执行:
npm run dev
二、项目实例:
1、项目结构:
说明:
- assets:用于存放资源文件
- components:用于存放Vue功能组件
- views:用于存放Vue视图组件
- router:用于存放vue-router配置
2、创建组件:
<template>
<div>
<el-form ref="loginForm" :model="form" :rules="rules" label-width="80px" class="login-box">
<h3 class="login-title">欢迎登录</h3>
<el-form-item label="账号" prop="username">
<el-input type="text" placeholder="请输入账号" v-model="form.username"/>
</el-form-item>
<el-form-item label="密码" prop="password">
<el-input type="password" placeholder="请输入密码" v-model="form.password"/>
</el-form-item>
<el-form-item>
<el-button type="primary" v-on:click="onsubmit('loginForm')">登录</el-button>
</el-form-item>
</el-form>
<el-dialog title="温馨提示" :visible.sync="dialogVisiable" width="30%" :before-close="handleClose">
<span>请输入账号和密码</span>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="dialogVisible = false">确定</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
export default {
name: "Login",
data(){
return{
form:{
username:'',
password:''
},
//表单验证,需要在 el-form-item 元素中增加prop属性
rules:{
username:[
{required:true,message:"账号不可为空",trigger:"blur"}
],
password:[
{required:true,message:"密码不可为空",tigger:"blur"}
]
},
//对话框显示和隐藏
dialogVisible:false
}
},
methods:{
onSubmit(formName){
//为表单绑定验证功能
this.$refs[formName].validate((valid)=>{
if(valid){
//使用vue-router路由到指定界面,该方式称为编程式导航
this.$router.push('/main');
}else{
this.dialogVisible=true;
return false;
}
});
}
}
}
</script>
<style lang="scss" scoped>
.login-box{
border:1px solid #DCDFE6;
width: 350px;
margin:180px auto;
padding: 35px 35px 15px 35px;
border-radius: 5px;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
box-shadow: 0 0 25px #909399;
}
.login-title{
text-align:center;
margin: 0 auto 40px auto;
color: #303133;
}
</style>
<template>
<div>首页</div>
</template>
<script>
export default {
name:"Main"
}
</script>
<style scoped>
</style>
//导入vue
import Vue from 'vue';
import VueRouter from 'vue-router';
//使用
Vue.use(VueRouter);
//导出
export default new VueRouter({
})
vue-router为之前安装的模块,这里进行导入,然后还要安装路由Vue.use()即可使用,还需要暴露路由,让其他组件也能使用,则要最后那段。
将我们之前写两个组件导入,并设置其访问路径与组件。
//导入vue
import Vue from 'vue';
import VueRouter from 'vue-router';
//导入组件
import Main from "../views/Main";
import Login from "../views/Login";
//使用
Vue.use(VueRouter);
//导出
export default new VueRouter({
routes: [
{
//登录页
path: '/main',
component: Main
},
//首页
{
path: '/login',
component: Login
},
]
})
import Vue from 'vue'
import App from './App'
import router from "./router"
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
Vue.config.productionTip = false
Vue.use(router)
Vue.use(ElementUI)
/* eslint-disable no-new */
new Vue({
el: '#app',
router,
render:h=>h(App)
})
导入element-ui使其生效。
<template>
<div id="app">
<router-view></router-view>
</div>
</template>
<script>
export default {
name: 'App',
}
</script>
app组件中<router-view>里来显示子组件的视图。
在控制台当前项目下输入:
npm run dev
结果测试成功:
<template>
<h1>用户列表</h1>
</template>
<script>
export default {
name: "UserList"
}
</script>
<style scoped>
</style>
<template>
<div>
<h1>个人信息</h1>
</div>
</template>
<script>
export default {
name: "UserProfile",
}
</script>
<style scoped>
</style>
<template>
<div>
<el-container>
<el-aside width="200px">
<el-menu :default-openeds="['1']">
<el-submenu index="1">
<template slot="title"><i class="el-icon-caret-right"></i>用户管理</template>
<el-menu-item-group>
<el-menu-item index="1-1">
<!--插入的地方-->
<router-link to="/user/profile">个人信息</router-link>
</el-menu-item>
<el-menu-item index="1-2">
<!--插入的地方-->
<router-link to="/user/list">用户列表</router-link>
</el-menu-item>
<el-menu-item index="1-3">
<!--插入的地方-->
<router-link to="/goHome">回到首页</router-link>
</el-menu-item>
</el-menu-item-group>
</el-submenu>
<el-submenu index="2">
<template slot="title"><i class="el-icon-caret-right"></i>内容管理</template>
<el-menu-item-group>
<el-menu-item index="2-1">分类管理</el-menu-item>
<el-menu-item index="2-2">内容列表</el-menu-item>
</el-menu-item-group>
</el-submenu>
<el-submenu index="3">
<template slot="title"><i class="el-icon-caret-right"></i>系统管理</template>
<el-menu-item-group>
<el-menu-item index="3-1">分类管理</el-menu-item>
<el-menu-item index="3-2">内容列表</el-menu-item>
</el-menu-item-group>
</el-submenu>
</el-menu>
</el-aside>
<el-container>
<el-header style="text-align: right; font-size: 12px">
<el-dropdown>
<i class="el-icon-setting" style="margin-right: 15px"></i>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item>个人信息</el-dropdown-item>
<el-dropdown-item>退出登录</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</el-header>
<el-main>
<!--在这里展示视图-->
<router-view />
</el-main>
</el-container>
</el-container>
</div>
</template>
<script>
export default {
name: "Main2"
}
</script>
<style scoped lang="scss">
.el-header {
background-color: #B3C0D1;
color: #333;
line-height: 60px;
}
.el-aside {
color: #333;
}
</style>
<template>
<h1>404</h1>
</template>
<script>
export default {
name: "NotFound"
}
</script>
<style scoped>
</style>
import Vue from 'vue'
import VueRouter from 'vue-router'
import Content from "../components/Content";
import Main1 from "../components/Main";
import Login from "../views/Login"
import Main2 from "../views/Main";
import UserList from "../views/user/List";
import UserProfile from "../views/user/Profile";
import NotFound from "../views/NotFound";
//安装路由
Vue.use(VueRouter)
//配置导出路由
export default new VueRouter({
//让地址栏不出现#号
mode: 'history',
routes: [
{
//路由路径 相当于@RequestMapping
path: '/content',
name: 'Content',
//跳转的组件
component: Content
},
{
//路由路径
path: '/main1',
name: 'Main',
//跳转的组件
component: Main1
},
{
//路由路径
path: '/login',
name: 'Login',
//跳转的组件
component: Login,
},
{
path: '/main2/:username',
name: 'Main2',
component: Main2,
//子组件(嵌套组件)
children: [
{
path: '/user/profile/:id',
component: UserProfile
},
{
path: '/user/list',
component: UserList
}
]
},
{
path : '/goHome',
//重定向
redirect: '/main2'
},
{
path: '*',
component: NotFound
}
]
})
其中还有参数传递与钩子函数,实现起来比较简单 ,这里便不一一介绍了,vue基础快速学习结束,之后结合项目去完善更多的高级vue使用,对于后端开发人员来说,学到入门了解即可,也可深入学习慢慢向全栈工程师发展。
文章浏览阅读10w+次,点赞397次,收藏4.5k次。目录1. 什么是 Spring Boot?2. 为什么要用SpringBoot3. SpringBoot与SpringCloud 区别4. Spring Boot 有哪些优点?5. Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?6. Spring Boot 支持哪些日志框架?推荐和默认的日志框架是哪个?7. SpringBoot Starter的工作原理8. Spring Boot 2.X 有什么新特性?与 1.X 有什么区别?9. SpringBoot支持什么前端模板,10. Spr_【2022最新java面试宝典】—— springboot面试题(44道含答案)_java spingboot 面
文章浏览阅读2.7k次。 using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Drawing._region graphicspath 矩形 填充
文章浏览阅读459次。请大家原谅我消失了一年多,这一年半的时间在从事项目管理工作,积攒一年终于获得一定成果,拿来给大家分享。首先晒个绝版PMP 5A证书和考试成绩单,真的是绝版哦,因为后边就不再有5A的评价了^_-然后附上个人结合项目管理知识理论与实际项目经验整合的资料,包括了大家可能都会不易搞明白的理论落地实际的关键,以及一些从事项目管理必备的素材,如软开国家标准、阿里巴巴代码规范、高级项目管理师电子版书籍等。深度可能不够拔高,适合从事项目管理初期的人员参考,但绝对全!是本人整理后企业内部实行的版本,关键完全._pmp理论落地
文章浏览阅读2k次。既能帮助用户快速总结分析,又能源源不断地提供创作灵感,致力为用户提供最优质的智能化思维导图方案,专注于 AI 生成思维导图的效率工具。小测一下直接输入一句话 / 问题,AI 自动生成了一份完整的思维导图,而且支持在线编辑,支持图片、SVG 和 MarkDown 等等格式导出。是什么 ChatMind,是一款利用与 AI 的对话中生成和编辑思维导图的工具,支持上下文改写扩充对话,ChatMind AI 可用于多种场景,例如记笔记、日程安排、感兴趣的大家可以去试一下,而且可以免费生成8条!_chatmind
文章浏览阅读1w次。龙芯1x嵌入式开发工具收藏一下:龙芯1x嵌入式开发工具|Loongson 1x Embedded Develo…|关于我们|龙芯嵌入式开发工具|苏州天晟软件龙芯嵌入式开发工具|苏州天晟软件,龙芯1x嵌入式开发工具是一套用于开发龙芯1系列芯片的RTThread/FreeRTOS/uCOS/RTEMS项目或裸机项目的嵌入式编程工具(首页内容),关于我们http://www.loongide.com/龙芯1x嵌入式开发工具是一套用于开发龙芯1系列芯片的RT-Thread/FreeRTOS/uCOS/ RT_龙芯1x嵌入式开发环境软件
文章浏览阅读716次。此外,HTTPS用的是443端口,HTTP用的是80端口HTTP协议报文:请求报文和响应报文HTTP请求: 由四部分组成:请求行(含请求方法GET或POST,以及URL),请求头部,空行,请求数据请求头部:含若干个属性,格式为“属性名:属性值”,服务端据此获取客户端的信息。例如 Accept:浏览器能接受的媒体类型;Accept-language:可接受的语言 ..._http1.1帧结构
文章浏览阅读2.9k次,点赞14次,收藏15次。联邦学习和安全多方计算都是解决数据隐私保护问题的技术,两者既有联系又有区别。本文针对两种的基本概念、应用场景、区别与联系进行了详细介绍。_联邦学习与安全多方计算
文章浏览阅读327次,点赞6次,收藏2次。前言今天要使用Java File类,实现创建目录,移动文件,重命名文件名功能[email protected] public void mvFileTest() { String fileName = "test.txt"; // 目标文件目录 String cameraPath = "C:/develop/project/lmes/ftp_root/camera"; // 源文件 File sourceF_java创建目录命名
文章浏览阅读1.5w次,点赞2次,收藏5次。今天想在页面上加一点效果,所以就做了一个图片翻转 直接上代码吧:1.第一步肯定是在HTML页面上放入图片 <img class="transition" src="XXX.jpg" /></li>2.第二步骤就是在改元素下面添加一个transition,参数分别表示时间和移动的效果 .transition { -webkit-transi..._css img上下翻转
文章浏览阅读3.6k次,点赞7次,收藏22次。最小二乘法(Ordinary Least Square, OLS)是用数学公式直接求解线性回归方程的参数的方法。以最简单的一元线性回归为例,公式6-4中显示一系列的X值可以求出一系列的预测值Y’,的目的是使得每一对预测的Y’和Y之间的误差(Y- Y’)最小化。由于误差有正误差有负误差,为了避免彼此抵消,需要使用误差的平方来衡量。虽然绝对值也可以避免误差抵消,但是绝对值的代数计算性不如平方好,不便于求微分。二乘表示平方,最小二乘法就表示求误差平方和最小的方法。_python最小二乘法求回归方程
文章浏览阅读1.7k次。在实际开发中,可能需要拿到某个properties的值,如果不是经常使用,可以直接用inputStream=ZHRTActivityUrlUtils.class.getClassLoader().getResourceAsStream(ACTIVITY_FILENAME);properties.load(inputStream);但是比如把URL连接存到properties文件的时候,_properties static
文章浏览阅读1.7k次。Usenix Security是信息安全领域“四大”顶级学术会议(此外还包括S&P,CCS,NDSS)之一,始于上世纪90年代初,每年涵盖的安全领域包含:二进制安全、固件安全、取证分析、Web安全、隐私保护、恶意分析、硬件保护、智能合约等。Usenix Security 被中国计算机学会(CCF)列为“网络与信息安全”A类会议。网络安全行业已经通过建立强大的社区来发现和修补漏洞。CVE(Common Vulnerabilities and Exposures,常见漏洞和泄露)和NVD(Na._gsd cve