前后台分离开发 YAPI平台 前端工程化之Vue-cli

news2024/11/18 8:35:20

目录

  • YAPI介绍
  • 前端工程化之Vue-cli
    • 前端工程化简介
    • 前端工程化入门——Vue-cli
      • 环境准备
      • Vue项目简介
        • 创建Vue项目
        • vue项目目录结构介绍
        • vue项目运行方法
      • Vue项目开发流程

前后台混合开发这种开发模式有如下缺点:

沟通成本高:后台人员发现前端有问题,需要找前端人员修改,前端修改成功,再交给后台人员使
用
分工不明确:后台开发人员需要开发后台代码,也需要开发部分前端代码。很难培养专业人才
不便管理:所有的代码都在一个工程中
不便维护和扩展:前端代码更新,和后台无关,但是需要整个工程包括后台一起重新打包部署。

所以我们目前基本都是采用的前后台分离开发方式.前端工程交给专业的前端人员开发,后端工程交给专业的后端人员开发。前端页面需要数据,可以通过发送异步请求,从后台工程获取。前后台统一指定一套规范,这就是我们的接口文档。接口文档有离线版和在线版本,接口文档示可以查询今天提供资料/接口文档示例里面的资料。其我们后台开发者根据产品经理提供的产品原型和需求文档所撰写出来的。

在这里插入图片描述

在这里插入图片描述

1. 需求分析:首先我们需要阅读需求文档,分析需求,理解需求。
2. 接口定义:查询接口文档中关于需求的接口的定义,包括地址,参数,响应数据类型等等
3. 前后台并行开发:各自按照接口文档进行开发,实现需求
4. 测试:前后台开发完了,各自按照接口文档进行测试
5. 前后段联调测试:前段工程请求后端工程,测试功能



YAPI介绍

前后台分离开发中,我们前后台开发人员都需要遵循接口文档,所以接下来我们介绍一款撰写接口文档
的平台。YApi 是高效、易用、功能强大的 api 管理平台,旨在为开发、产品、测试人员提供更优雅的接口管
理服务。 其官网地址: YAPI

YApi提供了添加项目、添加分类、添加接口等功能

请添加图片描述

最后,我们还可以设置接口的mock信息,来让YApi提供一个测试接口,设置好接口信息就会自动生成mock地址,将来前端程序员在测试的时候就可以直接访问这个地址模拟后端服务器,自动生成mock测试数据

请添加图片描述




前端工程化之Vue-cli

前端工程化简介

当在前端开发中需要使用一些资源时,例如:vue.js,和axios.js文件,直接在工程中导入的开发模式存在如下问题:

每次开发都是从零开始,比较麻烦
多个页面中的组件共用性不好
js、图片等资源没有规范化的存储目录,没有统一的标准,不方便维护

所以现在企业开发中更加讲究前端工程化方式的开发,主要包括如下4个特点

模块化:将js和css等,做成一个个可复用模块
组件化:我们将UI组件,css样式,js行为封装成一个个的组件,便于管理
规范化:我们提供一套标准的规范的目录接口和编码规范,所有开发人员遵循这套规范
自动化:项目的构建,测试,部署全部都是自动完成

说白了,就是在企业级的前端项目开发中,把前端开发所需要的工具、技术、流程、经验进行规范化和标准化。从而提升开发效率,降低开发难度等等。

前端工程化入门——Vue-cli

环境准备

我们的前端工程化是通过vue官方提供的脚手架Vue-cli来完成的,用于快速的生成一个Vue的项目模板。Vue-cli主要提供了如下功能:

统一的目录结构
本地调试
热部署
单元测试
集成打包上线

运行Vue-cli,需要依赖NodeJS,我们需要先安装NodeJS,然后才能安装Vue-cli。

将nodejs选择安装到一个,没有中文,没有空格的目录下。安装完毕后,会自动配置好环境变量,我们在cmd验证一下是否安装成功,通过: node -v。
然后配置npm的全局安装路径,使用管理员身份运行命令行,在命令行中:
npm config set prefix “安装路径”
然后使用管理员身份运行命令行下载Vue-cil
npm install -g @vue/cli

安装完后运行vue --version有版本号代表成功


Vue项目简介

创建Vue项目

Vue-cli提供了如下2种方式创建vue项目:

命令行:直接通过命令行方式创建vue项目
vue create vue-project01

图形化界面:通过命令先进入到图形化界面,然后再进行vue工程的创建
vue ui

