Vue2(0基础入门)

news2024/11/19 2:40:33

环境准备

安装脚手架

vuecli:

npm install -g @vue/cli

vite:

npm init vue@latest
  • -g 全局安装,任意目录都可以使用vue脚本

image.png

进入目录创建项目:

在目录的终端输入:vue ui

image.png

image.png

image.png

image.png

安装devtool(这个网页是安装好了自动跳转的)
image.png

运行项目:
image.png

修改端口号

image.png

devServer:{  
  port: 7070  
}

文档地址:
https://webpack.docschina.org/configuration/dev-server/#devserverproxy

代理问题

之前所有关于/api的地址都会走代理:

devServer:{  
  port: 7070,  
  proxy: {  
    '/api': {  
      target: 'http://localhost:5008',  
      changeOrigin: true  
    }  
  }

🌰:
当我输入:http://localhost:7070/api/user/search/1

会自动跳转到http://localhost:5008/api/user/search/1

项目结构

├─assets
├─components
├─router
├─store
└─views

  • assets - 静态资源

  • components - 可重用组件

  • router - 路由

  • store - 数据共享

  • views - 视图组件

以后还会添加

  • api - 跟后台交互,发送 fetch、xhr 请求,接收响应
  • plugins - 插件

Vue组件

<script setup>  
  
</script>  
  
<template>  
  
</template>  
  
<style scoped>  
  
</style>
  • template 模板部分
  • srcipt 代码部分 js数据和行为
  • style 样式

App.Vue

  • 顶层组件

模板从javascript中提取数据:

<template>  
<h1>{{meg}}</h1>  
</template>


<script>  
const options = {  
  data: function (){  
    return {meg : "你好!"};  
  }  
};  
export default options;  
</script>

基础操作

Js属性绑定值

<input type="text" v-bind:value="name">

使用v-bind:value 绑定script中的值

简写:<input type="date" :value="age">

事件绑定

<div>  
  <input type="button" value="点我" v-on:click="m1"> 
   <input type="button" value="点我" @click="m1">  
</div>


function m1(){  
  alert("嘻嘻哈哈")  
}

当点击button的时候,会触发m1方法

v-on: 简写: @

双向绑定

网页上的数据改变,js中的属性值也会改变

在template中使用v-model绑定script中的值

image.png

Axios

  • Axios是什么?
    • 用于发送异步 HTTP 请求(包括 GET、POST、PUT、DELETE 等)来与服务器进行交互。
  • 对请求和响应有统一的拦截

也就是说可以使用Axios来获取后端的数据,然后显示在前端

使用Get方法

import axios from "axios";

function sendReq(){

  axios.get('https://jsonplaceholder.typicode.com/posts')

      .then(response => {

        console.log(response.data)

      })

}

使用Post方法

function sendPost(){

  axios.post('https://jsonplaceholder.typicode.com/posts',{

    tittle: 'foo',

    body: 'bar',

    userId: 1,

  }).then(resp => {

      console.log(resp)

  })

}

核心思想

前端传递的值到后端,需要符合后端的要求!
比如说:一个类,或者指定的属性

默认配置

核心思想:创建一个实例,在实例里面修改配置,后期都可以使用这个配置
image.png
baseURL:会将配置好的url和之后写的url进行拼接

image.png

withCredentials: 前后端都允许携带cookie,保持Session的一致性
image.png

状态码:
image.png

拦截器

拦截器的作用:
允许你在请求被发送或响应被处理之前,对它们进行统一的修改或处理。

  1. 统一修改请求头:在发送请求之前,你可以添加或修改请求头,例如添加认证令牌(如 JWT tokens)、CORS 头等。

  2. 统一修改请求参数:可以在发送请求前修改或添加查询参数、请求体等。

  3. 统一处理响应数据:在响应数据到达客户端之前,你可以对它们进行处理,比如数据格式化、状态码检查等。

  4. 错误处理:可以统一捕获和处理请求或响应过程中发生的错误,比如网络错误、超时、非200状态码等。

请求头中会自带一些信息:通过在请求头中添加认证令牌(如 Authorization 头),可以验证用户的身份,允许服务器识别和授权用户。

_axios.interceptors.request.use(

  function(config){

    config.headers = {

      Authorization:  'Bearer'

    }

    return config;

  },function(error){

    return Promise.reject(error);

  }

)

image.png

响应后做一个统一的处理

_axios.interceptors.response.use(

  function(config){

    return config

  },

  function(error){  // 这里响应后如果出现错误了可以做一个统一的处理

    if(error.response.status === 201){

      console.log('请求内容不存在')

      return Promise.resolve(201)

    }

    if(error.response.status === 404){

      console.log('请求参数不正确')

      return Promise.resolve(201)

    }

  }

)

Vue基础

Vue条件渲染

通过前端获取的数据,存储在数组中,然后通过Vue组件:v-if 条件判断

<div>  
  <div class="tbody">  
    <input type="button" value="获取远程数据" @click="get()">  
  </div>  <div v-if="items.length > 0">  
    已获取数据  
  </div>  
  <div v-else>  
    未获取数据  
  </div>  
</div>
async function get() {  
  const resp = await axios.get('https://jsonplaceholder.typicode.com/posts');  
  console.log(resp.data)  
  items.value = resp.data;  
}  
  
// 创建一个响应式数组来存储数据  
const items = ref([]);

image.png

当我点击获取数据的时候,v-if会自己判断是否条件成立,如果条件成立的话,那么先显示div内容,否则不会显示

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

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

相关文章

MS1112驱动开发

作者简介&#xff1a; 一个平凡而乐于分享的小比特&#xff0c;中南民族大学通信工程专业研究生在读&#xff0c;研究方向无线联邦学习 擅长领域&#xff1a;驱动开发&#xff0c;嵌入式软件开发&#xff0c;BSP开发 作者主页&#xff1a;一个平凡而乐于分享的小比特的个人主页…

Mysql基础进阶速成2

看着篇文章之前先看我的前一章&#xff1a;MySQL基础进阶速成1 函数&#xff1a; 每个字段使用一个函数&#xff1a;select 函数(字段名)from 表名 upper&#xff1a;将字符串中的字母大写 lower&#xff1a;将字符串中的字符小写 max&#xff1a;得到最大值 min&#xf…

力扣hot100:295. 数据流的中位数(两个优先队列维护中位数)

LeetCode&#xff1a;295. 数据流的中位数 这个题目最快的解法应该是维护中位数&#xff0c;每插入一个数都能快速得到一个中位数。 根据数据范围&#xff0c;我们应当实现一个 O ( n l o g n ) O(nlogn) O(nlogn)的算法。 1、超时—插入排序 使用数组存储&#xff0c;维持数…

pyqt5 tablewidget实现excel拖曳填充

代码主要涉及鼠标事件和绘图&#xff0c;selectionModel&#xff0c;selectedIndexes。 import sys from PyQt5.QtCore import QPoint, Qt, QCoreApplication, pyqtSlot from PyQt5.QtGui import QBrush, QPixmap, QColor, QPainter,QIcon,QPolygon from PyQt5.QtWidgets imp…

GPT-4o:突出优势 和 应用场景

还是大剑师兰特&#xff1a;曾是美国某知名大学计算机专业研究生&#xff0c;现为航空航海领域高级前端工程师&#xff1b;CSDN知名博主&#xff0c;GIS领域优质创作者&#xff0c;深耕openlayers、leaflet、mapbox、cesium&#xff0c;canvas&#xff0c;webgl&#xff0c;ech…

NeMo Guardrails 大模型安全防护:这个框架牛逼,不会像强化学习 指令对齐限制灵活性死板回答,也不会像提示词约束容易被遗忘和清理

NeMo Guardrails 大模型安全防护&#xff1a;这个框架牛逼&#xff0c;不会像强化学习 指令对齐限制灵活性死板回答&#xff0c;也不会像提示词约束容易被遗忘和清理 提出背景对比传统方法结构图底层原理1. 对话管理运行时&#xff08;DM-like runtime&#xff09;2. 思维链&am…

大小堆运用巧解数据流的中位数

​​​​​​​​​​ 一、思路 我们将所有数据平分成两份&#xff0c;前面那一部分用小堆来存&#xff0c;后面的部分用大堆来存&#xff0c;这样我们就能立刻拿到中间位置的值。 如果是奇数个数字&#xff0c;那么我们就将把中间值放在前面的大堆里&#xff0c;所以会有两种…

SAP ABAP 创建表结构 SE11

目录 一&#xff0c;创建表 &#xff1a;T-code:SE11 二&#xff0c;编辑内容&#xff1a; 1&#xff0c;内容说明&#xff1a;必填项&#xff0c;属性&#xff1a;锁定不可更改 2&#xff0c;出荷と更新 &#xff13;&#xff0c;項目 A&#xff1a;表的第一个项目必须是…

Flink中因java的泛型擦除导致的报错及解决

【报错】 Exception in thread "main" org.apache.flink.api.common.functions.InvalidTypesException: The return type of function Custom Source could not be determined automatically, due to type erasure. You can give type information hints by using th…

计算机网络面试基础(一)

文章目录 一、HTTP基本概念1.HTTP是什么&#xff1f;2.HTTP 常见的状态码有哪些&#xff1f;3.http常见字段 二、GET和POST1.get和post有什么区别 三、HTTP缓存技术1.HTTP 缓存有哪些实现方式&#xff1f;2.什么是强制缓存&#xff1f;3.什么是协商缓存&#xff1f;(不太懂) 四…

linux嵌入式设备测试wifi信号强度方法

首先我们要清楚设备具体链接在哪个wifi热点上 执行&#xff1a;nmcli dev wifi list rootubuntu:/home/ubuntu# nmcli dev wifi list IN-USE BSSID SSID MODE CHAN RATE SIGNAL BARS > * 14:EB:08:51:7D:20 wifi22222_5G Infr…

【96】write combine机制介绍

前言 这篇文章主要介绍了write combine的机制 一、write combine的试验 1.系统配置 &#xff08;1&#xff09;、CPU&#xff1a;11th Gen Intel(R) Core(TM) i7-11700 2.50GHz &#xff08;2&#xff09;、GPU&#xff1a;XX &#xff08;3&#xff09;、link status&am…

如何有效提问?

有效提问&#xff1a;正确地向别人提问是一种艺术&#xff0c;可以帮助你获得清晰、有用的答案。 明确表达问题&#xff1a;确保你的问题清晰明了&#xff0c;避免含糊不清或模棱两可的语言。这可以帮助对方更好地理解你的问题&#xff0c;并给出准确的答复。 尊重对方&#x…

[第五空间 2021]WebFTP、[HCTF 2018]Warmup

目录 [第五空间 2021]WebFTP ​[SWPUCTF 2021 新生赛]Do_you_know_http [NCTF 2018]签到题 [HNCTF 2022 Week1]What is Web [HNCTF 2022 Week1]Interesting_http [HCTF 2018]Warmup [第五空间 2021]WebFTP 使用dirsearch扫描&#xff0c;发现有git泄露 使用GitHack克隆目…

HBuilderX编写APP一、获取token

一、新建项目 二、从onenet获取key.js 1、下载之后的压缩包&#xff0c;解压 2、关键就是找到key.js 3、将这个key.js复制到刚才的目录下面去 4、这个key.js文件就是生成token的代码 5、只要调用createCommonToken(params)这个函数&#xff0c;就可以实现生成token了 其中on…

小米开放式耳机怎么样?倍思、西圣、小米开放式耳机测评比较!

作为一名热衷于分享真实体验的博主&#xff0c;我在过去两年开始接触开放式耳机&#xff0c;并因此受到许多朋友的咨询&#xff0c;询问哪款开放式耳机更加出色。为了找出最佳的开放式耳机&#xff0c;我进行了深入的调查和实地测试。我发现高价并不总是代表高质量&#xff0c;…

【全开源】Java共享茶室棋牌室无人系统支持微信小程序+微信公众号

打造智能化休闲新体验 一、引言&#xff1a;智能化休闲时代的来临 随着科技的飞速发展&#xff0c;智能化、无人化服务逐渐渗透到我们生活的各个领域。在休闲娱乐行业&#xff0c;共享茶室棋牌室无人系统源码的出现&#xff0c;不仅革新了传统的休闲方式&#xff0c;更为消费…

嵌入式移植jpeglib--Linux交叉编译ARM平台

一 、交叉编译jpeg库 1.下载源码tar.gz 2. 源码目录下执行 jpeglib配置文件 ./configure CCarm-none-linux-gnueabihf-gcc LDarm-none-linux-gnueabihf-ld --prefix/work/jpeg_arm_lib --exec-prefix/work/jpeg_arm_lib --enable-shared --enable-static --hostarm-none-linu…

高考试卷押运车视频监控解决方案

一、引言 高考作为我国教育领域的重要事件&#xff0c;其公正、公平和安全性一直备受社会关注。试卷押运作为高考的重要环节&#xff0c;其安全性直接关系到高考的顺利进行和考生的切身利益。因此&#xff0c;对高考试卷押运车实施视频监控解决方案&#xff0c;对于确保试卷安…

Asp .Net Core 系列:详解鉴权(身份验证)以及实现 Cookie、JWT、自定义三种鉴权 (含源码解析)

什么是鉴权&#xff08;身份验证&#xff09;&#xff1f; https://learn.microsoft.com/zh-cn/aspnet/core/security/authentication/?viewaspnetcore-8.0 定义 鉴权&#xff0c;又称身份验证&#xff0c;是确定用户身份的过程。它验证用户提供的凭据&#xff08;如用户名和…