JavaWeb学习(六)

news/2025/3/4 21:07:20/文章来源:https://www.cnblogs.com/victoria6013/p/18751449

JavaWeb学习(六):Web前端开发 —— 其余内容

目录
  • JavaWeb学习(六):Web前端开发 —— 其余内容
    • Ajax
    • 前端工程化
    • Vue 组件库 Element
    • Vue 路由
    • 打包部署

本文为个人学习记录,内容学习自 黑马程序员


Ajax

  • 概念:Asynchronous JavaScript And XML,异步的 JavaScript 和 XML

  • 作用:

    • 数据交换:通过 Ajax 可以给服务器发送请求,并获取服务器响应的数据
    • 异步交互:可以在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页的技术,例如:搜索框的联想功能
  • 同步 与 异步

    • 同步请求:客户端向服务器发送请求后,需要等待服务器返回响应,才能继续执行其他操作。例如点开某个网址,有时需要等待网址的全部内容加载完成,才能继续进行操作,此时就为同步请求
    • 异步请求:客户端向服务器发送请求后,不需要等待服务器返回响应,也可以执行其他操作
  • 原生 Ajax 发起请求

    • 步骤:

      1. 创建 XMLHttpRequest 对象:用于和服务器交换数据
      2. 向服务器发送请求
      3. 获取服务器响应的数据
    • 示例:点击按钮时,向服务器请求数据

      <body><input type="button" value="获取数据" onclick="getData()"><div id="div1"></div><script>function getData() {// 1.创建XMLHttpRequest对象var xmlHttpRequest = new XMLHttpRequest();// 2.调用open()方法设置请求的方式和路径,调用send()方法发送异步的请求xmlHttpRequest.open('GET', 'http://yapi.smart-xwork.cn/mock/169327/emp/list');xmlHttpRequest.send();// 3.获取服务器响应的数据// 监测状态变化,一旦发生变化就会触发函数// 在函数中通过状态值判断是否响应成功,如果成功就通过responseText属性获取响应数据的字符串表示xmlHttpRequest.onreadystatechange = function() {if (xmlHttpRequest.readyState == 4 && xmlHttpRequest.status == 200) {document.getElementById("div1").innerHTML = xmlHttpRequest.responseText;}}}</script>
      </body>
      
  • Axios:对原生的 Ajax 进行了封装,简化了书写

  • 使用 Axios 发起请求

    • 步骤:

      1. 引入 Axios 的 js 文件
      2. 使用 Axios 发送请求,并获取响应结果
    • 示例:

      <body><!-- 1.引入Axios的js文件 --><script src="js/axios.js"></script><!-- 2.发送请求,获取响应结果 --><script>// 使用get方式发送请求// axios()的参数为一个对象,包含了method属性(请求方式)和url属性(请求路径)// 如果需要向请求路径传递参数,可以直接在url后面通过 ?key1=value1&key2=value2 传递参数// .then()的参数为一个函数,用于处理响应数据,result.data就是响应的数据axios({method: "get",url: "http://yapi.smart-xwork.cn/mock/169327/emp/list"}).then(function(result) {console.log(result.data);});// 使用post方式发送请求// axios()的参数为一个对象,包含了method属性(请求方式)、url属性(请求路径)和data属性(要传递的参数)// 如果需要向请求路径传递参数,只能通过data属性传递参数// .then()的参数为一个函数,用于处理响应数据,result.data就是响应的数据axios({method: "post",url: "http://yapi.smart-xwork.cn/mock/169327/emp/list",data: "id=1"}).then(function(result) {console.log(result.data);})</script>
      </body>
      
    • Axios 对常用请求进行了简化(方括号表示可选)

      • axios.get(url [, config])
      • axios.delete(url [, config])
      • axios.post(url [, data [, config]])
      • axios.put(url [, data [, config]])
      <body><script src="js/axios.js"></script><script>// 发送get请求axios.get("http://yapi.smart-xwork.cn/mock/169327/emp/list").then((result) => {console.log(result.data);})// 发送post请求axios.post("http://yapi.smart-xwork.cn/mock/169327/emp/list", "id=1").then((result) => {console.log(result.data);})</script>
      </body>
      

前端工程化

  • 前端工程化:在企业级的前端项目开发中,把前端开发所需的工具、技术、流程、经验等进行规范化、标准化

  • Vue-cli:官方提供的一个脚手架,用于快速生成一个 Vue 的项目模板

    • 依赖于环境 NodeJS

    • 使用 Vue-cli 创建 Vue 项目:

      • 方法一:在命令行使用 vue create vue-project01 创建一个名为 vue-project01 的 Vue 项目

      • 方法二:在命令行使用 vue ui 打开图形化界面,在图形化界面中创建项目

        图6-1 图6-2 图6-3 图6-4 图6-5
    • 使用 Vue-cli 创建的 Vue 项目的目录结构:

      • 整体目录结构:
      图6-6
      • 源代码下的目录结构:
      图6-7
    • 运行 Vue 项目

      • 方法一:在命令行中,在项目目录下使用 npm run serve 运行项目

      • 方法二:在 VSCode 中,点击左下角 NPM 脚本中 serve 一项的运行键运行项目(如果左下角没有 NPM 脚本,说明VSCode 没有正确识别到 package.json 文件,只要手动点开 package.json 文件就能识别到了),运行后会自动在默认端口号 8080 上启动服务,通过该端口即可访问到构建的 Vue 项目

        图6-8 图6-9
  • Vue 项目开发流程

    • 默认首页、入口文件和根组件

      项目运行得到的页面为 public 文件夹下的 index.html 文件,而该文件默认引入了 src 文件夹下的 main.js 文件

      如下图所示,在 main.js 文件中创建了一个 Vue 对象,并将其挂载到 id 为 app 的标签上,也即 index.html 中的标签

      图6-10

      在 main.js 文件中通过 import 导入了多个组件,其中主要是根组件 App.vue

      一般将 .vue 后缀的文件作为组件,每个组件由三部分组成:<template>、<script>、<style>

      图6-11
    • 在实际开发中,一般不需要修改 index.html 文件和 main.js 文件,而是修改各种组件,如 App.vue 文件

    • 示例:一个最基本的组件

      <template><div><h1>{{message}}</h1></div>
      </template><script>
      // export:导出组件,只有导出了才能被导入到main.js文件中
      // export、default均由VSCode自动生成
      export default {// data内的格式由VSCode自动生成,只需要按需声明数据模型即可data () {return {message: "Hello"}},methods: {},
      }
      </script><style></style>
      

Vue 组件库 Element

  • Element:由饿了么团队研发的,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库

  • 组件:组成网页的部件,例如:超链接、按钮、图片、表格、表单、分页条等

  • 快速入门:

    1. 在当前工程目录下,安装 ElementUI 组件库

      npm install element-ui@2.15.3
      

      安装完成后,可以在 node_modules/element-ui 找到安装的 ElementUI

    2. 在 main.js 文件中引入 ElementUI 组件库

      import ElementUI from 'element-ui';
      import 'element-ui/lib/theme-chalk/index.css';Vue.use(ElementUI);
      
    3. 新建一个组件,通常在 src/views 中新建组件

      • 组件命名:在默认情况下需要遵循至少两个单词+驼峰原则,否则会报错,虽然可以在配置文件中关闭语法检测,但不建议

      • 书写基本格式:基本格式可以通过 VSCode 的自动补全快速生成:

        • 输入 template,选择 <template> html.vue

        • 输入 script,选择 <script> javascript.vue

        • 输入 style,选择 <style> css.vue

    4. 访问官网 https://element.eleme.cn/ ,复制组件代码,并按需进行调整

      图6-12
    5. 在根组件中引用新建的组件,假如新组件命名为 ElementView.vue,那么可以在 template 标签中键入 <element-view 利用 VSCode 的自动补全快速生成,注意要使用自动补全时有以下几个要点:

      • 新组件中需要有 script 标签
      • 一定要键入左括号,VSCode 才能自动补全

      下面是引用后根组件中的内容示例:

      <template><div><element-view></element-view></div>
      </template><script>
      import ElementView from './views/element/ElementView.vue'
      export default {components: { ElementView },
      }
      </script><style></style>
      
    6. 运行项目,此时页面中出现了所选组件

  • Vue 项目使用 Axios:

    1. 在项目目录下安装 Axios:npm install axios
    2. 在需要使用的组件的 script 标签中导入 Axios:import axios from 'axios'

Vue 路由

  • 前端路由:URL 中的 hash 值(URL 中 # 之后的部分)与组件之间的对应关系

  • 作用:可以实现点击标签后展示对应的组件

  • Vue Router:官方提供的 Vue 路由

  • Vue Router 的组成:

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

    1. 安装 Vue Router:如果创建 Vue 项目时勾选了 Router 功能就无需再手动安装了,否则需要 npm install vue-router@3.5.1

    2. 定义路由:在 src/router/index.js 中定义

      // 下面是创建Vue项目时默认生成的路由信息
      // path:路由路径
      // name:路由名
      // component:指定与路由对应的组件,有两种指定方式,方式一先import组件再直接指定即可,方式二在component中import
      const routes = [{path: '/',					// 根路径,项目页面的默认路径name: 'home',component: HomeView},{path: '/about',name: 'about',component: () => import(/* webpackChunkName: "about" */ '../views/AboutView.vue')}
      ]
      
    3. 将需要链接到组件的标签使用 <router-link> 包围

      对于使用 <router-link> 包围的数据,浏览器会将其解析为超链接,当点击该标签时,URL 会自动跳转到 项目路径 + 路由路径

      例如:项目页面的默认 URL 为 http://localhost:8080/#/ ,点击下面的标签后会跳转到 http://localhost:8080/#/about

      <router-link to="/about">标签一</router-link>
      
    4. 在需要动态展示组件的地方使用 <router-view>

      例如:有一个 Vue 项目将 App.vue 作为根组件,那么只要在 App.vue 的 template 标签内添加下面代码即可实现动态展示组件

      <router-view></router-view>
      
    5. (可选)路由重定向:

      // 当访问的路由路径为 '/' 时会自动重定向为 '/about'
      {path: '/',redirect: '/about'
      }
      

打包部署

  • Vue 项目的打包:

    图6-14
  • Vue 项目的部署

    • Nginx:一款轻量级的 Web 服务器/反向代理服务器及电子邮件代理服务器,是目前最为流行的前端服务器
    • 部署:将打包好的 dist 目录下的文件复制到 Nginx 安装目录的 html 文件夹下
    • 启动:运行 nginx.exe 文件,Nginx 服务器默认占用 80 端口号,在浏览器中输入 http://localhost:80 即可访问打包好的项目
    • 注意:如果 80 端口号已经被占用了,可以在 conf/nginx.conf 中修改默认端口号

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

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

相关文章

leetcode hot 19

解题思路:这题思路主要是用某个容器(数组等)来存储链表,然后再用双指针或者同时遍历的方法就可以判断。我使用栈进行存储,出栈的元素相当于链表倒序,如果和链表正序的结果相同就证明是回文。如果想用O(1)的空间,就把前一半或后一半的链表倒转,然后遍历就可以了。 /*** D…

code.c WriteUp

题目链接: https://pan.baidu.com/s/1u8bGbKcUF6_gLaw63L3jyA?pwd=h8r5 提取码: h8r5 WriteUp 题目名称:code.c 分类:Reverse 描述:得到源码的输出结果 解题思路 首先用Vscode查看code.c文件,发现该文件对argv[]进行判断处理,其中很容易联想到这和输出结果紧密联系。依次…

6. Calcite添加自定义函数

1. 简介 在上篇博文中介绍了如何使用calcite进行sql验证, 但是真正在实际生产环境中我们可能需要使用到用户自定义函数(UDF): 通过代码实现对应的函数逻辑并注册给calcitesql验证: 将UDF信息注册给calcite, SqlValidator.validator验证阶段即可通过验证 sql执行: calcite通过调…

P10945 Place the Robots 紫 题解

Part 1. 题意 在 \(N \times M\) 的矩阵中的空地放人机,任一人机上下左右走到边界或墙之前遇不到另一人机。 我已经尽力写得简短了。。Part 2. 思路 我们先思考无墙的情况。 若无墙,则同車的放置,把草方块当作禁止放車的方块即可,。 贴一下车的放置的代码: #include <b…

如何实现和调试REST API中的摘要认证(Digest Authentication)

如何实现和调试REST API中的摘要认证(Digest Authentication) 在保护REST API时,开发者通常会在多种认证机制之间进行选择,其中摘要认证(Digest Authentication)是一种常见的选择。本文探讨了使用摘要认证的原因,解释了其原理,提供了Java和Go语言的实现示例,并提供了测…

CF2068H. Statues

CF2068H. Statues 构造题. 思路 我们设 \(d_0 = a + b\) 是第 1 座雕像到第 \(n\) 座雕像的距离. 那么首先可以注意到两个必要条件:\(\displaystyle \sum_{i = 0}^{n - 1} d_i\) 为偶数. 对于 \(\forall i \in [0, n - 1]\), 都有 \(d_i \le d_0 + \dots + d_{i - 1} + d_{i + …

WEB攻防-机制验证篇重定向发送响应状态码跳过步骤验证码回传枚举

笔记: 验证码突破:回传的时候泄露了发送的验证码导致不需要知道目标的验证码是多少直接使用数据包里面的队列 规律爆破:就是常见的数字四位或者六位 10000 种可能在规定时间内爆破或者多次验证后网站不会出现新的验证码没有次数限制可以尝试爆破或者是汉字进行 重定向用户:通过…

Docker 安装 Redis 容器

1、下载Redis镜像下载指定版本的Redis镜像 (xxx指具体版本号) docker pull redis:xxx docker pull redis 下载最新版Redis镜像 (其实此命令就等同于 : docker pull redis:latest ),我用5.0.5版本。docker pull redis:5.0.52、 检查当前所有Docker下载的镜像docker images

Script-Server:用Web UI轻松管理你的脚本执行

# 监控 # 运维人员 在现代软件开发和运维中,脚本的使用频繁而广泛。然而,如何让非技术人员轻松、安全地运行这些脚本成为了一个挑战。 幸运的是,Script-Server应运而生,它是一个为脚本提供的Web用户界面,可以让用户通过一个直观的界面执行各种脚本,而无需编写代码。本文…

nuxtjs + scss + unocss + pinia 新建项目

1、通过命令行报错的,直接下载压缩包 pnpm dlx nuxi init <project-name>压缩包地址:https://codeload.github.com/nuxt/starter/tar.gz/refs/heads/v3 2、安装插件 1、安装unocss pnpm install --save-dev @unocss/nuxt unocss# nuxt.config.jsmodules: [@unocss/nuxt…

【Azure 环境】执行 az ad user show –id 报错 Insufficient privileges to complete the operation

执行 az ad user show –id 报错 Insufficient privileges to complete the operation问题描述 本地环境中,执行 az ad user show -id 时候,报错 insufficient privileges to complete the operation !问题解答 此报错说明,登录Azure (az login) 时,所使用的账号权限不足所…

VMware ESXi 8.0U3d macOS Unlocker OEM BIOS 2.7 集成网卡驱动和 NVMe 驱动 (集成驱动版)

VMware ESXi 8.0U3d macOS Unlocker & OEM BIOS 2.7 集成网卡驱动和 NVMe 驱动 (集成驱动版)VMware ESXi 8.0U3d macOS Unlocker & OEM BIOS 2.7 集成网卡驱动和 NVMe 驱动 (集成驱动版) 发布 ESXi 8.0U3 集成驱动版,在个人电脑上运行企业级工作负载 请访问原文链接:…