VUE入门教程( 二 )
<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-dialogtitle="温馨提示":visible.sync="dialogVisible"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: '密码不可为空', trigger: '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>
4、配置路由
import Vue from 'vue'import VueRouter from 'vue-router'import Login from "../components/Login";//安装路由Vue.use(VueRouter)export default new VueRouter({routes:[{path:'/login',name:'login',component:Login}]})
5、在main.js引入路由和elementUI
// The Vue build version to load with the `import` command// (runtime-only or standalone) has been set in webpack.base.conf with an alias.import Vue from 'vue'import App from './App'import router from './router'//导入elementUIimport ElementUI from "element-ui"//导入element cssimport 'element-ui/lib/theme-chalk/index.css'Vue.config.productionTip = falseVue.use(router);Vue.use(ElementUI)/* eslint-disable no-new */new Vue({el: '#app',router,render: h => h(App),//ElementUI规定这样使用})
6、在App.vue中请求路由
<template><div id="app"><router-link to="/login">登录</router-link><router-view></router-view></div></template><script>export default {name: 'App',components: {}}</script><style>#app {font-family: 'Avenir', Helvetica, Arial, sans-serif;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-align: center;color: #2c3e50;margin-top: 60px;}</style>
7、测试 npm run dev

文章插图
注意:如果项目运行失败,可以在package.json里降低sass-loader和node-sass的版本
"sass-loader": "^7.3.1","node-sass": "^4.9.0",
嵌套路由简单说就是在路由里再套一个子路由1、创建一个作为子路由Profile.vue组件
<template><h1>用户列表</h1></template><script>export default {name: "List"}</script><style scoped></style>
2、Main.vue里请求路由<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-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-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: "Main"}</script><style scoped lang="scss">.el-header {background-color: #B3C0D1;color: #333;line-height: 60px;}.el-aside {color: #333;}</style>
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Vue前端开发规范
- 写给后端的Nginx初级入门教程
- 单反相机入门教程
- 超详细Prometheus入门教程
- 基于 Vue3.0+Electron 搭建桌面端应用
- 用webpack创建vue项目/脚手架
- vue 关系图谱组件
- 高质量 Vue.js UI组件库HeyUI
- 我开源了第一个基于Vue的组织架构树组件
- 哪个框架更好:Angular,React,Vue