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

Vue.js 的介绍与组件开发初步

Vue.js 的介绍与组件开发初步

  • Vue.js 的介绍与组件开发初步
    • 引言
    • 第一部分:Vue.js 基础入门
      • 1.1 什么是 Vue.js?
      • 1.2 搭建 Vue.js 开发环境
        • 安装 Node.js 和 npm
        • 安装 Vue CLI
        • 创建新项目
        • 运行示例
      • 1.3 第一个 Vue.js 示例
    • 第二部分:Vue.js 组件开发基础
      • 2.1 组件的作用域与作用域穿透
      • 2.2 组件的生命周期钩子
      • 2.3 组件的事件系统
    • 第三部分:Vue.js 的组件开发的进阶特性
      • 3.1 组件的状态管理
      • 3.2 组件的插槽
      • 3.3 组件的多语言(说的更好听一点:国际化)支持
    • 第四部分:Vue.js 的实际应用开发
      • 4.1 开发一个简单的待办事项列表
        • 父组件(App.vue)
        • 子组件(TodoItem.vue)
    • 第五部分:总结与扩展
      • 5.1 总结
      • 5.2 扩展学习

Vue.js 的介绍与组件开发初步

引言

随着互联网的快速发展,前端技术也在不断进步。在众多的前端框架中,Vue.js 以其简洁、高效和易用性备受欢迎。无论是个人开
发者还是企业团队,Vue.js 都成为了构建用户界面的理想选择。本文将详细介绍 Vue.js 的基本概念,并深入探讨组件开发的相关
知识,帮助读者快速上手并掌握 Vue.js 的核心技能。

第一部分:Vue.js 基础入门

1.1 什么是 Vue.js?

Vue.js 是一个用于构建用户界面的 JavaScript 框架。它遵循 MVVM(Model-View-ViewModel)模式,使得数据绑定更加简洁和高效
。与传统的 MVC 架构不同,Vue.js 将视图和 ViewModel 结合在一起,从而简化了代码结构。

1.2 搭建 Vue.js 开发环境

安装 Node.js 和 npm

首先需要安装 Node.js 和 npm(Node Package Manager),这是前提条件

具体如何安装可以参考作者的这篇文章:
Node.js 和 npm安装教程

安装 Vue CLI

Vue CLI 是一个官方的脚手架工具,能够快速创建和管理 Vue 项目。

npm install -g vue-cli-service
创建新项目

使用 Vue CLI 创建一个新的 Vue 项目:

vue create my-vue-app
cd my-vue-app
npm run dev
运行示例

打开浏览器,访问 http://localhost:8080,即可看到运行中的 Vue 应用。

1.3 第一个 Vue.js 示例

<!DOCTYPE html>
<html>
<head><title>Vue.js 入门</title><script src="https://unpkg.com/vue@2"></script>
</head>
<body><div id="app">{{ message }}</div><script>var app = new Vue({el: '#app',data: {message: 'Hello, Vue.js!'}});</script>
</body>
</html>

这个简单的示例展示了如何使用 Vue 实现数据绑定。通过 {{ }} 指令,视图中的内容会根据数据的变化自动更新。

第二部分:Vue.js 组件开发基础

2.1 组件的作用域与作用域穿透

在组件中,data 属性默认作用于当前组件的范围。如果需要将属性传递给父组件,可以使用 v-bind 或者 : 操作符。

<!-- 父组件 -->
<child-component :message="parentMessage"></child-component><!-- 子组件 -->
<script>export default {props: ['message']}
</script>

2.2 组件的生命周期钩子

了解 Vue 组件的生命周期对于优化性能至关重要。

// 生命周期函数
export default {beforeCreate() { /* 初始化前 */ },created() { /* 初始化后 */ },mounted() { /* 挂载 DOM 后 */ },updated() { /* 更新后 */ },destroyed() { /* 销毁前 */ }
}

2.3 组件的事件系统

通过自定义事件,组件之间可以实现高效的通信。

<!-- 触发事件 -->
this.$emit('custom-event', 'event-data')<!-- 监听事件 -->
@custom-event="handleEvent"

第三部分:Vue.js 的组件开发的进阶特性

3.1 组件的状态管理

对于复杂应用,推荐使用 Vuex 进行状态管理。

// store.js
import Vue from 'vue'
import Vuex from 'vuex'Vue.use(Vuex)export const store = new Vuex.Store({state: {count: 0},mutations: {increment(state) {state.count++}}
})

3.2 组件的插槽

插槽允许父组件向子组件传递内容,增强了组件的灵活性。

<!-- 父组件 -->
<child-component><template slot="header"><h1>Header</h1></template>
</child-component><!-- 子组件 -->
<slot name="header"></slot>

3.3 组件的多语言(说的更好听一点:国际化)支持

通过 vue-i18n,可以轻松实现国际化的组件开发。

import Vue from 'vue'
import VueI18n from 'vue-i18n'Vue.use(VueI18n)const i18n = new VueI18n({locale: 'zh-CN', // 设置默认语言messages: {'en-US': { ... },'zh-CN': { ... }}
})

