【苍穹外卖】前端 Day 1

news2024/9/20 14:39:01

1 Vue

1.1 通过 vue cli 脚手架创建前端工程

 

1.2 项目结构

1.3 启动项目

VS Code 启动前端项目:

npm run serve

注意这里占用端口号 8080

与 java springboot 占用端口号一致,有冲突

serve 是这个名字

终止:ctrl + c

修改端口号

2 vue 基本使用方式

2.1 组件

vue 的组件以 .vue 结尾,由三部分组成:

2.2 文本插值

作用:用来绑定 data 方法返回的对象属性

用法:{{ }}

<template>
  <div>
    hello {{ name }} is a/an {{ age >= 18 ? 'adult' : 'youngster' }}
  </div>
</template>

<script>
export default {
  data() {
    return {
      name: 'wyn',
      age: 24
    };
  },
}
</script>

<style></style>

 

插值表达式 中可以进行:

  • 基本变量插值 {{ name }}
  • 计算表达式 {{ 10+5 }}
  • 条件表达式(三元运算符) {{ age >= 18 ? 'adult' : 'youngster' }}
  • 函数调用 {{ add(10, 5) }}

<script>

export default {

  methods: {

    add(a, b) {

      return a + b;

    }

  }

}

</script>

  • 属性访问 {{ user.name }}
  • 字符串拼接 {{ 'Hello, ' + name }}

2.3 属性绑定

作用:为标签的属性绑定 data 方法中返回的属性

用法:v-bind:xxx,简写为     :xxx

绑定的是标签中的 属性

<input type="text" v-bind:value="name"><br>
<input type="url" :value="url" size="90px">
export default {
  data() {
    return {
      name: 'wyn',
      age: 24,
      url:'https://www.bilibili.com/video/BV1TP411v7v6?p=173&vd_source=03e6715a501abcf7a961b0266e94d6d4',
    };
  }
}

补充 <input> 标签中 type 的值:

  • type="text":单行文本输入框,用于接受文本输入
  • type="password":密码输入框,输入内容会以隐藏字符(如 *)显示
  • type="number":数字输入框,允许用户输入数字
  • type="email":电子邮件输入框,验证输入的值是否为合法的电子邮件格式
  • type="url":URL 输入框,要求输入值为有效的 URL 格式
  • type="checkbox":复选框,允许选择多个选项
  • type="radio":单选按钮,允许在多个选项中选择一个
  • type="date":日期选择器,允许用户选择日期
  • type="file":文件选择器,允许用户上传文件
  • type="range":范围选择器,允许用户选择一个数值范围
  • type="reset":重置按钮,点击后会重置表单中的所有输入值
  • type="color":颜色选择器,允许用户从颜色盘中选择颜色

同时还有别的属性:

  • placeholder:用于为输入框提供提示信息
  • value:设置输入框的默认值
  • disabled:禁用输入框,使其无法接受用户输入
  • readonly:设置输入框为只读状态,用户无法修改输入内容
  • required:设置输入框为必填项
  • maxlength:限制文本输入框的最大字符数

2.4 事件绑定

作用:为元素绑定对应的事件

用法:v-on:xxx,简写为     @xxx

        在 Vue.js 中, @是 v-on 指令的简写,用于监听 DOM 事件,并将事件处理器绑定到相应的事件上。@ 后面可以加上你想要监听的具体事件名称

        DOM(Document Object Model,文档对象模型)是浏览器中的一种编程接口,它允许开发者通过编程语言(如 JavaScript)来访问和操作网页的结构、内容和样式。DOM 将 HTML 文档表示为一个由节点构成的树状结构,每个节点代表文档的一部分,比如元素、属性或文本。通过 DOM,开发者可以动态地修改网页的内容和结构

常见 DOM 事件:

  • 鼠标事件

    • @click:监听点击事件
    • @dblclick:监听双击事件
    • @mousedown:监听鼠标按下事件
    • @mouseup:监听鼠标松开事件
    • @mousemove:监听鼠标移动事件
    • @mouseenter:监听鼠标进入元素时触发
    • @mouseleave:监听鼠标离开元素时触发
  • 键盘事件

    • @keydown:监听按键按下事件
    • @keyup:监听按键松开事件
    • @keypress:监听按键按下时触发,但与 keydown 的触发时机略有不同
  • 表单事件

    • @submit:监听表单提交事件
    • @change:监听输入框或下拉框的值变化
    • @input:监听输入框的输入事件
    • @focus:监听元素获得焦点
    • @blur:监听元素失去焦点

<template>
    <input type="button" value="click me to add 1" @click="clickToAddOne"> =>
    <input type="text" :value="sum" size="1px">
</template>
<script>
export default {
  data() {
    return {
      sum:0,
    };
  },
  methods: {
    clickToAddOne(){
      this.sum += 1;
    }
  }
}
</script>

