vue脚手架创建,ref、双向绑定,axios请求。。

Vue CLI 是 Vue.js 官方提供的一个脚手架工具,可以快速搭建 Vue.js 项目,并提供了一些常见的工程化功能,如代码打包、热重载、单元测试等。以下是 Vue CLI 的搭建和使用步骤:

  1. 安装 Node.js

首先需要在本地安装 Node.js,可以到官网 https://nodejs.org/ 下载并安装最新版的 Node.js。

  1. 安装 Vue CLI

在终端中输入以下命令,安装 Vue CLI:

npm install -g @vue/cli

  1. 创建新项目

在终端中进入要创建项目的目录,并输入以下命令来创建新项目:

vue create my-project

其中,"my-project" 是你要创建的项目名称,可以自己修改。

  1. 启动开发服务器

项目创建完成后,进入项目目录,并输入以下命令来启动开发服务器:

cd my-project
npm run serve

这样就可以在浏览器中访问 http://localhost:8080 查看项目效果了。

以上是 Vue CLI 的基本使用流程,接下来以一个简单的 TodoList 为例,演示一下如何使用 Vue CLI 创建项目。

  1. 创建项目

在终端中输入以下命令来创建新项目:

vue create todo-list
  1. 安装 Element UI

在终端中进入项目目录,安装 Element UI:

cd todo-list
npm install element-ui --save
  1. 编写组件和样式

在 src/components 目录下创建一个 TodoList.vue 文件,编写 TodoList 组件的代码:

<template><div class="todo-list"><el-inputclass="add-todo-input"v-model="newTodo"placeholder="请输入待办事项"@keyup.enter.native="addTodo"size="large"></el-input><ul class="todos"><li v-for="(todo, index) in todos" :key="index" class="todo"><el-checkbox v-model="todo.done">{{ todo.text }}</el-checkbox><el-button type="text" @click="deleteTodo(index)">删除</el-button></li></ul></div>
</template><script>export default {data() {return {newTodo: '',todos: []}},methods: {addTodo() {if (this.newTodo !== '') {this.todos.push({text: this.newTodo,done: false})this.newTodo = ''}},deleteTodo(index) {this.todos.splice(index, 1)}}}
</script><style scoped>.todo-list {max-width: 600px;margin: 0 auto;padding: 20px;box-sizing: border-box;}.add-todo-input {width: 100%;margin-bottom: 20px;}.todos {list-style: none;padding: 0;}.todo {display: flex;align-items: center;margin-bottom: 10px;}.todo .el-checkbox {flex: 1;}
</style>

在样式中,使用了 Element UI 提供的样式类,使 TodoList 组件具有了基本的样式。

  1. 在 App.vue 中使用 TodoList 组件

在 src/App.vue 文件中,使用 TodoList 组件,并导入 Element UI 的样式:

<template><div id="app"><div class="container"><h1 class="title">Vue TodoList</h1><TodoList /></div></div>
</template><script>import TodoList from './components/TodoList.vue'import 'element-ui/lib/theme-chalk/index.css'export default {name: 'App',components: {TodoList}}
</script><style>.container {max-width: 800px;margin: 0 auto;padding: 20px;box-sizing: border-box;}.title {text-align: center;}
</style>
  1. 运行项目

在终端中输入以下命令来启动开发服务器:

npm run serve

打开浏览器,访问 http://localhost:8080,就可以看到 TodoList 效果。

以上的例子主要演示了如何使用 Vue CLI 创建项目、如何使用 Element UI 完成新建 Todo 和删除 Todo 的功能,以及如何将实现的组件和样式引入到 App.vue 中使用。

双向绑定

Vue.js 的双向绑定是指界面上的数据与数据源(通常是 JavaScript 对象)之间的双向绑定,即当界面上的数据发生变化时,数据源也会跟随变化,并且当数据源发生变化时,界面上显示的数据也会相应地更新。Vue.js 借助于其响应式系统实现了这个双向绑定机制,使得开发者可以方便地实现数据与界面之间的同步。

下面是一个简单的双向绑定的例子,通过 v-model 指令将 message 与文本框的值进行双向绑定:

<div id="app"><input v-model="message"><p>{{ message }}</p>
</div>
new Vue({el: "#app",data: {message: "Hello Vue.js!"}
});

在上面的例子中,当文本框中的值发生变化时,message 会随之更新,当 message 的值发生变化时,界面上显示的文本也会相应更新。

Vue.js 的双向绑定机制是通过实现一个响应式的数据模型来实现的。当数据模型的某个属性发生变化时,Vue.js 的响应式系统会自动检测变化并更新相应的 DOM 元素,从而实现数据与界面的同步更新。需要注意的是,Vue.js 的双向绑定机制只适用于一些表单元素(如 inputtextareaselect 等),对于其他 DOM 元素的双向绑定则需要使用自定义指令等方式实现。

refs使用

ref 是 Vue.js 提供的一个指令,可以用来在 DOM 元素或组件上添加一个唯一的标识。通过 ref,我们可以在组件内部直接获取到对应的 DOM 元素或组件实例,从而方便地操作其属性或方法。

