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

news/2024/7/10 1:44:02 标签: vue

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-input
      class="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.niftyadmin.cn/n/5025630.html

相关文章

小程序中如何查看指定会员的所有订单?

在小程序中&#xff0c;查看指定会员的所有订单可以通过如下方式实现。 1. 找到指定的会员卡。在管理员后台->会员管理处&#xff0c;找到需要查看订单记录的会员卡。也支持对会员卡按卡号、手机号和等级进行搜索。 2. 查看会员卡详情。点击查看详情进入该会员卡的详情页面…

Linux Kernel:调度器scheduler

目录 环境: 一:概述 二:调度器实现 1、数据结构 (1)task_struct成员

SHOW PROCESSLIST;查出来有400多个 Command 状态为Sleep的

在数据库中执行 SHOW PROCESSLIST; 命令可以查看当前所有连接的状态和相关信息。如果您在执行该命令时发现有大量状态为 Sleep 的连接&#xff0c;这表示这些连接当前处于空闲状态&#xff0c;没有在执行任何数据库操作。通常&#xff0c;Sleep 状态的连接表示已经建立但当前没…

Python二级 每周练习题18

练习一: 从键盘输入任意字符串&#xff0c;按照下面要求分离字符串中的字符: 1、分别取出该字符串的第偶数位的元素(提醒注意:是按照从左往右数的方式确定字符串的位置) 2、并依次存储到一个列表中; 3、输出这个列表。 答案: ninput(请输入任意字符串:) #创建变量n存放用户…

共享股东系统实现资源共享,让有资源的人成为店铺分红股东

在当今快速发展的互联网时代&#xff0c;创新模式成为各行各业的关键&#xff0c;为企业带来了更多的机遇与挑战。在商业领域&#xff0c;共享经济已经成为了一种热门的商业模式&#xff0c;它通过共享资源、分享服务&#xff0c;实现了资源的高效利用&#xff0c;获得了广泛认…

Pytorch学习整理笔记(一)

文章目录 数据处理DatasetTensorboard使用Transformstorchvision数据集使用DataLoader使用nn.Module的使用神经网络 数据处理Dataset 主要是对Dataset的使用&#xff1a; 继承 Dataset实现init方法&#xff0c;主要是进行一些全局变量的定义&#xff0c;在对其初始化时需要赋…

嵌入式Linux驱动开发(I2C专题)(四)

编写APP直接访问EEPROM 参考资料&#xff1a; Linux驱动程序: drivers/i2c/i2c-dev.cI2C-Tools-4.2: https://mirrors.edge.kernel.org/pub/software/utils/i2c-tools/AT24cxx.pdf 1. 硬件连接 STM32MP157的I2C模块连接方法 IMX6ULL的I2C模块连接方法 2. AT24C02访问方法…

STL priority_queue

文章目录 一、priority_queue 类的模拟实现 priority_queue 是优先级队列&#xff0c;又称堆&#xff0c;可以存储任意类型 模板参数 T 表示存储元素的类型&#xff0c;Container 表示底层使用的容器&#xff0c;Compare 表示存储元素的比较方法(less 建大堆&#xff0c;great…