2.5 双向绑定

作用:表单输入项和 data 方法中的属性进行绑定,任意一方改变都会同步给另一方

用法:v-model

data(){age: {{ age }}}
<input type="text" v-model="age">

2.6 条件渲染

作用:根据表达式的值来动态渲染页面元素

用法:v-ifv-elsev-else-if

3 Axios

        Axios 是一个基于 Promise 的 JavaScript HTTP 客户端,主要用于浏览器和 Node.js 中发起 HTTP 请求。它可以方便地进行与服务器的交互,包括发送 GET、POST、PUT、DELETE 等请求,处理响应数据,并且支持请求的拦截、取消、自动处理 JSON 数据、并发请求等功能

安装:

  • npm install axios

导入:

  • import axios from 'axios'

如果不这样设置,会导致:

proxy 设置代理 http://localhost:8080

将所有以 /api 开头的请求转发到 http://localhost:8080/,并通过pathRewrite去掉 /api 前缀

同时 axios 发送请求的 url 不再是 localhost:8080 而是 /api 

3.1 GET

<template>
  <div>
    <input type="button" value="send request" @click="sendRequest()">
    {{ responseData }}
  </div>
</template>

<script>
import axios from 'axios'
export default {
  data() {
    return {
      responseData: null
    };
  },
  methods: {
    sendRequest() {
      axios.get('/api/user/shop/status')
        .then(response => {
          console.log(response.data);
          this.responseData = response.data;
        })
        .catch(error => {
          console.error('Error:', error);
        });
    }
  }
}
</script>
<style></style>

3.2 POST

还可以 POST:

<template>
  <div>
    <input type="button" value="get token" @click="getToken()">
    <input type="text" v-model="token" size="114px">
  </div>
</template>

<script>
import axios from 'axios'
export default {
  data() {
    return {
      token: null
    };
  },
  methods: {
    getToken() {
      axios.post('/api/login', {
        'username': 'admin',
        'password': 123456
      }).then(res => {
        this.token = res.data.data.token;
      })
    }
  }
}
</script>

<style></style>

3.3 统一使用方式

4 Vue-Router

        Vue Router 是 Vue.js 的官方路由管理器,用于 在单页应用(SPA)中实现路由功能,允许你通过不同的 URL 显示不同的组件或页面。Vue Router 可以帮你实现页面的导航、动态路由、嵌套路由、守卫和懒加载等功能

        因为使用的是 vue2,所以安装 vue-router 是 3 版本

npm install vue-router@3

4.1 路由配置

路由组成:

  • VueRouter:路由器,根据路由请求在路由视图中动态渲染对应的视图组件
  • <router-link>:路由链接组件,浏览器会解析成 <a>
  • <router-view>:路由视图组件,用来展示与路由路径匹配的视图组件

        在 Vue 项目中,App.vue 通常是整个应用的 主页面 或 根组件。它是 Vue 应用的入口组件,所有的其他页面和组件都会作为它的子组件来进行渲染

        所以一上来访问的路径是"/"的时候,不仅仅是渲染 HomeView 组件,还有 APP 的根组件

创建 View 组件

src 文件夹下创建 views 文件夹,新建几个 View.vue 文件

这里把之前 App.vue 的代码复制过来到 DemoView.vue

配置路由表

在 src 文件夹下创建 router 文件夹,新建文件 index.js

import AboutView from "@/views/AboutView.vue";
import HomeView from "@/views/HomeView.vue";
import VueRouter from "vue-router";
import Vue from "vue";
import DemoView from "@/views/DemoView.vue";

Vue.use(VueRouter)

// 配置路由表
const routes = [
    {
        path: '/',
        component: HomeView
    },
    {
        path: '/about',
        component: AboutView
    },
    {
        path:'/demo',
        component:DemoView
    }
]

// 创建路由实例
const router = new VueRouter({
    routes
})

// 将定义好的 router 实例导出
export default router


挂载路由器

main.js 先导入路由器,然后挂载路由器

import Vue from 'vue'
import App from './App.vue'
import router from './router' // 导入路由器

Vue.config.productionTip = false

new Vue({
  router, // 挂载路由器
  render: h => h(App),
}).$mount('#app')

路由跳转

在 App.vue 中

使用标签

<router-link to=" "></router-link> 创建导航链接

使用标签

<router-view/> 渲染当前路径对应的组件

<template>
  <div>
    <nav>
      <router-link to="/">Home</router-link> &nbsp;
      <router-link to="/about">About</router-link> &nbsp;
      <router-link to="/demo">Demo</router-link>
    </nav>
    <router-view/>
  </div>
</template>

<script>

</script>

<style></style>

效果:

为什么一上来就是 HomeView:

        因为 HomeView 的路径是 "/",是默认路径