下面是一个 ref 的例子,我们通过 ref 将一个输入框和按钮分别标识为 input 和 button,并在组件内部使用 $refs 属性来获取对应的 DOM 元素:

<template><div><input type="text" ref="input"><button @click="handleClick" ref="button">点击</button></div>
</template><script>
export default {methods: {handleClick() {console.log(this.$refs.input.value);console.log(this.$refs.button.innerText);}}
};
</script>

在上面的例子中,我们在模板中为输入框和按钮分别添加了 ref 属性,并分别指定为 input 和 button。在组件内部的 handleClick 方法中,我们使用了 $refs 属性来获取对应的 DOM 元素,从而获取输入框的值和按钮的文本内容。

需要注意的是,为了使 $refs 属性生效,我们必须在组件被挂载到 DOM 后才能访问 $refs。因此,在上面的例子中,我们必须等到按钮被点击时才能访问 $refs

另外,需要注意的是,使用 ref 可能会破坏 Vue.js 的数据驱动机制,因为我们直接操作了 DOM 元素或组件实例,而不是通过修改数据来更新界面。因此,在使用 ref 时需要注意谨慎使用,避免出现意料之外的结果。

点击事件进行请求

<template><div><button @click="fetchData">点击获取数据</button><div v-if="loading">Loading...</div><div v-if="error">{{ error }}</div><ul v-if="data"><li v-for="(item, index) in data" :key="index">{{ item }}</li></ul></div>
</template><script>
import axios from 'axios';export default {data() {return {loading: false, // 是否正在加载数据error: null, // 错误消息data: null // 获取到的数据};},methods: {fetchData() {this.loading = true;this.error = null;axios.get('/api/data').then(response => {this.loading = false;this.data = response.data;}).catch(error => {this.loading = false;this.error = error.message;});}}
};
</script>

在上面的例子中,我们在模板中定义了一个按钮,绑定了 fetchData 方法。在 fetchData 方法中,我们首先设置 loading 属性为 true,用于在界面上显示“正在加载”的提示。然后,我们使用 axios 库发送了一个 GET 请求,并在 then 回调中将 loading 属性设置为 false,将获取到的数据赋值给 data 属性。如果请求出现错误,则在 catch 回调中将 loading 属性设置为 false,将错误消息赋值给 error 属性。

在模板中,我们使用了 Vue.js 的条件渲染指令 v-if 来根据 loadingerror 和 data 属性的值来显示不同的内容。如果 loading 属性为 true,则显示“Loading...”;如果 error 属性不为 null,则显示错误消息;如果 data 属性不为 null,则使用 v-for 指令遍历数据并渲染到列表中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/80935.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode-62-不同路径-动态规划

题目描述&#xff1a; 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#xff09;。 问总共有多少条不同的路径…

vue组件库开发,webpack打包,发布npm

做一个像elment-ui一样的vue组件库 那多好啊&#xff01;这是我前几年就想做的 但webpack真的太难用&#xff0c;也许是我功力不够 今天看到一个视频&#xff0c;早上6-13点&#xff0c;终于实现了&#xff0c;呜呜 感谢视频的分享-来龙去脉-大家可以看这个视频&#xff1a;htt…

【C语言】【数据存储】用%u打印char类型?用char存128?

1.题目一&#xff1a; #include <stdio.h> int main() {char a -128;printf("%u\n",a);return 0; }%u 是打印无符号整型 解题逻辑&#xff1a; 1. 原反补互换&#xff0c;截断 -128 原码&#xff1a;10000000…10000000 补码&#xff1a;11111111…10000000…

ztree中获取zTree 的全部节点数据

//根据 treeId 获取 zTree 对象的方法 var zTree $.fn.zTree.getZTreeObj("tree"); //获取根节点 var nodes zTree.getNodes(); //获取 zTree 当前被选中的节点数据集合 var nodes zTree.getNodes();

uniapp项目实践总结(十六)自定义下拉刷新组件

导语&#xff1a;在日常的开发过程中&#xff0c;我们经常遇到下拉刷新的场景&#xff0c;很方便的刷新游览的内容&#xff0c;在此我也实现了一个下拉刷新的自定义组件。 目录 准备工作原理分析组件实现实战演练内置刷新案例展示 准备工作 在components新建一个q-pull文件夹…

LVS负载均衡群集(NAT模式、IP隧道模式、DR模式)

目录 一、集群 1.1 含义即特点 1.2 群集的类型 1.3 LVS 的三种工作模式&#xff1a; 1.4 LVS 调度算法 1.5 负载均衡群集的结构 1.6 ipvsadm 工具 二、NAT模式 LVS-NAT模式配置步骤&#xff1a; 实例&#xff1a; 配置NFS服务器192.168.20.100 配置web1服务器192.168…

Linux学习之MySQL主从复制

MySQL配置一主一从 环境准备&#xff1a; 两台服务器&#xff1a; Master&#xff1a;192.168.88.53&#xff0c;Slave&#xff1a;192.168.88.54 在两台服务器上安装mysql-server # 配置主服务器192.168.88.53 # 启用binlog日志 [rootmysql53 ~]# yum -y install mysql-ser…

C++11线程库简介

前言 在c11之前涉及多线程的问题都是和平台相关的&#xff0c;比如windows和linux都有一套自己的接口&#xff0c;这使得代码的可移植性变差。C11中最重要的特性就是对线程进行了支持&#xff0c;使得C在编程时不再依赖第三方库&#xff0c;而且原子操作中还引入了原子类的概念…

Android13-图片视频选择器

在compileSDK 33 时&#xff0c;谷歌在安卓新增了 图片选择器 功能&#xff0c;支持单选、多选、选图片、视频等操作&#xff0c;并且不需要额外获取照片/音频权限。 具体实现如下&#xff1a; 1&#xff1a;请求 Log.d(TAG, "Build.VERSION.SDK_INT" Build.VERS…

Java计算机毕业设计 基于SpringBoot+Vue的毕业生信息招聘平台的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

代码大全阅读随笔(六)

语句 本章以数据为中心的编程观点转到语句为中心的观点上。本章介绍最简单的控制流&#xff0c;即按照先后顺序放置语句和语句块。 尽管组织直线型代码是一个相对简单的任务&#xff0c;但代码结构上的一些微妙之处&#xff0c;还是对代码质量&#xff0c;正确性&#xff0c;可…

网络请求【小程序】

一、get 二、post 1.获取相应数据 Page({/*** 页面的初始数据*/data: { inptValue:, isArr:[]},/*** 生命周期函数--监听页面加载*/onLoad(options) {},onSubmit(){// console.log(this.data.inptValue)//2.后台请求数据wx.request({url: https://tea.qingnian8.com/demoArt/…

CentOS7安装MySQL

文章目录 前言一、MySQL5.71.1 安装wget1.2 下载&安装MySQL的rpm源1.3 修改MySQL安装版本1.4 下载并启动MySQL1.5 开启MySQL远程连接用户 二、MySQL8.0注意事项 前言 CentOS7的安装&#xff0c;采用的是yum的方式安装。 yum方式安装&#xff0c;就类似在Windows下不停的下…

flink时间处理语义

背景 在flink中有两种不同的时间处理语义&#xff0c;一种是基于算子处理时间的时间&#xff0c;也就是以flink的算子所在的机器的本地时间为准&#xff0c;一种是事件发生的实际时间&#xff0c;它只与事件发生时的时间有关&#xff0c;而与flink算子的所在的本地机器的本地时…

Swagger生成Markdown文档

前提条件 1、 本地安装node.js&#xff0c;或者解压安装包 配置环境变量→ 任意路径输入CMD 配置环境变量→ 解压路径输入CMD2、npm换源&#xff08;不然下载仓库有可能报错&#xff09; npm config get registry 查看源n…

API商品数据接口:实现电子商务应用程序的核心功能

随着电子商务的飞速发展&#xff0c;许多电商平台都提供了应用程序接口&#xff08;API&#xff09;&#xff0c;允许开发者调用特定的功能&#xff0c;如商品查询、购物车管理、订单处理以及支付等。这些API为开发者提供了在应用程序中嵌入电商功能的机会&#xff0c;从而为用…

机器学习——决策树/随机森林

0、前言&#xff1a; 决策树可以做分类也可以做回归&#xff0c;决策树容易过拟合决策树算法的基本原理是依据信息学熵的概念设计的&#xff08;Logistic回归和贝叶斯是基于概率论&#xff09;&#xff0c;熵最早起源于物理学&#xff0c;在信息学当中表示不确定性的度量&…

WorkPlus | 好用、专业、安全的局域网即时通讯及协同办公平台

自国家于2022年发布的《关于加强数字政府建设的指导意见》以来&#xff0c;我国数字政府建设已经迈入了一个全新的里程碑&#xff0c;迎来了全面改革和深化升级的全新阶段。 WorkPlus作为自主可控、可信安全、专属定制的数字化平台&#xff0c;扮演着政务机关、政府单位以及各…

JDK19特性

文章目录 JAVA19概述1. 记录模式(预览版本)2.Linux/RISC-V 移植3.外部函数和内存 API &#xff08;预览版&#xff09;4.虚拟线程(预览版)5.Vector API &#xff08;第四次孵化&#xff09;6.Switch 模式匹配&#xff08;第三预览版&#xff09;7.结构化并发&#xff08;孵化阶…

【算法专题突破】滑动窗口 - 串联所有单词的子串(15)

目录 1. 题目解析 2. 算法原理 3. 代码编写 写在最后&#xff1a; 1. 题目解析 题目链接&#xff1a;30. 串联所有单词的子串 - 力扣&#xff08;LeetCode&#xff09; 这道题其实也很好理解&#xff0c;看一下示例就基本知道是什么意思了&#xff0c; 主要就是找 s 里面…