狂神 Vue-elementUI

news/2024/7/10 2:23:18 标签: vue, node.js, npm, jsp

vueelementUI_0">vue-elementUI

能快速的让网站上线

直接看官方文档,里面的文档很详细

https://element.eleme.cn/#/zh-CN

  • 直接全部从头来一遍

  • image-20200907205106917

  • vue-router自己安装的时候老是容易出问题

  • 直接让他默认安装

  • C:\Users\haoyun\Desktop\vue\vue-elementUI>npm i element-ui -S
    
  • 安装elementUI

  • 安装SASS加速器

  • cnpm install sass-loader node-sass --save-dev
    
  • 启动测试一下npm run dev

  • image-20200907210730381

  • Main.vue

  • vue"><template>
      <h1>首页</h1>
    </template>
    
    <script>
      export default {
        name: "Main"
      }
    </script>
    
    <style scoped>
    
    </style>
    
  • Login.vue

  • vue"><template>
      <div>
        <!--el-form一个表单,两个输入框-->
        <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>
            <!--登陆按钮绑定了一个onSubmit事件-->
            <el-button type="primary" v-on:click="onSubmit('loginForm')">登陆</el-button>
          </el-form-item>
        </el-form>
        <!--提示窗-->
        <el-dialog
          title="温馨提示"
          :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:''
            },
            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){
                /*如果引用成功了,会去router中push到main,这种方式称为编程式导航*/
                this.$router.push("/main");
    
              }else {
                this.dialogVisible=true;
                return false;
    
              }
            });
          }
        }
      }
    </script>
    
    
  • index.js

  • import Vue from 'vue'
    import Router from 'vue-router'
    import Main from "../views/Main";
    import Login from "../views/Login";
    
    Vue.use(Router)
    
    export default new Router({
      routes: [
        {
          path: '/main',
          component: Main
    
        },{
          path: '/login',
          component: Login
        }
      ]
    })
    
  • main.js

  • import ElementUI from 'element-ui';
    /*需要加SASS*/
    import 'element-ui/lib/theme-chalk/index.css';
    import Vue from 'vue'
    import App from './App'
    import router from './router'
    
    Vue.config.productionTip = false
    
    Vue.use(router)
    Vue.use(ElementUI);
    
    new Vue({
      el: '#app',
      router,
        /*给谁渲染*/
      render: h => h(App),
    
    })
    
  • App.vue

  • vue"><template>
      <div id="app">
        <h1>测试</h1>
        <router-link to="/login">login</router-link>
        <router-link to="/main">main</router-link>
        <router-view></router-view>
      </div>
    </template>
    
    <script>
      export default {
        name: 'App'
      }
    </script>
    
  • image-20200907215059200

  • image-20200907215114141

  • 提示框

  • 输入正确会跳转到Main页面

  • image-20200907215151573

路由嵌套

image-20200907232929404

对于组件来说只是对局部的改变

  • 主要流程

    • 创建两个组件
    • 路由注册两个组件
    • 首页通过路径点击事件通过路由找到组件,将组件渲染上去
  • image-20200908084957772

  • List.vue

  • vue"><template>
        <h1>用户列表</h1>
    </template>
    
    <script>
        export default {
            name: "UserList"
        }
    </script>
    
    <style scoped>
    
    </style>
    
  • index.js

  • import Vue from 'vue'
    import Router from 'vue-router'
    import Main from "../views/Main";
    import Login from "../views/Login";
    
    import UserList from "../Views/user/List"
    import UserProfile from "../Views/user/Profile"
    
    Vue.use(Router)
    
    export default new Router({
      routes: [
        {
          path: '/main',
          component: Main,
          children:[
            {
              path:"/user/profile",
              component:UserProfile
            },{
              path:"/user/list",
              component:UserList
            }
          ]
        },{
          path: '/login',
          component: Login
        }
      ]
    })
    
  • Main.vue

  • vue"><template>
      <el-container style="height: 500px; border: 1px solid #eee">
        <el-aside width="200px" style="background-color: rgb(238, 241, 246)">
          <el-menu :default-openeds="['1', '3']">
            <el-submenu index="1">
              <template slot="title">
                <i class="el-icon-message"></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-menu"></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></router-view>
          </el-main>
        </el-container>
      </el-container>
    </template>
    
    <style>
      .el-header {
        background-color: #b3c0d1;
        color: #333;
        line-height: 60px;
      }
    
      .el-aside {
        color: #333;
      }
    </style>
    
    <script>
      export default {
        data() {
          const item = {
            date: "2016-05-02",
            name: "王小虎",
            address: "上海市普陀区金沙江路 1518 弄"
          };
          return {
            tableData: Array(20).fill(item)
          };
        }
      };
    </script>
    
  • image-20200908085244194

  • 个人信息绑定了/user/profile,就会通过路由找到/main路径下的/user/profile对应的组件

  • vue"><el-menu-item index="1-1">
      <router-link to="/user/profile">个人信息</router-link>
    </el-menu-item>
    
  • {
      path: '/main',
      component: Main,
      children:[
        {
          path:"/user/profile",
          component:UserProfile
        },{
          path:"/user/list",
          component:UserList
        }
      ]
    }
    

