vue+element

简介#

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

安装element-ui#

# 创建vue-cli 项目
	vue init webpack vue-hello

# 安装 element ui
	cnpm i element-ui -S

//安装SASS加载器 css加载器
cnpm install sass-loader node-sass --save-dev
//启动测试
cnpm run dev 

使用#

完整引入main.js#

import Vue from 'vue';
import App from './App.vue';

//导入element,必要的两个东西
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';

//声明ElementUI模块
Vue.use(ElementUI);

new Vue({
  el: '#app',
  render: h => h(App)
});

第一个的demo#

创建组件button.vue#

# 在路由进行注册
	routes: [{path: '/',component:Button}]

  

button.vue

<template>
  <dvi>
    <el-row>
      <el-button round>圆角按钮</el-button>
      <el-button type="primary" round>主要按钮</el-button>
      <el-button type="success" round>成功按钮</el-button>
      <el-button type="info" round>信息按钮</el-button>
      <el-button type="warning" round>警告按钮</el-button>
      <el-button type="danger" round>危险按钮</el-button>
    </el-row>
  </dvi>
</template>

<script>
    export default {
        name: "Button"
    }
</script>

<style scoped>

</style>


组件的使用#

# el-组件名字 
	表示组件
# 属性 写在组件上  
	type round表示属性:用来修改样式
<el-button type="primary" round>主要按钮</el-button>

layout布局#

# 通过基础的 24 分栏,迅速简便地创建布局
	分为row 和 24 col 
# 使用
	<el-row>
  		<el-col :span="12"><div class="grid-content bg-purple"></div></el-col>
 	 	<el-col :span="12"><div class="grid-content bg-purple-light"></div></el-col>
	</el-row>
	

Input Methods#

# el组件
	元素上存在 属性 ,事件 ,方法(是指组件的方法)
	事件的绑定用 @事件=""
	方法的绑定用 ref="组件别名"  调用时用this.$refs.组件别名.方法

Npm命令解释#

npm install moduleName --save(用于正式环境)

  • 将项目模块写入到package.json的dependencies节点
  • 安装模块到当前node_modules文件夹下
  • 运行npm install时,会将模块下载到当前node_modules目录下

npm install moduleName --save-dev(用于开发环境)

  • 将项目模块写入到package.json的devDependencies节点
  • 安装模块到当前node_modules文件夹下
  • 运行npm install时,会将模块下载到当前node_modules目录下

npm install moduleName -g

  • 安装模块到全局,不会在项目node_modules目录中安装
  • 不会将模块信息写入到dependencies或devDependencies节点
  • 运行npm install时,不会下载该模块

npm install moduleName

  • 安装模块到当前node_modules文件夹下
  • 不会将模块信息写入到dependencies或devDependencies节点
  • 运行npm install时,不会下载该模块

devDependencies节点下的模块是开发时候需要的,如构建工具glup、webpack,预处理器less、sass这些只在开发环境有用,所以使用–save-dev安装

dependencies节点下的模块是线上代码运行需要的,如axios、vue-router、vuex,所以需要使用–save安装

创建目录视图view#

Login.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-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>

Main.vue#

<template>
    <h1>主页</h1>
</template>

<script>
    export default {
        name: "Main"
    }
</script>

<style scoped>

</style>

创建路由#

先创建router目录,在创建index.js

import Vue from "vue";
import VueRouter from "vue-router";

import Login from "../view/Login";
import Main from "../view/Main";
//声明路由
Vue.use(VueRouter)

//创建路由
export default new VueRouter({
  //定义路由转发
  routes:[
    {
      //路径,转到哪个组件
      path:"/login",
      component : Login
    },
    {
      //路径,转到哪个组件
      path:"/main",
      component : Main
    }
  ]
})

编写入口#

导入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'

//导入element,必要的两个东西
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';


import Router from "./router/index" //就会自动注册组件
Vue.config.productionTip = false

//声明ElementUI模块
Vue.use(ElementUI);



new Vue({
  el: '#app',
  render: h => h(App),
  router:Router//就会自动注册组件
});

bug解决#

TypeError: this.getResolve is not a function

原因:安装的sass-loader的版本为最新8.0.0,查看网上资料说是版本过高导致编译错误。

解决方法:

把项目package.json文件中sass-loader版本改为7.3.1。执行命令,重新安装项目依赖:

Error in render: "TypeError: Cannot read property 'matched' of undef

出现错误的原因是在手写一个vue的路由组件的时候,忘了在new vue 里面写router

解决:

router:Router//就会自动注册组件

作者:Esofar

出处:https://www.cnblogs.com/firsthelloworld/p/13545322.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   我不想学编丿程  阅读(354)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示