我们采用第二种方法,在工程目录下进入cmd,直接输入命令vue ui 进入到vue的图形化界面:

在这里插入图片描述

便可在此图形化界面创造项目:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

到此,vue项目创建结束。


vue项目目录结构介绍

在这里插入图片描述

vue项目的标准目录结构以及目录对应的解释如下图所示:

在这里插入图片描述

平时开发代码就是在src目录下。



vue项目运行方法

方法一

首先要将vscode的NPM脚本窗口调试出来:

在这里插入图片描述

然后重启VS Code,并且双击打开package.json文件,然后点击资源管理器处的3个小点,勾选npm脚本选项,如图所示

在这里插入图片描述

然后就能都显示NPM脚本小窗口了

在这里插入图片描述

点击之后,我们等待片刻,即可运行,在终端界面中,我们发现项目是运行在本地服务的8080端口,我们直接通过浏览器打开地址

在这里插入图片描述

最终浏览器打开后,呈现如下界面,表示项目运行成功

在这里插入图片描述

其实此时访问的是 src/App.vue这个根组件,此时我们打开这个组件,修改代码:添加内容Vue

在这里插入图片描述

只要我们保存更新的代码,我们直接打开浏览器,不需要做任何刷新,发现页面呈现内容发生了变化

在这里插入图片描述

这就是我们vue项目的热更新功能

对于8080端口,经常被占用,所以我们可以去修改默认的8080端口。我们修改vue.config.js文件的内容,添加如下代码:

devServer:{
	port:7000
}

如下图所示,然后我们关闭服务器,在vscode命令行输入ctrl c关闭服务器,并且重新启动,发现是通过7000端口来访问我们之前的项目。

在这里插入图片描述

第二种方式:命令行方式
直接基于cmd命令窗口,在vue目录下,执行输入命令npm run serve 即可,如下图所示:

在这里插入图片描述




Vue项目开发流程

其实我们访问的首页是index.html,但是我们找到public/index.html文件,打开之后发现,里面没有什么代码,但是能够呈现内容丰富的首页如下图所示:

在这里插入图片描述

所以vue是如何做到的呢?接下来我们学习一下vue项目的开发流程。
对于vue项目,index.html文件默认是引入了入口函数main.js文件,我们找到src/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')

上述代码中,包括如下几个关键点:

import: 导入指定文件,并且重新起名。例如上述代码import App from './App.vue' 导入当前目录下的App.vue并且起名为App

ps:import代表引入模块,与其对应的是export,是将对象或者函数导出为模块,在需要使用的地方将其import

new Vue(): 创建vue对象

$mount('#app');将vue对象创建的dom对象挂在到id=app的这个标签区域中,作用和之前学习的vue对象的le属性一致。这里就是挂载到了index.html中的div中

router: 路由,详细在后面的小节讲解

render: 主要用于视图的渲染的。它在这里的作用就是将上面导入进来的app中定义的视图创建出对应的虚拟dom元素,然后挂载到#app这个区域

所以其实上述代码相当于:

new Vue(
	el: "#app",
	router:router,//es6写法是当属性名和属性值一样就可以简写为router,
	render: h => h(App)
)

来到public/index.html中,我们删除div的id=app属性,打开浏览器,发现之前访问的首页一片空白,就证明了,我们main.js中通过代码挂载到index.html的id=app的标签区
域的。

此时我们知道了vue创建的dom对象挂在到id=app的标签区域,但是我们还是没有解决最开始的问题:
首页内容如何呈现的?这就涉及到render中的App了,如下图所示:

在这里插入图片描述

那么这个App对象怎么回事呢,我们打开App.vue,注意的是.vue结尾的都是vue组件。而vue的组件文件包含3个部分:

template: 模板部分,主要是HTML代码,用来展示页面主体结构的
script: js代码区域,主要是通过js代码来控制模板的数据来源和行为的
style: css样式部分,主要通过css样式控制模板的页面效果得

如下图所示就是一个vue组件的小案例:

在这里插入图片描述

此时我们可以打开App.vue,观察App.vue的代码,其中可以发现,App.vue组件的template部分内容,和我们浏览器访问的首页内容是一致的,如下图所示:

在这里插入图片描述

接下来我们可以简化模板部分内容,添加script部分的数据模型,删除css样式,完整代码如下:

<template>
  <div id="app">
    {{message}}
  </div>
</template>

<script>
export default {
  data(){
    return {
      "message":"hello world"
    }
  }
}
</script>
<style>

</style>

