当前位置: 首页 > article >正文

Vue学习之路:从入门到实践

Vue.js 是一个用于构建用户界面的渐进式JavaScript框架。它旨在易于上手,同时对于复杂的单页应用(SPA)也有强大的功能支持。

环境准备与项目启动

安装 Node.js 和 npm

Vue CLI 工具依赖于 Node.js 的环境,因此在安装 Vue CLI 之前,请确保机器已经安装了 Node.js 和 npm ,npm 是 Node.js 包管理器。你可以通过访问 [Node.js官方网站]来下载并安装最新版本。

Node.js官方网站:https://nodejs.org/

安装 Vue CLI

Vue CLI 是官方提供的命令行工具,可以帮助快速搭建Vue项目的脚手架。打开命令行终端,执行以下命令来全局安装 Vue CLI:

npm install -g @vue/cli

创建新项目

安装完成后,可以使用以下命令创建一个新的 Vue 项目:

vue create my-project

my-project 是项目的名称,你可以根据需要替换为任何喜欢的名字。CLI 将引导你选择一些配置选项,例如是否要使用路由、Vuex状态管理等。

启动开发服务器

进入你的项目文件夹后,可以通过下面的命令启动本地开发服务器:

cd my-project
npm run dev

这将在默认的 http://localhost:8080 地址启动一个热重载的开发服务器。

 Vue 组件学习

什么是组件?

Vue 组件是可复用的 Vue 实例,具有自己的属性和行为。它们扩展了 HTML 元素,封装了可重用的代码。组件系统是 Vue 的一个重要特性,几乎所有的 Vue 应用都是基于组件构建的。

定义一个简单的组件

你可以通过以下方式定义一个全局组件:

Vue.component('my-component-name', {
  // 选项...
})

或者,在使用单文件组件(SFC, Single File Component)时,定义局部组件:

<template>
  <div class="my-component">
    <!-- 组件模板 -->
  </div>
</template>

<script>
export default {
  name: 'MyComponentName',
  // 选项...
}
</script>

<style scoped>
/* 组件样式 */
</style>

使用组件

结合 Element UI 构建高效组件

安装与配置

安装 Element UI
在开始使用 Element UI 之前,你需要确保已经安装了 Vue CLI 并创建了一个 Vue 项目。

引入 Element UI
安装完成后,需要将 Element UI 的样式和脚本引入到你的项目中。有几种方式可以做到这一点:全局引入
在 main.js 文件中添加以下代码来全局引入整个 Element UI 库:

import Vue from 'vue';
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import App from './App.vue';

Vue.use(ElementUI);

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

按需加载
为了减少打包体积,建议仅导入实际使用的组件。可以使用 babel-plugin-component 插件来实现按需加载:

npm install babel-plugin-component -D

然后,在 .babelrc 或 babel.config.js 中添加配置:

{
  "plugins": [
    ["component", [
      {"libraryName": "element-ui", "styleLibraryName": "theme-chalk"}
    ]]
  ]
}

现在可以单独引入组件了,例如按钮组件:

import { Button } from 'element-ui';
Vue.use(Button);

使用 Element UI 组件

可以到 Element UI 官网学习各个组件:https://element.eleme.cn/#/zh-CN/

基础用法
Element UI 提供了许多实用的组件,如 Button(按钮)、Form(表单)、Table(表格)等。这里以按钮为例展示如何使用它。

创建一个按钮组件
首先,在模板中添加 `<el-button>` 标签:
 

<template>
  <div id="app">
    <el-button type="primary">主要按钮</el-button>
  </div>
</template>

添加事件监听器
我们还可以给按钮添加点击事件处理函数:
 

<template>
  <div id="app">
    <el-button @click="handleClick">点击我</el-button>
  </div>
</template>

<script>
export default {
  methods: {
    handleClick() {
      alert('按钮被点击了!');
    }
  }
}
</script>

表单验证
Element UI 的 Form 组件支持内置的字段验证。你可以定义规则并指定要验证的属性。创建一个带有验证的登录表单

<template>
  <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
    <el-form-item label="用户名" prop="username">
      <el-input v-model="ruleForm.username"></el-input>
    </el-form-item>
    <el-form-item label="密码" prop="password">
      <el-input type="password" v-model="ruleForm.password" autocomplete="off"></el-input>
    </el-form-item>
    <el-form-item>
      <el-button type="primary" @click="submitForm('ruleForm')">提交</el-button>
      <el-button @click="resetForm('ruleForm')">重置</el-button>
    </el-form-item>
  </el-form>
</template>

<script>
export default {
  data() {
    return {
      ruleForm: {
        username: '',
        password: ''
      },
      rules: {
        username: [
          { required: true, message: '请输入用户名', trigger: 'blur' },
          { min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' }
        ],
        password: [
          { required: true, message: '请输入密码', trigger: 'blur' },
          { min: 6, max: 18, message: '长度在 6 到 18 个字符', trigger: 'blur' }
        ]
      }
    };
  },
  methods: {
    submitForm(formName) {
      this.$refs[formName].validate((valid) => {
        if (valid) {
          alert('提交成功!');
        } else {
          console.log('错误提交!!');
          return false;
        }
      });
    },
    resetForm(formName) {
      this.$refs[formName].resetFields();
    }
  }
};
</script>

http://www.kler.cn/a/463804.html

相关文章:

  • 《learn_the_architecture_-_generic_interrupt_controller_v3_and_v4__lpisn》学习笔记
  • Linux系统在任意目录运行py脚本
  • Spring Cloud Security集成JWT 快速入门Demo
  • 07-ArcGIS For JavaScript--隐藏参数qualitySettings(memory和lod控制)
  • React-Router 一站式攻略:从入门到精通,掌握路由搭建与权限管控
  • Redis面试相关
  • 穷举vs暴搜vs深搜vs回溯vs剪枝_全排列_子集
  • linux安装mysql80
  • Lesson 12 Self-supervised Learning for Speech and Image
  • 牛客网最新 1180 道 Java 面试题及答案整理
  • cjson系列——EXAMPLES
  • PHP-Casbin v4.0.0 发布,支持 ACL、RBAC、ABAC 等模型的访问控制框架
  • OpenCV-Python实战(12)——图像金字塔
  • 机器学习随机森林回归模型数据预处理中归一化或者标准化
  • SQL 建表语句详解
  • Vue演练场基础知识(二)表单绑定+条件渲染
  • 【2024年-12月-25日-开源社区openEuler实践记录】easybox:简化开发运维流程的开源百宝箱
  • Android Gradle JVM配置文件gradle.properties优先级查找
  • Android TV端弹出的PopupWindow没有获取焦点
  • ECMAScript 变量
  • 纯血鸿蒙ArkUI按钮组件详解
  • 【每日学点鸿蒙知识】WebView代理、2D绘制矩形圆角、TextInput清理按钮、pdf滑动、icon配置问题
  • [算法] [leetcode-324] 摆动排序 II
  • 【C#】C#打印当前时间以及TimeSpan()介绍
  • uniapp——App下载文件,打开文档(一)
  • DeepSeek LLM通过长期主义扩展开源语言模型