VueRouter 第一个工程
概述
我们结合 ElementUI 组件库,将所需知识点应用到实际中,以最快速度带领大家掌握 Vue 的使用
创建工程
注意: 使用 NPM 安装相关组件依赖时可能会遇到权限问题,此时使用 PowerShell 管理员模式运行即可;开始菜单 -> 鼠标右击 -> Windows PowerShell (管理员)
创建一个名为 hello-vue-element
的工程
# 使用 webpack 打包工具初始化一个名为 hello-vue-element 的工程 vue init webpack hello-vue-element
安装依赖
我们需要安装 vue-router
、element-ui
、sass-loader
和 node-sass
四个插件
# 进入工程目录 cd hello-vue-element # 安装 vue-router npm install vue-router --save-dev --registry=https://registry.npm.taobao.org # 安装 element-ui npm i element-ui -S --registry=https://registry.npm.taobao.org # 安装 SASS 加载器 npm install sass-loader node-sass --save-dev --registry=https://registry.npm.taobao.org
# 安装依赖 npm install --registry=https://registry.npm.taobao.org
启动项目
npm run dev
运行项目
在浏览器打开 http://localhost:8080
第一个 ElementUI 页面
目录结构
在源码目录中创建如下结构:
assets
:用于存放资源文件components
:用于存放 Vue 功能组件views
:用于存放 Vue 视图组件router
:用于存放 vue-router 配置
创建首页视图
在 views
目录下创建一个名为 Main.vue
的视图组件;该组件在当前章节无任何作用,主要用于登录后展示登录成功的跳转效果;
1 <template> 2 <div> 3 首页 4 </div> 5 </template> 6 <script> 7 export default { 8 name: "Main" 9 } 10 </script> 11 <style scoped> 12 </style>
创建登录页视图
在 views
目录下创建一个名为 Login.vue
的视图组件,其中 el-*
的元素为 ElementUI 组件;
1 <template> 2 <div> 3 <el-form ref="loginForm" :model="form" :rules="rules" label-width="80px" class="login-box"> 4 <h3 class="login-title">欢迎登录</h3> 5 <el-form-item label="账号" prop="username"> 6 <el-input type="text" placeholder="请输入账号" v-model="form.username"/> 7 </el-form-item> 8 <el-form-item label="密码" prop="password"> 9 <el-input type="password" placeholder="请输入密码" v-model="form.password"/> 10 </el-form-item> 11 <el-form-item> 12 <el-button type="primary" v-on:click="onSubmit('loginForm')">登录</el-button> 13 </el-form-item> 14 </el-form> 15 <el-dialog 16 title="温馨提示" 17 :visible.sync="dialogVisible" 18 width="30%" 19 :before-close="handleClose"> 20 <span>请输入账号和密码</span> 21 <span slot="footer" class="dialog-footer"> 22 <el-button type="primary" @click="dialogVisible = false">确 定</el-button> 23 </span> 24 </el-dialog> 25 </div> 26 </template> 27 <script> 28 export default { 29 name: "Login", 30 data() { 31 return { 32 form: { 33 username: '', 34 password: '' 35 }, 36 // 表单验证,需要在 el-form-item 元素中增加 prop 属性 37 rules: { 38 username: [ 39 {required: true, message: '账号不可为空', trigger: 'blur'} 40 ], 41 password: [ 42 {required: true, message: '密码不可为空', trigger: 'blur'} 43 ] 44 }, 45 // 对话框显示和隐藏 46 dialogVisible: false 47 } 48 }, 49 methods: { 50 onSubmit(formName) { 51 // 为表单绑定验证功能 52 this.$refs[formName].validate((valid) => { 53 if (valid) { 54 // 使用 vue-router 路由到指定页面,该方式称之为编程式导航 55 this.$router.push("/main"); 56 } else { 57 this.dialogVisible = true; 58 return false; 59 } 60 }); 61 } 62 } 63 } 64 </script> 65 <style lang="scss" scoped> 66 .login-box { 67 border: 1px solid #DCDFE6; 68 width: 350px; 69 margin: 180px auto; 70 padding: 35px 35px 15px 35px; 71 border-radius: 5px; 72 -webkit-border-radius: 5px; 73 -moz-border-radius: 5px; 74 box-shadow: 0 0 25px #909399; 75 } 76 .login-title { 77 text-align: center; 78 margin: 0 auto 40px auto; 79 color: #303133; 80 } 81 </style>
创建路由
在 router
目录下创建一个名为 index.js
的 vue-router 路由配置文件
1 import Vue from 'vue' 2 import Router from 'vue-router' 3 import Login from "../views/Login" 4 import Main from '../views/Main' 5 Vue.use(Router); 6 export default new Router({ 7 routes: [ 8 { 9 // 登录页 10 path: '/login', 11 name: 'Login', 12 component: Login 13 }, 14 { 15 // 首页 16 path: '/main', 17 name: 'Main', 18 component: Main 19 } 20 ] 21 });
配置路由
- 修改
main.js
入口代码
1 import Vue from 'vue' 2 import VueRouter from 'vue-router' 3 import router from './router' 4 // 导入 ElementUI 5 import ElementUI from 'element-ui' 6 import 'element-ui/lib/theme-chalk/index.css' 7 import App from './App' 8 // 安装路由 9 Vue.use(VueRouter); 10 // 安装 ElementUI 11 Vue.use(ElementUI); 12 new Vue({ 13 el: '#app', 14 // 启用路由 15 router, 16 // 启用 ElementUI 17 render: h => h(App) 18 });
- 修改
App.vue
组件代码
1 <template> 2 <div id="app"> 3 <router-view/> 4 </div> 5 </template> 6 <script> 7 export default { 8 name: 'App', 9 } 10 </script>
在浏览器打开 http://localhost:8080/#/login
注意:vue引入sass-loader报错:
Module build failed: TypeError: this.getResolve is not a function
原因:
sass-loader的版本过高,导致的编译错误,当前最高版本是8.x,需要退回到7.3.1。
我的解决办法是:
先卸载sass-loader:
npm uninstall sass-loader(卸载当前版本)
再安装7.3.1版本:
npm install sass-loader@7.3.1 --save-dev
vue-admin-template克隆地址
https://github.com/xianquan3230/vue-adnib-template.git
本文来自博客园,作者:l-coil,转载请注明原文链接:https://www.cnblogs.com/l-coil/p/12491624.html