第四部分:Vue.js 的实际应用开发

4.1 开发一个简单的待办事项列表

父组件(App.vue)
<template><div id="app"><h1>待办事项</h1><input v-model="newTodo" placeholder="输入新任务"><button @click="addTodo">添加</button><ul><li v-for="(todo, index) in todos" :key="index">{{ todo.text }}<button @click="removeTodo(index)">删除</button></li></ul></div>
</template><script>
export default {data() {return {newTodo: '',todos: []}},methods: {addTodo() {if (this.newTodo.trim()) {this.todos.push({ text: this.newTodo })this.newTodo = ''}},removeTodo(index) {this.todos.splice(index, 1)}}
}
</script>
子组件(TodoItem.vue)
<template><li class="todo-item">{{ text }}<button @click="deleteTodo">删除</button></li>
</template><script>
export default {props: ['text', 'index'],methods: {deleteTodo() {this.$emit('delete', this.index)}}
}
</script>

第五部分:总结与扩展

5.1 总结

  • 组件化开发使代码结构更清晰。
  • Vue 提供了丰富的生命周期钩子,便于控制组件的行为。
  • 使用 Vuex 进行状态管理,可以提升应用的可维护性。

5.2 扩展学习

  • 深入理解响应式原理,优化数据绑定性能。
  • 学习 Vue Router 实现前后台路由功能。
  • 探索 Nuxt.js 或 Vue CLI 快速开发脚手架。

通过以上内容的学习和实践,开发者可以熟练掌握 Vue 组件的开发技巧,并能够构建出高效、可维护的 Web 应用。

相关文章:

Vue.js 的介绍与组件开发初步

Vue.js 的介绍与组件开发初步 Vue.js 的介绍与组件开发初步引言第一部分&#xff1a;Vue.js 基础入门1.1 什么是 Vue.js&#xff1f;1.2 搭建 Vue.js 开发环境安装 Node.js 和 npm安装 Vue CLI创建新项目运行示例 1.3 第一个 Vue.js 示例 第二部分&#xff1a;Vue.js 组件开发基…...

【仿12306项目】通过加“锁”,解决高并发抢票的超卖问题

文章目录 一. 测试工具二. 超卖现象演示三. 原因分析四. 解决办法方法一&#xff1a;加synchronized锁1. 单个服务节点情况2. 增加服务器节点&#xff0c;分布式环境synchronized失效演示 方法二&#xff1a;使用Redis分布式锁锁解决超卖问题1. 添加Redis分布式锁2. 结果 方法三…...

wow-agent---task4 MetaGPT初体验

先说坑&#xff1a; 1.使用git clone模式安装metagpt 2.模型尽量使用在线模型或本地高参数模型。 这里使用python3.10.11调试成功 一&#xff0c;安装 安装 | MetaGPT&#xff0c;参考这里的以开发模型进行安装 git clone https://github.com/geekan/MetaGPT.git cd /you…...

MVANet——小范围内捕捉高分辨率细节而在大范围内不损失精度的强大的背景消除模型

一、概述 前景提取&#xff08;背景去除&#xff09;是现代计算机视觉的关键挑战之一&#xff0c;在各种应用中的重要性与日俱增。在图像编辑和视频制作中有效地去除背景不仅能提高美学价值&#xff0c;还能提高工作流程的效率。在要求精确度的领域&#xff0c;如医学图像分析…...

94,【2】buuctf web [安洵杯 2019]easy_serialize_php

进入靶场 可以查看源代码 <?php // 从 GET 请求中获取名为 f 的参数值&#xff0c;并赋值给变量 $function // 符号用于抑制可能出现的错误信息 $function $_GET[f];// 定义一个名为 filter 的函数&#xff0c;用于过滤字符串中的敏感词汇 function filter($img) {// 定义…...

LabVIEW如何有效地进行数据采集?

数据采集&#xff08;DAQ&#xff09;是许多工程项目中的核心环节&#xff0c;无论是测试、监控还是控制系统&#xff0c;准确、高效的数据采集都是至关重要的。LabVIEW作为一个图形化编程环境&#xff0c;提供了丰富的功能来实现数据采集&#xff0c;确保数据的实时性与可靠性…...

6 [新一代Github投毒针对网络安全人员钓鱼]

0x01 前言 在Github上APT组织“海莲花”发布存在后门的提权BOF&#xff0c;通过该项目针对网络安全从业人员进行钓鱼。不过其实早在几年前就已经有人对Visual Studio项目恶意利用进行过研究&#xff0c;所以投毒的手法也不算是新的技术。但这次国内有大量的安全从业者转发该钓…...

《Origin画百图》之脊线图

1.数据准备&#xff1a;将数据设置为y 2.选择绘图>统计图>脊线图 3.生成基础图形&#xff0c;并不好看&#xff0c;接下来对图形属性进行设置 4.双击图形>选择图案>颜色选择按点>Y值 5.这里发现颜色有色阶&#xff0c;过度并不平滑&#xff0c;需要对色阶进行更…...

linux 函数 sem_init () 信号量、sem_destroy()