http://www.niftyadmin.cn/n/1699138.html

相关文章

狂神 vue 路由嵌套

路由嵌套 对于组件来说只是对局部的改变 主要流程 创建两个组件路由注册两个组件首页通过路径点击事件通过路由找到组件&#xff0c;将组件渲染上去 List.vue <template><h1>用户列表</h1> </template><script>export default {name: "…

文法去除空产生式_文法化简 (CFG Simplification) 翻译

在上下文无关文法(CFG)中&#xff0c;可能出现所有符号都不需要进行推导的情况。另外&#xff0c;文法中可能含有空产生式(null production)和单产生式(unit production)。消除这些产生式和符号&#xff0c;就叫 CFG化简 。化简本质上包含以下步骤&#xff1a;CFG规约去除单产生…

Ymodem协议(参考STM32)

转自&#xff1a;http://www.cnblogs.com/hiker-blogs/archive/2013/03/17/stm32.html 相信很多人都希望&#xff0c;不开盖就可以对固件进行升级吧&#xff0c;就像手机那些。下文中的bootload就来实现这样的功能。 前段时间有项目关于Bootload设计。所以就仔细的去了研究了一…

mysql 启动 1067_MySQL启动提示1067 错误的解决

今天在重新安装MySQL服务的时候遇到如下错误&#xff1a;C:\Program Files\MySQL\MySQL Server 4.1\bin>MySQLd-nt --removeService successfully removed.C:\Program Files\MySQL\MySQL Server 4.1\bin>MySQLd-nt --installService successfully installed.C:\Program F…

狂神 Vue 参数传递以及重定向

参数传递以及重定向 通过前端url传递参数&#xff0c;对应的路径添加params接收&#xff0c;显示参数 Main.vue <el-menu-item index"1-1"><router-link v-bind:to"{name:UserProfile,params:{id:1}}">个人信息</router-link> </e…

狂神 Vue 钩子函数与异步请求

404和路由钩子 参数传递 将Login界面的用户名显示到main页面 先从Login界面&#xff0c;转发时加上用户名输入框的数据 <el-form-item label"账号" prop"username"><el-input type"text" placeholder"请输入账号" v-mode…

【差分+二分答案】【NOIP2012】借教室

Description 在大学期间&#xff0c;经常需要租借教室。大到院系举办活动&#xff0c;小到学习小组自习讨论&#xff0c;都需要向学校申请借教室。教室的大小功能不同&#xff0c;借教室人的身份不同&#xff0c;借教室的手续也不一样。 面对海量租借教室的信息&#xff0c;我们…

SpringBoot MartinFlowar微服务译文理解

微服务 是一种架构风格&#xff0c;将业务拆分成模块&#xff0c;部署在不同的主机上提供结构&#xff0c;提供服务&#xff0c;通过http的方式通信 单体应用架构&#xff08;All in One&#xff09; 将一个应用的所有应用服务都封在一个应用中&#xff0c;无论什么系统&…