016-Vue-黑马2023:前后端分离开发:在线接口文档,前端工程化、Element、nginx

第三节 前后端分离开发

1、介绍

开发模式

  • 前后端混合开发:传统开发模式
    在这里插入图片描述

  • 前后端分离开发:当前最为主流的开发模式
    在这里插入图片描述

  • 页面原型+需求案例:分析出接口文档
    在这里插入图片描述

  • 离线开发文档示例:
    在这里插入图片描述

2、YAPI

在线接口文档管理平台:

  • 介绍:YApi 是高效、易用、功能强大的 api 管理平台,旨在为开发、产品、测试人员提供更优雅的接口管理服务
  • 地址: http://yapi.smart-xwork.cn/
  • 2个功能:
    • API接口管理
    • Mock服务:通过YAPI平台模拟真实接口,生成接口的模拟测试数据,用于前端工程测试。这样即使后端的人员没有开发完毕,前端开发人员也可以使用YAPI平台所提供的Mock地址来进行模拟数据的测试。
      在这里插入图片描述

使用:

  • 可以部署在公司内部服务器,公司内部自己使用。也可以使用YAPI官方提供的公网部署的YAPI平台,注册一个账号使用。

2.1、添加项目

  • 步骤:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

2.2、添加分类

  • 步骤:
    在这里插入图片描述

2.3、添加接口

  • 步骤:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

2.4、编辑接口详细信息

  • 步骤:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

2.5、预览效果

  • 接口文档保存后,会自动生成一个Mock地址
    在这里插入图片描述
  • 点击此地址可以看到会自动的生成Mock测试数据:前端人员在测试的时候就可以直接访问此地址进行测试。
    在这里插入图片描述
  • 这个数据是根据定义接口时,指定的返回数据格式生成的
    在这里插入图片描述

2.6、高级Mock

  • 当然这个返回数据里面的值是个比较宽泛的数据,可以在高级Mock功能中,手动指定当前接口生成的测试数据是什么。
    在这里插入图片描述
    在这里插入图片描述
    修改value中的值:
    在这里插入图片描述
    再次点击预览中的MocK地址,可以看到生成的测试数据已经被改变了。
    在这里插入图片描述

第四节 前端工程化

1、说明

  • 当前开发中使用到的前端资源,我们什么时候使用就什么时候引用。
    在这里插入图片描述

    • 最终形成的工程结构如下:
      在这里插入图片描述
    • 缺点:在大型项目开发中会存在很多问题,每一次开发一个功能都是从0开始,多个页面当中的组件或者是功能复用性并不好,并且js文件、图片文件没有规范化的存储目录,想怎么定义就怎么定义,团队协作开发时每个开发人员都有自己的开发习惯,这样就很不方便项目的维护以及管理。
  • 现在的前端开发都讲究前端开发的模块化、组件化、规范化、自动化:
    在这里插入图片描述

    • 模块化:把js、css制作成一个个可以复用的模块

    • 组件化:把UI组件,css样式,js行为封装为一个个的组件,便于管理。

    • 规范化:提供一套标准规范的目录结构和编码规范,所有开发人员都遵循这一套统一的规范进行开发。

    • 自动化:项目的构建、项目的部署、项目的测试都可以自动化的完成。

    • 问题:使用前端工程化以后,在使用vue开发大型项目的时候,我们就需要考虑代码的目录结构,项目的目录结构,部署,以及代码的单元测试等事情。如果每一个项目都手动的完成这些工作那么效率是非常底下的。

      • 所以通常会使用一些现成的工具来帮助我们完成这些事情,这个工具就是vue官方提供的脚手架工具。

2、Vue脚手架的环境准备

  • 介绍:Vue-cli 是Vue官方提供的一个脚手架,用于快速生成一个Vue的项目模板。
  • Vue-cli提供了如下功能:
    • 统一的目录结构
    • 本地调试
    • 热部署
    • 单元测试
    • 集成打包上线
  • 依赖环境:Node]s(类似于java当中的jdk)