路由跳转还可以用 编程式

如果希望访问一个不存在的路由,要 重定向 到一个 404 页面,我们需要:

        path: '*' 是一种 通配符路由,用于匹配所有未被定义的路由路径。通常,它用来捕获那些 没有匹配到的路径

同时要编写 404 页面便于展示

4.2 嵌套路由

嵌套路由:组件内 要切换内容,就需要用到嵌套路由(子路由)

1、安装 element ui

npm i element-ui -S

 配置

测试

 

 2、配置子路由

同时在 ContainerView.vue 

aside 侧边栏写link to

main 展示视图

 P1和P2只有一句话

 

 测试

【注意】

 子路由变化,切换的是【ContainerView组件】中`<router-view></router-view>'部分的内容

可以加上重定向,默认展示P1视图

5 vuex

  • vuex 是一个专为 Vue.js 应用程序开发的状态管理库
  • vuex 可以在多个组件之间共享数据,并且共享的数据是响应式的,即数据的变更能及时渲染到模板
  • vuex 采用集中式存储管理所有组件的状态

5.1 配置 vuex

npm install vuex@next --save

 vue2 对应的 vuex 版本是 vuex3

npm install vuex3 --save

新建配置文件

/store/index.js

 

main.js 添加 vuex

5.2 State

Vuex 的存储对象,它是整个应用的唯一数据源(单一状态树)。所有组件都能从中读取共享状态

然后通过 插值表达式 引用

5.3 mutations

        Mutations (变更):Vuex 的状态只能通过 mutation 来改变。Mutation 必须是 同步函数,接受 state 和 payload(负载)作为参数

5.4 Actions

        Actions 类似于 mutations,但不同的是,actions 是 异步 的。它们不会直接变更状态,而是提交 mutation,间接 变更状态

 这里用的是 dispatch

6 TypeScript

npm install -g typescript

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

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

相关文章

JVM面试真题总结(六)

文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 解释GC的标记-整理算法及其优点 GC&#xff08;垃圾收集&#xff…

鸿蒙开发应用图标信息配置

鸿蒙开发配置文件 应用管理里面的应用 手机桌面上的应用信息 学习更多前端知识我已经整理到下面了↓↓↓↓↓↓快去看看吧

Android以及IoT设备传感器软件开发总结

1 传感器选型 1.1 传感器选型 6 axis&#xff1a;Bosch BMI160&#xff08;比较差&#xff09;&#xff0c;InvenSense MPU6050&#xff08;DMP&#xff09;&#xff0c;ST LSM6Dxx Acc: Freescale MMA7450L (MicroMachined Accelerometer/MC Multi-Axis, iMX31), Kionix KXSD9…

渣土车检测数据集 2600张 渣土车 带标注 voc yolo

数据集名称&#xff1a; 渣土车检测数据集 数据集规模&#xff1a; 图像数量&#xff1a;2600张标注类型&#xff1a;渣土车检测格式兼容性&#xff1a;支持VOC和YOLO标注格式 数据集内容&#xff1a; 该数据集主要用于训练和评估计算机视觉模型&#xff0c;特别是在渣土车&…

如何本地部署AI智能体平台,带你手搓一个AI Agent

今天分享如何在个人电脑上搭建一个AI智能体平台&#xff0c;可以自定义聊天机器人&#xff0c;设计智能体&#xff0c;编排工作流&#xff0c;知识库&#xff0c;RAG管道等等&#xff0c;还支持本地大模型接入&#xff0c;并对外提供API接口。 如搭建过程有疑问&#xff0c;可…

存储虚拟化

引入-在安装虚拟化VRM界面出现配置数据存储 1.数据存储 还有一处出现数据存储&#xff0c;创建虚拟机时,发放业务虚拟机&#xff0c;不建议选择&#xff0c;autoDS_CNAxx 2.引入FC集群文件系统 传统存储上一个LUN映射给多个CNA使用--集群文件系统VIMS-锁机制--共享存储 3.集群…

工厂方法模式和抽象工厂模式

工厂方法模式 一个工厂只能创建一种产品 工厂方法模式的结构 工厂方法模式包含以下4个角色 Product&#xff08;抽象产品&#xff09; ConcreteProduct&#xff08;具体产品&#xff09; Factory&#xff08;抽象工厂&#xff09; ConcreteFactory&#xff08;具体工厂…

一篇文章带你看懂住宅代理如何实现内容过滤

在网络安全中&#xff0c;内容过滤是用户隐私保护的重要组成部分&#xff0c;将不良内容拦截在安全网之外是内容过滤的重中之重。在当下&#xff0c;住宅代理作为异军突起的网络安全工具&#xff0c;在内容过滤上有着不错的表现。本文将深入探讨住宅代理如何实现内容过滤&#…

项目小结二()

一.个人信息的界面 这里可以进行用户信息的修改&#xff0c;并渲染数据上去 二.这两天&#xff0c;出现的问题&#xff1a; 1.mybatis中 字段取别名 &#xff08;还没验证&#xff0c;是否正确&#xff09; 问题描述&#xff1a;由于实体类中的变量名&#xff0c;与数据库中…

数据权限的设计与实现系列8——前端筛选器组件Everright-filter集成框架开发1

背景 前面我们对筛选器组件进行了功能探索和技术验证&#xff0c;接下来就开始着手集成工作&#xff0c;融入一二三开发平台&#xff0c;打通前后端&#xff0c;最终让数据权限控制功能落地。 整体集成工作比较复杂&#xff0c;我们遵循由易到难的原则&#xff0c;先搭建出完整…

IPv6理论基础

IPV6 地址介绍 地址标识方法 格式 : XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX&#xff0c;128bit&#xff0c;8个16位&#xff0c;16进制 X表示十六进制的一个字符&#xff0c;可以是0 - 9,A -F 字母大小写不敏感&#xff0c;最终设备上显示均为大写 一个地址由8个字段构成…

Leetcode3266. K 次乘运算后的最终数组 II

Every day a Leetcode 题目来源&#xff1a;3266. K 次乘运算后的最终数组 II 解法1&#xff1a;3266. K 次乘运算后的最终数组 II 用最小堆手动模拟操作&#xff0c;直到原数组的最大值 mx 成为这 n 个数的最小值。 设此时还剩下 k 次操作&#xff0c;那么&#xff1a; 对…

HarmonyOs DevEco Studio小技巧11--AI插件

AI智能辅助编程工具 CodeGenie 简介 DevEco AI辅助编程工具&#xff08;CodeGenie&#xff09;为开发者提供高效的应用/服务AI辅助编程工具&#xff0c;支持HarmonyOS NEXT领域的智能知识问答、ArkTS代码补全/生成和万能卡片生成能力&#xff0c;提高开发者编码效率。 文档中…

mysql整体架构描述

文章目录 数据库架构示意图1. 连接层2. 服务层3. 存储引擎层4. 文件系统层5. 系统层主要特性 数据库文件格式InnoDB 存储引擎文件类型及用途 MyISAM 存储引擎文件类型及用途 其他文件类型文件内容示例表结构文件示例 (.frm)InnoDB 数据文件示例&#xff08;.ibd&#xff09;MyI…

(十四)、为 SpringCloud 项目生成 Docker 镜像

文章目录 1、原理2、最佳实践2.1、获得 SpringCloud 微服务启动模块的 jar 文件2.2、准备文件夹和 Dockerfile 文件2.3、 Dockerfile 文件的内容2.4、通过命令行构件新镜像 3、异常情况和处理&#xff1a;failed to create LLB definition3.1、现象3.2、解决配置国内镜像仓库清…

【Python报错已解决】 ModuleNotFoundError: No module named ‘tensorboard‘

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 前言一、问题描述1.1 报错示例1.2 报错分析1.3 解决思路 二、解决方法2.1 方法一&#xff1a;使用pip安装TensorBoard…

vue3.0 使用echarts与echarts-gl 实现3D饼图

效果 安装echarts npm install echarts npm install echarts-gl 3d饼图组件&#xff1a; <template><div style"width: 100%; height: 100%" ref"echart"></div> </template><script setup> import { reactive, ref, onMou…

docker部署FastDFS文件系统详细记录,每个步骤都有详细记录。含linux和windows双系统安装教程

docker部署FastDFS文件系统详细记录 参考文章docker搭建FastDFS文件系统&#xff08;最详细版&#xff09; 文章里所有步骤由作者亲自测试&#xff0c;所以和 原文有不少差异 文章里所有步骤由作者亲自测试&#xff0c;所以和 原文有不少差异 文章里所有步骤由作者亲自测试&…

HTML + CSS - 网页布局之一般布局浮动布局

1. 一般布局 1.1 一般布局相关参数 元素内容常常可以想像为放在一个盒子里&#xff0c;然后在周边加上内边距&#xff0c;边框和外边距&#xff0c;是盒子模型 默认一个块级区域会填充父类所有的行向空间&#xff0c;并且沿着块伸长容纳其内容&#xff0c;可以为块状体设置某…

18、公司信贷管理|贷款额度的测算|贷款期限及其定价的设定逻辑!

银行在综合权衡贷款的第一还款来源和第二还款来源、风险和收益的基础上&#xff0c;应明确提出贷与不贷的意见。经调查审查同意的贷款&#xff0c;应提出最终的融资方案。 合理的融资方案既要有利于提升本行的竞争力&#xff0c;又要有利于控制贷款风险。完整的融资方案一般包…