保存直接,回到浏览器,我们发现首页展示效果发生了变化,如下图所示:

在这里插入图片描述

至此就熟悉了Vue项目开发的基本流程


PS:
其中写script标签时vscode有代码补全,要选择javascript.vue。

请添加图片描述

补全后是下面这样的一个标准结构,加了export代表我们定义的这一部分对象导出去,只有这样讲其导出成一个模块,在其他地方才能import。

<script>
export default {
  
}
</script>

想定义vue当中的数据模型怎样写呢?之前是这样写,new一个Vue对象然后在里面声明属性data,然后在里面指定对象。

new Vue({
    el: "#app", //vue接管区域
    data:{
       addrs:["北京", "上海", "西安", "成都", "深圳"]
    },
    methods: {
        
    }
})

而现在不能指定对象,而是指定函数function,在函数里声明对象return回去,若还想定义函数直接在下面再定义一个属性methods,在其中定义一个个的方法:

<script>
export default {
//写data可以自动提示补全
  data: function () {//在js里有简写 简写为:data()也可以
    return {
      message: "Hello Vue",
    };
  },
};
</script>

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

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

相关文章

xss靶场练习level 1-10

level 1 1.搭建靶场后打开第一题 2.点击图片&#xff0c;页面跳转后提示“payload长度为&#xff1a;4”&#xff0c;观察url 存在传参 &#xff1f;nametest &#xff0c;且字符长度为4 3.查看网页源码&#xff0c;发现第一个点击图片跳转页面存在用户名提交&#xf…

wps及word通配匹配与正则匹配之异同

前言 今天在chatgpt上找找有什么比赛可以参加。下面是它给我的部分答案&#xff0c;我想将其制成文档裱起来&#xff0c;并突出比赛名方便日后查找。 这时理所当然地想到了查找替换功能&#xff0c;但是当我启用时却发现正则匹配居然没有了&#xff0c;现在只有通配匹配了。 …

c语言常见字符函数、内存函数(详讲)

前言&#xff1a; 其实在c语言当中是没有字符串这一概念的&#xff0c;不像c里面有string类型用来存放字符串。在c语言中我们只能把字符串放在字符串常量以及字符数组中。 1.常见字符串函数 1.1strlen size_t strlen ( const char * str );作用&#xff1a;用来求字符串中 …

MySQL之表的增删查改(1)