2.1、安装NodeJS

  • 官网:https://nodejs.org/en
    在这里插入图片描述
  • 安装步骤:
    • 双击资料中提供的安装包
      在这里插入图片描述
      在这里插入图片描述

    • 选择安装目录:选择安装到一个,没有中文,没有空格的目录下(新建一个文件夹NodeJS)
      在这里插入图片描述
      在这里插入图片描述

    • 验证NodeJS环境变量:
      NodeJS 安装完毕后,会自动配置好环境变量,我们验证一下是否安装成功,通过: node -v
      在这里插入图片描述

    • 配置npm的全局安装路径
      在这里插入图片描述
      使用管理员身份运行命令行,在命令行中,执行如下指令:
      npm config set prefix "E:\develop\NodeJS"
      注意:E:\develop\NodeJS 这个目录是NodeJS的安装目录

    • 切换npm的淘宝镜像:可以加速资源下载
      使用管理员身份运行命令行,在命令行中,执行如下指令:
      npm config set registry https://registry.npm.taobao.org

    • 安装Vue-cli
      使用管理员身份运行命令行,在命令行中,执行如下指令:
      npm install -g @vue/cli
      这个过程中,会联网下载,可能会耗时几分钟,耐心等待。
      在这里插入图片描述

    • 查看Vue-cli是否安装成功:vue --version
      在这里插入图片描述

