【苍穹外卖】前端 Day 1

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 = falsenew 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.mzph.cn/web/52523.shtml

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

相关文章

信刻光盘安全隔离与信息交换系统

随着各种数据传输、储存技术、信息技术的快速发展&#xff0c;保护信息安全是重中之重。军工、政府、部队及企事业单位等利用A网与B网开展相关工作已成为不可逆转的趋势。针对于业务需要与保密规范相关要求&#xff0c;涉及重要秘密信息&#xff0c;需做到安全的物理隔离&#…

离线版问卷-可集成到现有系统

目录标题 离线版问卷&#x1f4a1;前言亮点场景题外话 &#x1f3a8; 预览&#x1f308; 技术栈&#x1f4e6; 仓库&#x1f4bb; 初始化&#x1f680; 启动&#x1f6e0;️ 打包&#x1f5c2; 目录结构✨ 使用方法集成【设计问卷】集成【填写问卷】集成【只读问卷】集成【填答…

省委书记邀约大学生创业,长沙又一次为年轻人沸腾

敢想敢做的大学生&#xff0c;一直是创新创业的主力军。尤其是这些年“学术型”创业团队在各行各业越来越多见&#xff0c;市场对他们的接纳和支持力度也越来越强&#xff0c;给了新一代的大学生们更大的底气。 以往&#xff0c;大学生创业经常“落地生根”&#xff0c;先搞事…

【编译原理】编译器概述、编译器结构、编译器实例

编译器概述、编译器结构、编译器实例 编译器概述 1.编译器是一个程序 核心功能是把源代码翻译成目标代码 比如源代码&#xff1a;C/C&#xff0c;Java&#xff0c;C#&#xff0c;html 目标代码&#xff1a;X86&#xff0c;IA64,ARM,… 把一种源程序翻译成另外一种源程序&…

Facebook的秘密算法:如何提升你的社交体验

在数字时代&#xff0c;社交媒体平台已经成为我们日常生活的重要组成部分。作为全球最大的社交网络之一&#xff0c;Facebook通过其复杂的算法&#xff0c;影响着亿万用户的社交体验。这些算法不仅决定了我们在平台上看到的内容&#xff0c;还在背后默默优化我们的互动方式。本…

[数据集][目标检测]汽车头部尾部检测数据集VOC+YOLO格式5319张3类别

数据集制作单位&#xff1a;未来自主研究中心(FIRC) 版权单位&#xff1a;未来自主研究中心(FIRC) 版权声明&#xff1a;数据集仅仅供个人使用&#xff0c;不得在未授权情况下挂淘宝、咸鱼等交易网站公开售卖,由此引发的法律责任需自行承担 数据集格式&#xff1a;Pascal VOC格…

SpringSecurity剖析

1、SpringSecurity 入门 1.1、简介 Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架。它是用于保护基于Spring的应用程序的实际标准。Spring Security是一个框架&#xff0c;致力于为Java应用程序提供身份验证和授权。与所有Spring项目一样&#xff0c;Sp…

红帽RHCE认证值不值得考?RHCE认证有什么用?

在IT行业&#xff0c;红帽认证作为一项衡量Linux技能水平的重要标准&#xff0c;受到了广泛的关注和认可。 拥有一张权威认证证书无疑是提升自身竞争力、实现职业发展的重要途径。 RHCE认证作为Linux领域的顶级认证之一&#xff0c;其价值和意义不言而喻。 那么&#xff0c;…

PowerBi 柱形图,数据标签无法显示在端外

如图 即使设置了“数据标签”显示“端外“&#xff0c;仍然不作用。 原因其实是因为Y轴的数据范围设置不当&#xff0c;如图&#xff0c;当前Y轴范围是0到自动 只需要修改为最大和最小值都是自动即可&#xff0c;选中0 按backspace键删除&#xff0c;然后&#xff0c;鼠标在任意…

排班系统|基于Springboot+vue的医护人员排班系统(源码+数据库+文档)