目录 一、插入数据 1、单行数据 全列插入 2、多行数据 指定列插入 3、插入否则更新 4、替换 二、读取 1、select列 2、where条件 3、结果排序 4、筛选分页结果 一、插入数据 首先创建一张表 mysql> CREATE TABLE students(-> id int unsigned primary key auto_incre…

背靠背 HVDC-MMC模块化多电平转换器输电系统-用于无源网络系统的电能质量调节MATLAB仿真模型

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; MATLAB2021版本 模型简介&#xff1a; MMC-HVDC模拟背靠背HVDC模块化多电平换流器&#xff08;MMC&#xff09;作为为整个电网供电的电能质量调节系统。因此&#xff0c;模块化多电平逆变器作为远程端转换器…

PyTorch 深度学习之用PyTorch实现线性回归Linear Regression with PyTorch(四)

0. Revision 1. PyTorch Fashion 2 Prepare dataset 广播机制 loss 3 Design model 文档 callable 4 Construct Loss and Optimizer 5 Training Cycle 总结 Test model

知识图谱:知识融合

知识融合简介 知识融合&#xff0c;即合并两个知识图谱(本体)&#xff0c;基本的问题都是研究怎样将来自多个来源的关于同一个实体或概念的描述信息融合起来。需要确认的是&#xff1a;等价实例、等价类/子类、等价属性/子属性。 一个例子如上图所示&#xff0c;图中不同颜色的…

【unity2023打包安卓工程】踩坑记录

这里写自定义目录标题 踩坑记录使用环境Unity的准备工作Windows10 SDKAndroidstudio第一个需要注意的地方第二个需要注意的地方第三个需要注意的地方第四个需要注意的地方第五个需要注意的地方 踩坑记录 踩了快一个星期的坑&#xff0c;希望能帮助到有需要的人 项目使用的是uni…

WorkPlus私有化部署IM即时通讯平台,构建高效安全的局域网办公环境

随着数字化转型的加速&#xff0c;政府机构与企业对高效、安全的即时通讯和协作工具的需求日益增长。企业微信和钉钉作为当前市场上较为常见的通讯工具&#xff0c;虽然在一定程度上满足了企业内部协作的需求&#xff0c;但仍存在一些问题&#xff0c;如数据安全性、私有化部署…

OpenCV实现图像的礼帽和黑帽

礼帽运算 黑帽运算 参数 cv.morphologyEx(img,op,kernel)参数&#xff1a; img : 要处理的图像op: 处理方式 代码实现 import numpy as np import cv2 as cv import matplotlib.pyplot as plt from pylab import mplmpl.rcParams[font.sans-serif] [SimHei]#读取图像img1 …

【Linux】系统编程基于阻塞队列生产者消费者模型(C++)

目录 【1】生产消费模型 【1.1】为何要使用生产者消费者模型 【1.2】生产者消费者模型优点 【2】基于阻塞队列的生产消费者模型 【2.1】生产消费模型打印模型 【2.2】生产消费模型计算公式模型 【2.3】生产消费模型计算公式加保存任务模型 【2.3】生产消费模型多生产多…

指针笔试题讲解

文章目录 题目答案与解析1、234、5、6、7、8、 题目 int main() {int a[5] { 1, 2, 3, 4, 5 };int *ptr (int *)(&a 1);printf( "%d,%d", *(a 1), *(ptr - 1));return 0; }//由于还没学习结构体&#xff0c;这里告知结构体的大小是20个字节 //由于还没学习结…

解答嵌入式和单片机的关系

嵌入式系统是一种特殊的计算机系统&#xff0c;用于特定任务或功能。而单片机则是嵌入式系统的核心部件之一&#xff0c;是一种在单个芯片上集成了处理器、内存、输入输出接口等功能的微控制器。刚刚好我这里有一套单片机保姆式教学&#xff0c;里面有编程教学、问题讲解、语言…

试图一文彻底讲清 “精准测试”

在软件测试中&#xff0c;我们常常碰到两个基本问题&#xff08;困难&#xff09;&#xff1a; 很难保障无漏测&#xff1a;我们做了大量测试&#xff0c;但不清楚测得怎样&#xff0c;对软件上线后会不会出问题&#xff0c;没有信心&#xff1b; 选择待执行的测试用例&#…

百胜中国,全面进击

“未来三年&#xff0c;每年净增约1800家新店。” 美股研究社关注到&#xff0c;2023年投资者日活动上&#xff0c;百胜中国根据2024至2026年的发展规划&#xff0c;启动了集团RGM2.0战略。 三年时间&#xff0c;门店数要达到20000家&#xff0c;平均每年新增门店约1800家&am…

【【萌新的SOC大学习之hello_world】】

萌新的SOC大学习之hello_world zynq本次hello world 实验需要 PS-PL Configuration 页面能够配置 PS-PL 接口&#xff0c;包括 AXI、HP 和 ACP 总线接口。 Peripheral IO Pins 页面可以为不同的 I/O 外设选择 MIO/EMIO 配置。 MIO Configuration 页面可以为不同的 I/O 外设具…

蓝牙核心规范(V5.4)11.2-LE Audio 笔记之LE Auido架构

专栏汇总网址&#xff1a;蓝牙篇之蓝牙核心规范学习笔记&#xff08;V5.4&#xff09;汇总_蓝牙核心规范中文版_心跳包的博客-CSDN博客 爬虫网站无德&#xff0c;任何非CSDN看到的这篇文章都是盗版网站&#xff0c;你也看不全。认准原始网址。&#xff01;&#xff01;&#x…

event.stopPropagation()

现在有如下 当点击子按钮的时候会触发子事件&#xff0c;同时也会触发父事件&#xff0c; 如何阻止呢 handleDownload(event) { event.stopPropagation(); 。。。。。。。。。。 },

积跬步致千里 || 可视化动图展示

可视化动图展示 目前只能在 jupyter notebook 中测试成功 %matplotlib notebook import numpy as np import matplotlib.pyplot as plt import timen 500 data np.random.normal(0,1,n)fig plt.figure() ax fig.add_subplot(111)fig.show() fig.canvas.draw()for i in ra…

【新版】系统架构设计师 - 案例分析 - 信息安全

个人总结&#xff0c;仅供参考&#xff0c;欢迎加好友一起讨论 文章目录 架构 - 案例分析 - 信息安全安全架构安全模型分类BLP模型Biba模型Chinese Wall模型 信息安全整体架构设计WPDRRC模型各模型安全防范功能 网络安全体系架构设计开放系统互联安全体系结构安全服务与安全机制…