&#xff08;1&#xff09; &#xff08;2&#xff09; 代码举例&#xff1a; #include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <semaphore.h> #include <unistd.h>sem_t semaphore;void* thread_function(void* arg) …...

Kafka架构

引言 Kafka 凭借其独树一帜的分区架构&#xff0c;在消息中间件领域展现出了卓越的性能表现。其分区架构不仅赋予了 Kafka 强大的并行计算能力&#xff0c;使其能够高效处理海量数据&#xff0c;还显著提升了系统的容灾能力&#xff0c;确保在复杂的运行环境中始终保持稳定可靠…...

刷题记录 动态规划-2: 509. 斐波那契数

题目&#xff1a;509. 斐波那契数 难度&#xff1a;简单 斐波那契数 &#xff08;通常用 F(n) 表示&#xff09;形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始&#xff0c;后面的每一项数字都是前面两项数字的和。也就是&#xff1a; F(0) 0&#xff0c;F(1) 1 F(n…...

RDP协议详解

以下内容包含对 RDP&#xff08;Remote Desktop Protocol&#xff0c;远程桌面协议&#xff09;及其开源实现 FreeRDP 的较为系统、深入的讲解&#xff0c;涵盖协议概要、历史沿革、核心原理、安全机制、安装与使用方法、扩展与未来发展趋势等方面&#xff0c; --- ## 一、引…...

设计模式的艺术-观察者模式

行为型模式的名称、定义、学习难度和使用频率如下表所示&#xff1a; 1.如何理解观察者模式 一个对象的状态或行为的变化将导致其他对象的状态或行为也发生改变&#xff0c;它们之间将产生联动&#xff0c;正所谓“触一而牵百发”。为了更好地描述对象之间存在的这种一对多&…...

【C语言设计模式学习笔记1】面向接口编程/简单工厂模式/多态

面向接口编程可以提供更高级的抽象&#xff0c;实现的时候&#xff0c;外部不需要知道内部的具体实现&#xff0c;最简单的是使用简单工厂模式来进行实现&#xff0c;比如一个Sensor具有多种表示形式&#xff0c;这时候可以在给Sensor结构体添加一个enum类型的type&#xff0c;…...

Baklib如何优化企业知识管理提升团队协作与创新能力分析

内容概要 在现代企业中&#xff0c;知识管理已经成为提升竞争力的关键因素之一。Baklib作为一种全面的知识管理解决方案&#xff0c;致力于帮助企业高效整合和运用内部及外部知识资源。它通过建立统一的知识管理框架&#xff0c;打破了部门之间的信息壁垒&#xff0c;实现了跨…...

Dubbo view

1、 说说Dubbo核心的配置有哪些&#xff1f; 答&#xff1a; 配置 配置说明 dubbo:service 服务配置 dubbo:reference 引用配置 dubbo:protocol 协议配置 dubbo:application 应用配置 dubbo:module 模块配置 dubbo:registry 注册中心配置 dubbo:monitor 监控中心配置 dubbo:pr…...

分享刷题过程中有价值的两道题目

小编在这里先祝大家新的一年里所愿皆得&#xff0c;万事顺意&#xff0c;天天开心&#xff01;&#xff01;&#xff01; 一.水仙花数 题目描述&#xff1a; 求100∼999中的水仙花数。若三位数ABCA^3B^3C^3&#xff0c;则称ABC为水仙花数。例如153&#xff0c;135333112527153&…...

蓝桥杯例题六

奋斗是一种态度&#xff0c;也是一种生活方式。无论我们面对什么样的困难和挑战&#xff0c;只要心怀梦想&#xff0c;坚持不懈地努力&#xff0c;就一定能够迈向成功的道路。每一次失败都是一次宝贵的经验&#xff0c;每一次挫折都是一次锻炼的机会。在困难面前&#xff0c;我…...

DeepSeek 详细使用教程

1. 简介 DeepSeek 是一款基于人工智能技术的多功能工具&#xff0c;旨在帮助用户高效处理和分析数据、生成内容、解答问题、进行语言翻译等。无论是学术研究、商业分析还是日常使用&#xff0c;DeepSeek 都能提供强大的支持。本教程将详细介绍 DeepSeek 的各项功能及使用方法。…...

《tcp/ip协议详解》,tcp/ip协议详解

TCP/IP协议&#xff08;Transmission Control Protocol/Internet Protocol&#xff09;是网络通信协议的一种&#xff0c;也被称为“Internet协议”&#xff0c;是Internet上运行的基本协议&#xff0c;广泛应用于各种网络环境和应用场合。以下是对TCP/IP协议的详细解析&#x…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架&#xff0c;它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用&#xff0c;和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出&#xff1a;JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中&#xff0c;随机数的生成看似简单&#xff0c;却隐藏着许多玄机。无论是生成密码、加密密钥&#xff0c;还是创建安全令牌&#xff0c;随机数的质量直接关系到系统的安全性。Jav…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元&#xff08;GRU&#xff09;长短期记忆神经网络&#xff08;LSTM&#xff09…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...