排班系统|医护人员排班系统 目录 基于Springbootvue的医护人员排班系统 一、前言 二、系统设计 三、系统功能设计 医护类型管理 排班类型管理 科室信息管理 医护信息管理 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&…

C语言代码练习(第十八天)

今日练习&#xff1a; 48、猴子吃桃问题。猴子第1天摘下若干个桃子&#xff0c;当即吃了一半&#xff0c;还不过瘾&#xff0c;又多吃了一个。第2天早上又将剩下的桃子吃掉一半&#xff0c;又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时&…

【Python篇】PyQt5 超详细教程——由入门到精通(中篇二)

文章目录 PyQt5超详细教程前言第7部分&#xff1a;生成图表与数据可视化7.1 matplotlib 与 PyQt5 的结合7.2 在 PyQt5 中嵌入 matplotlib 图表示例 1&#xff1a;嵌入简单的 matplotlib 图表代码详解&#xff1a; 7.3 动态生成图表示例 2&#xff1a;动态更新图表代码详解&…

电脑与电脑之间怎么快速传输文件?

若两台电脑在同一局域网&#xff0c;可以使用Windows远程桌面传输文件&#xff0c;或者使用远程看看这款免费的远程桌面软件&#xff0c;它支持在不同的网络之间传输文件&#xff0c;而且速度快、安全性高。 步骤1. 在两台电脑上下载、安装并运行远程看看。 步骤2. 注册一个远…

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染&#xff1a;一项综述 文章目录 大规模语言模型的基准数据污染&#xff1a;一项综述摘要1 引言 摘要 大规模语言模型&#xff08;LLMs&…

从基础到进阶:直播美颜API集成主播美颜SDK的开发指南

今天&#xff0c;小编将从基础概念开始&#xff0c;详细介绍如何集成直播美颜API&#xff0c;并通过主播美颜SDK实现高级美颜功能&#xff0c;为开发者提供清晰的开发指南。 一、什么是直播美颜API&#xff1f; 直播美颜API是一套接口&#xff0c;允许开发者在直播过程中对视…

别找了!包含gpt在内的国内可以使用的Ai网站都在这了【最新可用】

在当今人工智能迅速发展的时代&#xff0c;智能创作与对话平台为用户提供了多样化的功能支持。以下是一些国内代表性的GPT平台&#xff0c;涵盖了从个人到企业的广泛需求&#xff0c;您可以根据自己的需求灵活选择。我们还为您整理了这些平台的链接&#xff0c;方便直接体验。&…

Redis学习Day3——项目工程开发

扩展阅读推荐&#xff1a; 黑马程序员Redis入门到实战教程_哔哩哔哩_bilibili 使用git命令行将本地仓库代码上传到gitee/github远程仓库-CSDN博客 一、项目介绍及其初始化 学习Redis的过程&#xff0c;我们还将遇到各种实际问题&#xff0c;例如缓存击穿、雪崩、热Key等问题&…

Ubuntu20.04+ros-noetic配置Cartographer

一、概述 因为要配置激光SLAM&#xff0c;Cartographer属于激光雷达SLAM 中比较经典的一款&#xff0c;在学习之前先将其在Ubuntu20.04首先配置出来并成功运行demo。 二、具体操作 &#xff08;一&#xff09;概述 使用平台是Windows的wsl2上的Ubuntu20.04子系统&#xff0c;…

如何看待IBM中国研发部裁员?

如何看待IBM中国研发部裁员&#xff1f;近日&#xff0c;IBM中国宣布撤出在华两大研发中心&#xff0c;引发了IT行业对于跨国公司在华研发战略的广泛讨论。这一决定不仅影响了众多IT从业者的职业发展&#xff0c;也让人思考全球化背景下中国IT产业的竞争力和未来发展方向。面对…

Java+vue的医药进出口交易系统(源码+数据库+文档)

外贸系统|医药进出口交易系统 目录 基于Javavue的服装定制系统 一、前言 二、系统设计 三、系统功能设计 仓储部门功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️大厂码农|毕设…