3、Vue项目简介

  • 基于脚手架创建好一个工程化的vue项目

    • 方式一:命令行(直接在命令行中输入vue create 项目名称
      在这里插入图片描述
    • 方式二:图形化界面(在命令行中输入命令vue ui,回车后就会vue的项目管理器图形化界面,在此界面中再来创建vue项目)
      在这里插入图片描述
  • 案例测试:以方式二为例

    • 在F盘新创建一个文件夹,以管理员身份打开命令提示符窗口,在窗口中进入到这个新创建的文件夹目录。输入指令vue ui,调出图形化界面。
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
    • 可以看到磁盘目录已经创建好vue项目了:
      在这里插入图片描述
      在这里插入图片描述
  • 基于Vue脚手架创建出来的工程,有标准的目录结构,如下:
    在这里插入图片描述

4、使用vscode打开vue项目

  • 打开vue项目所在的文件夹
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

5、运行vue项目

  • 2种方式:
    • 图形化界面
    • 命令行
      在这里插入图片描述
  • 说明:图形化界面方式需要使用npm脚本运行vue项目,所以要先打开npm脚本工具栏。
    在这里插入图片描述在这里插入图片描述
    重启VSCode,点开项目中的package.json,在资源管理器右边的...中勾选npm脚本,就可以在左下看到NPM脚本
    在这里插入图片描述
  • 以图形化界面方式为例,运行当前案例的vue项目:
    • 以管理员方式打开vscode,之后使用npm运行
    • vue项目构建完毕后它会自动启动一个服务,运行在8080端口号上,所以可以通过此链接访问当前项目。
      在这里插入图片描述
      在这里插入图片描述
    • 这个页面是vue项目中自动提供的根组件App.vue,这个组件指的就是一个页面。
      在这里插入图片描述
    • 修改页面的文本:Home—>Vue Home,之后ctrl+s保存,发现没有重启项目,也没有刷新浏览器,页面仍然发生了变化,这就是vue项目提供的热部署功能。
      在这里插入图片描述
      在这里插入图片描述

6、修改前端vue项目的端口号

  • 在vue的配置文件vue.config.js中进行修改,ctrl+s进行保存。
  • 由于修改了端口号,所以在终端中停掉当前的服务,之后重新启动。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

7、Vue项目开发流程

说明:

  • 启动工程化的vue项目,访问到的页面其实就是,vue项目项目默认提供的首页index.html。
    在这里插入图片描述
    创建好vue项目之后,public这个目录下自带的一个页面index.html
    在这里插入图片描述

开发流程:

  • 在index.html首页中它是默认引入了,入口文件main.js(此文件时vue项目的入口文件,在src目录下)
  • 在入口文件中又引入了很多的公共组件,通过import关键字引入模块,通过export关键字将对象或函数导出为模块
  • eg:import App from './App.vue',表示导入当前目录下的App.vue这个组件,并且给它起个名字为App,之后就可以在这个main.js文件中使用这个App组件了。
    在这里插入图片描述在这里插入图片描述
  • 在index.htm只是定义了一个空的div标签,但是界面中展示了很多的信息,那么它是怎么做到的呢???
  • 答:在创建vue对象的时候,通过render函数创建了对应的虚拟Dom元素,这部分Dom元素是在App.vue这个根组件中定义的。
  • 在vue项目中会看到很多的以.vue为结尾的文件,被叫做组件文件,每个组件文件都由三部分组成。

在这里插入图片描述

  • 案例测试:改造App.vue组件
    在这里插入图片描述
<template><div ><!-- 当我们定义好了一个数据模型之后,就可以在上面的模版中通过插值表达式来展示出数据模型当中的数据--><h1>{{message}}</h1></div>
</template>/* 快捷键:script,选择javascript.vue生成。export default:表示将定义的这一部分对象导出去,只有在这个地方将它导出一个模块,在别的地方才可以通过import关键字导入进来。定义vue当中的数据模型:之前,new一个vue对象,之后声明一个属性data,然后在里面指定一个对象。现在,不能指定一个对象只能是指定一个函数function,之后在function函数中声明一个对象,并且要把对象return回去,*/
<script>
export default {data() {return {message: "Hello vue"}},//如果还想要定义方法,则使用methods属性,在此属性中定义一个个的方法。methods: {}
}
</script><style></style>
  • 使用管理员方式打开vscode,并运行,发现数据模型的数据已经被改变了
    在这里插入图片描述
  • 说明:vue项目的开发,其实很少操作main.js入口文件和首页index.heml,主要操作的就是一些组件文件(.vue结尾的文件)。

第五节 Vue组件库Element

1、什么是Element

  • Element:是饿了么团队研发的,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库。
  • 组件:组成网页的部件,例如 超链接、按钮、图片、表格、表单、分页条等等。
  • 官网https://element.eleme.cn/#/zh-CNListener
  • 为什么要学Element,通过下图的原始html标签所构建的网页和Element提供的各个的网页组件构建的网页效果对比,可以看出右边的完胜。
    在这里插入图片描述

2、快速入门

步骤说明:

  • 安装ElementUI组件库 (在当前工程的目录下),在命令行执行指令:
    在这里插入图片描述

  • 引入ElementUI组件库
    在这里插入图片描述

  • 访问官网,复制组件代码,调整
    在这里插入图片描述

案例演示

  • 步骤1:安装ElementUI组件库 :
    npm install element-ui@2.15.3,回车后他会联网下载ElementUI的2.15.3版本,并将其安装在当前项目中,会存放在node_modules这个目录下
    在这里插入图片描述
    在这里插入图片描述
    在node_modules这个目录下,可以看到element-ui目录,说明组件库安装成功。
    在这里插入图片描述
  • 步骤2:在入口文件main.js中,引入ElementUI组件库
    import ElementUI from 'element-ui';
    import 'element-ui/lib/theme-chalk/index.css';
    Vue.use(ElementUI);
    在这里插入图片描述
  • 步骤3:定义一个组件文件访问官网,复制组件代码。(根组件只有一个App.vue,其它的组件可以放在views这个目录下,它自带的有2个vue组件。)
  • 定义文件夹:element,定义文件:ElementView.vue,在文件中定义基本的结构。
    在这里插入图片描述
<template></template><script>
export default {}
</script><style></style>
  • 复制官网的组件代码,之后进行调整
    在这里插入图片描述
    把样式复制到div标签内部:
    在这里插入图片描述
    <div><!-- button按钮,如果我们复制的组件比较繁琐,还要往下看一下是否还有一些其它的数据模型或者vue中方法的定义,如果有也要一并复制过来。 --><el-row><el-button>默认按钮</el-button><el-button type="primary">主要按钮</el-button><el-button type="success">成功按钮</el-button><el-button type="info">信息按钮</el-button><el-button type="warning">警告按钮</el-button><el-button type="danger">危险按钮</el-button></el-row></div>
  • 运行测试:管理员方式打开vscode并运行,发现显示的结果是之前修改后的根组件首页。因为默认情况下展示的是根组件的内容。
    在这里插入图片描述
  • 修改:在根组件App.vue中,引入ElementView.vue这个组件
  • 直接使用</element-view>标,此时它会自动在script标签中使用import关键字将这个组件导入进来,并且在vue对象中已经把这个组件加入进来了。
    在这里插入图片描述
  • 再次测试:
    在这里插入图片描述

3、常用组件

  • 学习思路:那对于element当中的常见组件的学习呢,只需要去参照element的官方网站,然后找到对应的组件,查找到组件的源代码,之后复制到vscode的组件中,然后做一些简单地调整即可,把它改成我们想要的样式。

3.1、常见组件-表格

  • Table 表格:用于展示多条结构类似的数据,可对数据进行排序、筛选、对比或其他自定义操作。
    在这里插入图片描述
  • 官方网站:以带边框表格为例
    在这里插入图片描述
    可以看到表格还要展示数据模型,所以可以把要展示的数据模型也复制进来。
    在这里插入图片描述
  • 组件代码:复制进来后ctrl+alt+L,页面格式化 更规整的显示。
    在这里插入图片描述
    在这里插入图片描述
    <!-- Table表格 --><el-table :data="tableData" border style="width: 100%"><el-table-column prop="date" label="日期" width="180"> </el-table-column><el-table-column prop="name" label="姓名" width="180"> </el-table-column><el-table-column prop="address" label="地址"> </el-table-column></el-table>data() {return {tableData: [{date: '2016-05-02',name: '王小虎',address: '上海市普陀区金沙江路 1518 弄'}, {date: '2016-05-04',name: '王小虎',address: '上海市普陀区金沙江路 1517 弄'}, {date: '2016-05-01',name: '王小虎',address: '上海市普陀区金沙江路 1519 弄'}, {date: '2016-05-03',name: '王小虎',address: '上海市普陀区金沙江路 1516 弄'}]}},
  • 如果不清楚表格中的属性代表的含义,可以在官网中每一个组件的最下面找到对属性的解释:
    在这里插入图片描述
  • 测试:由于自带的热部署,所以不需要启动项目也不用刷新浏览器
    在这里插入图片描述

3.2、常见组件-分页

  • Pagination 分页:当数据量过多时,使用分页分解数据。
    在这里插入图片描述
  • 官网:
    在这里插入图片描述
  • 组件代码:
    在这里插入图片描述
    <!-- Pagination 分页 --><el-pagination background layout="prev, pager, next" :total="1000"></el-pagination>
  • 效果:
    在这里插入图片描述
  • 添加事件:重听
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    <!-- Pagination 分页 --><el-pagination background layout="total,sizes, prev, pager, next, jumper" @size-change="handleSizeChange"@current-change="handleCurrentChange":total="1000"></el-pagination>methods: {handleSizeChange:function(val){alert("每页记录数变化" + val)},handleCurrentChange:function(val){alert("页码发生变化" + val)},onSubmit:function(){alert(JSON.stringify(this.form));}}

在这里插入图片描述
在这里插入图片描述

3.3、常见组件-对话框

  • Dialog 对话框:在保留当前页面状态的情况下,告知用户并承载相关操作。
    在这里插入图片描述

  • 官网:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 组件代码
    在这里插入图片描述
    在这里插入图片描述

     <!-- Dialog对话框 --><!-- Table --><el-button type="text" @click="dialogTableVisible = true">打开嵌套表格的 Dialog</el-button><el-dialog title="收货地址" :visible.sync="dialogTableVisible"><el-table :data="gridData"><el-table-column property="date" label="日期" width="150"></el-table-column><el-table-column property="name" label="姓名" width="200"></el-table-column><el-table-column property="address" label="地址" width="200"></el-table-column></el-table></el-dialog>gridData: [{date: '2016-05-02',name: '王小虎',address: '上海市普陀区金沙江路 1518 弄'}, {date: '2016-05-04',name: '王小虎',address: '上海市普陀区金沙江路 1518 弄'}, {date: '2016-05-01',name: '王小虎',address: '上海市普陀区金沙江路 1518 弄'}, {date: '2016-05-03',name: '王小虎',address: '上海市普陀区金沙江路 1518 弄'}],dialogTableVisible: false
  • 效果:
    在这里插入图片描述

3.4、常见组件-表单

重听

  • Form 表单:由输入框、选择器、单选框、多选框等控件组成,用以收集、校验、提交数据。
    在这里插入图片描述

  • 官网:
    在这里插入图片描述

  • 功能:点击按钮呈现一个表单,要用到上面的Dialog对话框,只不过里面的内容展示的是form表单。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    <!-- Dialog对话框-Form表单 --><el-button type="text" @click="dialogFormVisible = true">打开嵌套Form的 Dialog</el-button><el-dialog title="Form表单" :visible.sync="dialogFormVisible"><el-form ref="form" :model="form" label-width="80px"><el-form-item label="活动名称"><el-input v-model="form.name"></el-input></el-form-item><el-form-item label="活动区域"><el-select v-model="form.region" placeholder="请选择活动区域"><el-option label="区域一" value="shanghai"></el-option><el-option label="区域二" value="beijing"></el-option></el-select></el-form-item><el-form-item label="活动时间"><el-col :span="11"><el-date-picker type="date" placeholder="选择日期" v-model="form.date1" style="width: 100%;"></el-date-picker></el-col><el-col class="line" :span="2">-</el-col><el-col :span="11"><el-time-picker placeholder="选择时间" v-model="form.date2" style="width: 100%;"></el-time-picker></el-col></el-form-item><el-form-item><el-button type="primary" @click="onSubmit">提交</el-button><el-button>取消</el-button></el-form-item></el-form></el-dialog>
/* 表单项绑定的数据模型 */form: {name: '',region: '',date1: '',date2: ''},   //声明表单的数据模型      
dialogFormVisible: false,/* 提交按钮的事件 */onSubmit:function(){/*提交按钮时拿到表单数据,因为这些表单项的数据都绑定在了form数据模型中,所以要查看表达项数据直接把form这个对象输出出来就可以了,直接输出的是对象,需要把它转化为字符串输出才可以看到里面的数据*/alert(JSON.stringify(this.form));}
  • 效果:
    在这里插入图片描述

4、案例

4.1、需求分析&开发步骤

  • 案例需求:根据页面原型完成员工管理页面开发,并通过Axios完成数据异步加载。
    在这里插入图片描述
  • 服务端数据获取地址:http://yapi.smart-xwork.cn/mock/169327/emp/list
    通过在线文档YAPI生成的测试数据。
    在这里插入图片描述
  • 最终实现的页面效果
    在这里插入图片描述
  • 实现步骤:
    在这里插入图片描述

4.2、基本页面布局

  • 添加组件,在组件中编写基本结构
    在这里插入图片描述
<template><div></div>
</template><script>
export default {}
</script><style></style>
  • 修改根组件的引入方式
    在这里插入图片描述

  • 编写页面布局:这个页面布局不需要自己编写,在Element中还提供了一个布局组件(Container 布局容器)
    在这里插入图片描述

  • 可以选择一个常见的页面布局,符合当前案例的开发页面的
    在这里插入图片描述
    在这里插入图片描述

  • 效果:
    在这里插入图片描述

  • 添加css样式
    在这里插入图片描述

<template><div><el-container style="height: 700px; border: 1px solid #eee"><el-header style="font-size: 40px; background-color: rgb(238, 241, 246)">tlias 智能学习辅助系统</el-header><el-container><el-aside width="200px"><el-menu :default-openeds="['1', '3']"><el-submenu index="1"><template slot="title"><i class="el-icon-message"></i>系统信息管理</template><el-menu-item index="1-1">部门管理</el-menu-item><el-menu-item index="1-2">员工管理</el-menu-item></el-submenu></el-menu></el-aside><el-main><el-table :data="tableData"><el-table-column prop="name" label="姓名" width="180"></el-table-column><el-table-column prop="image" label="图像" width="180"></el-table-column><el-table-column prop="gender" label="性别" width="140"></el-table-column><el-table-column prop="job" label="职位" width="140"></el-table-column><el-table-column prop="entrydate" label="入职日期" width="180"></el-table-column><el-table-column prop="updatetime" label="最后操作时间" width="230"></el-table-column><el-table-column label="操作" ><el-button type="primary" size="mini">编辑</el-button><el-button type="danger" size="mini">删除</el-button></el-table-column></el-table></el-main></el-container></el-container></div>
</template><script>
export default {data() {return {tableData: []}},
};
</script><style>
</style>
  • 最终效果:
    在这里插入图片描述

4.3、页面组件实现

  • 效果
    在这里插入图片描述

4.4、axios异步加载数据

Vue项目中使用Axios:

  • 在项目目录下安装axios:npm install axios;
  • 需要使用axios时,导入axios:import axios from 'axios';

案例测试:

  • 打开集成终端,输入命令进行安装
    在这里插入图片描述
    在这里插入图片描述
  • 导入axios,在钩子函数中编写axios发送请求
<template><div><el-container  style="height: 700px; border: 1px solid #eee"><el-header style="font-size:40px; background-color: rgb(238, 241, 246)">tlias 智能学习辅助系统</el-header><el-container><el-aside width="230px" style="border: 1px solid #eee"><el-menu :default-openeds="['1', '3']"><el-submenu index="1"><template slot="title"><i class="el-icon-message"></i>系统信息管理</template><el-menu-item index="1-1">部门管理</el-menu-item><el-menu-item index="1-2">员工管理</el-menu-item></el-submenu></el-menu></el-aside><el-main><!-- 表单 --><el-form :inline="true" :model="searchForm" class="demo-form-inline"><el-form-item label="姓名"><el-input v-model="searchForm.name" placeholder="姓名"></el-input></el-form-item><el-form-item label="性别"><el-select v-model="searchForm.gender" placeholder="性别"><el-option label="" value="1"></el-option><el-option label="" value="2"></el-option></el-select></el-form-item><el-form-item label="入职日期"><!-- 日期选择器 --><el-date-pickerv-model="searchForm.entrydate"type="daterange"range-separator=""start-placeholder="开始日期"end-placeholder="结束日期"></el-date-picker></el-form-item><el-form-item><el-button type="primary" @click="onSubmit">查询</el-button></el-form-item></el-form><!-- 表格 --><el-table :data="tableData" border><el-table-column prop="name" label="姓名" width="180"></el-table-column><el-table-column label="图像" width="180"><template slot-scope="scope"><img :src="scope.row.image" width="100px" height="70px"></template></el-table-column><el-table-column label="性别" width="140"><template slot-scope="scope">{{scope.row.gender == 1 ? '男':'女'}}</template></el-table-column><el-table-column prop="job" label="职位" width="140"></el-table-column><el-table-column prop="entrydate" label="入职日期" width="180"></el-table-column><el-table-column prop="updatetime" label="最后操作时间" width="230"></el-table-column><el-table-column label="操作" ><el-button type="primary" size="mini">编辑</el-button><el-button type="danger" size="mini">删除</el-button></el-table-column></el-table><br><!-- 分页条 --><!-- Pagination 分页 --><el-pagination background layout="total,sizes, prev, pager, next, jumper" @size-change="handleSizeChange"@current-change="handleCurrentChange":total="1000"></el-pagination></el-main></el-container></el-container></div>
</template><script>
import axios from 'axios';export default {data() {return {tableData: [],searchForm: {name:"",gender:"",entrydate:[]}}},methods: {onSubmit:function(){alert("查询数据");},handleSizeChange:function(val){alert("每页记录数变化" + val)},handleCurrentChange:function(val){alert("页码发生变化" + val)}},mounted () {//发送异步请求,获取数据axios.get("http://yapi.smart-xwork.cn/mock/169327/emp/list").then((result) => {this.tableData = result.data.data;  });}
}
</script><style></style>
  • 效果
    在这里插入图片描述

5、Vue路由

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6、打包部署

6.1、说明

  • 前后端分离开发模式中,前端人员开发前端工程,后端人员开发后端工程,最终将前端工程和后端工程分开部署在对应的服务器上,而前端服务器当前最流行的就是nginx。
    在这里插入图片描述

6.2、步骤-打包

  • 打包:打包后会将项目放在dist这个目录下
    在这里插入图片描述
  • 案例测试:
    在这里插入图片描述
    打开dist所在的磁盘目录
    在这里插入图片描述
    打包后的文件
    在这里插入图片描述
    在这里插入图片描述

6.3、步骤-部署

说明:

  • 将dist这个目录下打包后的这些资源呢部署在服务器上就可以了
  • nginx服务器介绍:
    • 介绍:Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。其特点是占有内存少,并发能力强,在各大型互联网公司都有非常广泛的使用。
    • 官网:https://nginx.org/

在这里插入图片描述

案例测试:

  • 下载解压nginx稳定版到一个没有中文的目录
    在这里插入图片描述
    在这里插入图片描述

  • 部署:将打包好的 dist 目录下的文件,复制到nginx安装目录的html目录下。
    在这里插入图片描述

    • 有2个默认的页面可以删除掉
      在这里插入图片描述
      在这里插入图片描述
  • 启动:双击 nginx.exe 文件即可,Nginx服务器默认占用 80 端口号
    在这里插入图片描述

    • 启动:
      在这里插入图片描述
    • 注意事项:Nginx默认占用80端口号,如果80端口号被占用,可以在nginx.conf中修改端口号。(netstat –ano | findStr 80)
      在这里插入图片描述
      比如修改为90,之后重启nginx。
      在这里插入图片描述
    • 访问测试:
      注意:这里只是演示的是nginx部署静态资源,它本身还可以反向代理,负载均衡等功能。
      在这里插入图片描述

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

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

相关文章

05-python之函数-函数的定义/函数的参数/函数返回值/函数说明文档/函数的嵌套使用/函数变量的作用域

01-函数的介绍 """ 演示&#xff1a;快速体验函数的开发及应用 ​ """ #需求&#xff0c;统计字符串的长度&#xff0c;不使用内置函数len() str1 "itheima" str2 "itcast" str3 "python" ​ #定义一个技术的变…

解决Win11安装打印机修复补丁,连接共享打印机依然错误的方法

问题原因&#xff1a;Win11最新安全共享策略导致&#xff01; 解决方案&#xff1a;按照下面步骤操作绕过Win11最新安全共享策略。 点击Win图标&#xff0c;在开始菜单选择设置。 选择蓝牙和其他设备&#xff0c;选择打印机和扫描仪。 点击添加设备&#xff0c; 点击手动添加。…

HubSpot电子邮件自动回复怎么设置?附注意事项!

HubSpot 提供了电子邮件自动回复的功能&#xff0c;使得企业能够更高效地管理和处理电子邮件通信。以下是关于 HubSpot 电子邮件自动回复的一些重要信息和步骤&#xff1a; 设置电子邮件自动回复的步骤&#xff1a; 登录HubSpot账户&#xff1a; 打开 HubSpot 平台并登录你的账…

基于SSM的戏剧推广网站的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue、HTML 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是…

IDEA中如何让包名一层层展开的设置

在开发过程中&#xff0c;发现新下载的一个项目在打开时候&#xff0c;呈现的包是没有一层一层展开的&#xff0c;是平铺在idea中的&#xff0c;截图如下&#xff1a; 设置方法&#xff1a; 打开options的小图标 在treeAppear中的Flatten packages的对号取消掉取消之后的效果…

【RTOS】快速体验FreeRTOS所有常用API(7)任务通知

目录 七、任务通知7.1 基本概念7.2 发出通知7.3 等待通知7.4 实例 七、任务通知 该部分在上份代码基础上修改得来&#xff0c;代码下载链接&#xff1a; https://wwzr.lanzout.com/i4Efu1la39wh 密码:cbvx 该代码尽量做到最简&#xff0c;不添加多余的、不规范的代码。 内容主要…

SpringBoot-Starter 自动锁组件

在日常业务开发的过程中&#xff0c;我们经常会遇到存在高并发的场景&#xff0c;这个时候都会选择使用redis来实现一个锁&#xff0c;来防止并发。 但是很多时候&#xff0c;我们可能业务完成后&#xff0c;就需要把锁释放掉&#xff0c;给下一个线程用&#xff0c;但是如果我…

免费scrum管理工具Leangoo敏捷做缺陷跟踪管理

缺陷管理通常关注如下几个方面&#xff1a; 1. 缺陷的处理速度 2. 缺陷处理的状态 3. 缺陷的分布 4. 缺陷产生的原因 使用Leangoo敏捷看板我们可以对缺陷进行可视化的管理&#xff0c;方便我们对缺陷的处理进展、负责人、当前状态、分布情况等各个方面一目了然。 下面我们…

安卓APP和小程序渗透测试技巧总结

记得开启模拟器的ROOT权限&#xff1a;本文章仅供学习和研究使用&#xff0c;严禁使用该文章内容对互联网其他应用进行非法操作&#xff0c;若将其用于非法目的&#xff0c;所造成的后果由您自行承担。 由于安卓7开始对系统安全性做了些改动&#xff0c;导致应用程序不再信任客…

设计模式——一文即可

对常用设计模式的总结&#xff0c;也是对设计模式专栏的总结 简单工厂模式 简单工厂模式&#xff08;Simple Factory Pattern&#xff09;是一种创建型设计模式&#xff0c;它提供了一种创建对象的最佳方式&#xff0c;通过将对象的创建逻辑封装在一个工厂类中&#xff0c;客…

【深度学习环境搭建】Windows搭建Anaconda3、已经Pytorch的GPU版本

目录 搭建Anaconda3搭建GPU版本的Pytorch你的pip也要换源&#xff0c;推荐阿里源打开conda的PowerShell验证 搭建Anaconda3 无脑下载安装包安装&#xff08;自行百度&#xff09; 注意点&#xff1a; 1、用户目录下的.condarc需要配置&#xff08;自定义环境的地址&#xff08…

QT quick基础:加载资源文件(字体)

一、加载字体 1、准备字体库 Roboto-Regular.ttf 2、在工程下面新建文件夹fonts&#xff0c;并将字体库放到该文件夹下面。 3、在QT Create 工程中添加字体。 添加现有文件选择Roboto-Regular.ttf。 4、执行qmake 5、在.qml文件加载字体 /* 加载字体 */FontLoader {id: f…

Linux批量快速修改文件名的三种方法

在Linux中&#xff0c;批量重命名文件是一项常见且有用的操作。以下是三种常用的批量重命名文件的方法&#xff0c;每种方法都附有示例。这些方法既可以适用于新手&#xff0c;也适用于更有经验的用户。 话不多说&#xff0c;直接上干货&#xff01; rename 命令 rename命令是…

浅谈电动汽车充电站箱变电气安全物联监测系统设计与应用

摘 要:基于物联网技术架构提出了一种适用于电动汽车充电站箱变的电气安全物联监测系统设计方案。该系统由电气安全智能感知设备、通信网关、电气安全物联网监测平台等构成&#xff0c;可支持充电站箱变充电桩出线回路电流、电缆 温度、剩余电流、故障电弧、短路电流等数据采集监…

PagedAttention: from interface to kernal

1 Overview PagedAttention灵感来自于操作系统中虚拟内存和分页的经典思想&#xff0c;它可以允许在非连续空间立存储连续的KV张量。具体来说&#xff0c;PagedAttention把每个序列的KV缓存进行了分块&#xff0c;每个块包含固定长度的token&#xff0c;而在计算attention时可…

MCU、MPU、SOC简介

文章目录 前言一、MCU二、MPU三、SOC总结 前言 随着处理器技术的不断发展&#xff0c;CPU(Central Processing Unit)的发展逐渐出现三种分支&#xff0c;分别是MCU(Micro Controller Unit&#xff0c;微控制器单元) 和MPU&#xff08;Micro Processor Unit&#xff0c;微处理器…

Angular系列教程之管道

文章目录 管道的基本概念使用内置管道创建自定义管道总结 在Angular中&#xff0c;管道&#xff08;Pipe&#xff09;是一个非常重要的概念。它们允许我们对数据进行转换、格式化和显示&#xff0c;并且可以轻松地在模板中使用。本篇文章将介绍Angular中的管道概念&#xff0c;…

SL3036国产新品 48V/60V电动车里程增程器供电芯片

随着电动车的普及&#xff0c;里程焦虑成为了很多电动车用户面临的问题。为了解决这个问题&#xff0c;SL3036国产新品应运而生&#xff0c;它是一款48V/60V电动车里程增程器供电芯片。这款芯片的出现&#xff0c;为电动车用户提供了更加可靠的续航里程&#xff0c;让他们在出行…

使用AI自动生成PPT提高制作效率

使用AI自动生成PPT提高制作效率 在制作PPT方面&#xff0c;很多制作者都会轻易跳进一个怪圈&#xff1a;“我要制作一个关于关爱老人的PPT&#xff0c;该怎么做呢&#xff0c;有模板没有?”这个会涉及很多逻辑需要经过不断的思考&#xff0c;制作PPT要通过很多素材、使用技巧、…

3DMax的位图是什么? 3DMax的位图介绍

在3dmax建模中&#xff0c;使用贴图时的位图的频率是很高的。主要原因便就是位图就是我们平常说的图片&#xff0c;有各种格式的图片&#xff0c;能把这张图片贴到物体的表面&#xff0c;呈现效果进行渲染。 3damx的位图支持多种格式&#xff0c;比如jpg、png等等。 当然常用的…