学习中——项目开发总结

学习中——项目开发总结,第1张

最近几天,本人进行了第一次项目开发并负责前端工作,其中遇到的几个常见问题,也得到了同学和博客的各种途径帮忙解决,截止目前出现的配置及开发问题已得到全部解决。于是利用空闲时间,写一篇文章来记录本次的问题总结。

简单来说前后端分离就是:

后端:负责处理、存储数据前端:负责显示数据

前后端分离的优点与缺点:

优点:

对于中大型项目,能够提升开发效率,提高交互和UI效果,缩短开发周期。前端能够处理一大部分验证和交互逻辑,从而减少与服务器间的交互次数,减小服务器处理压力,并且页面是由浏览器渲染生成。前端具有强大的组件库和处理工具,项目更容易跨平台。降低维护成本。接口和前端组件能够复用。

缺点:

需要更多的沟通成本。未进行前后端分离时,由后端同学完成整个项目的开发,前后端分离时需要和前端同学进行接口的沟通和联调。对于小、交互性要求不高的项目,进行前后端分离反而效率较低,当然全栈开发除外。部署流程更复杂。前后端分离一般是两个项目环境,需要投入更多硬件和运维。

前端追求的是:页面表现,速度流畅,兼容性,用户体验等等 后端追求的是:三高(高并发,高可用,高性能),安全,存储,业务等等 从而让前后端更加专注自己的业务领域!

前端开发方法:

     脚手架(CLI):脚手架的意思是帮你快速开始一个vue的项目,也就是给你一套vue的结构,包含基础的依赖库,只需要 npm install就可以安装,让我们不需要为了编辑或者一些其他事情浪费时间  总而言之,就是快速搭建项目的,让我们可以早点去写代码。Vue 官网提供了相应的CLI工具,帮助我们快速搭建项目。

   vue文件就是一个组件,从功能层面来说组件应该是一个可以复用的功能。组件的特点是当一个组件设计完毕后,后续需要类似的功能,只需要简单的引用组件,然后做些定制化的配置即可。个人理解组件可以划分两大类,第一类是基础组件/原子组件,这类组件是页面的基础构成不封,本身不可或者不宜再划分为子组件,例如Button,Table,这类都算是基础组件,IView基本上是一个基础组件库。第二类是复合组件/框架性组件,这类组件是由基本组件经过合理的布局聚合在一起构成的,它拥有许多默认的配置,从而在类似的页面视图页面能够极大的减小重复代码。
 

前后端交互:

 保证前后端开发功能的正确性,除了详细的需求文档和原型设计外,重要的就是接口文档!

 路由:Vue Router

前端项目部署:

前后端分离的项目一般有两种部署方式。

第一种是通过build命令将项目打包成静态资源,然后copy静态资源到后端项目的静态目前下,然后通过tomcat服务器进行启动即可,这种方式不推荐。

第二种方式是前后端分别部署,前端项目可以使用node 启动一个服务,运行在Node环境中,后端部署在tomcat中,这种方式方便前后端各自水平扩展。
 

跨域问题:

如果域名和端口都相同但是请求路径不同,不属于跨域。

 

其中总结了为什么会出现跨域问题:

1 浏览器的同源策略引起跨域问题

2 跨域不一定会有跨域问题。

因为跨域问题是浏览器对于ajax请求的一种安全限制:一个页面发起的ajax请求,只能是与当前页同域名的路径,这能有效的阻止跨站攻击。

因此:跨域问题 是针对ajax的一种限制。 通过跨域限制,有效阻止跨站攻击

但是这却给我们的开发带来了不便,而且在实际生产环境中,肯定会有很多台服务器之间交互,地址和端口都可能不同,怎么办?

解决跨域问题的方案如下:

目前比较常用的跨域解决方案有3种

JsonpnginxCORS

在这里我们采用CORS的跨域方案。

那么,什么是cors呢?

CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。

它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。

CORS需要浏览器和服务器同时支持。目前,所有浏览器都支持该功能,IE浏览器不能低于IE10。

浏览器端:

目前,所有浏览器都支持该功能(IE10以下不行)。整个CORS通信过程,都是浏览器自动完成,不需要用户参与。

服务端:

一般通过过滤器完成功能。

cors原理有点复杂,了解两种解决方案,简单请求、特殊请求即可。

当浏览器发现发现的ajax请求是简单请求时,会在请求头中携带一个字段:Origin.

Origin中会指出当前请求属于哪个域(协议+域名+端口)。服务会根据这个值决定是否允许其跨域。

如果服务器允许跨域,需要在返回的响应头中携带下面信息:

Access-Control-Allow-Origin: http://localhost:8090
Access-Control-Allow-Credentials: true
Content-Type: text/html; charset=utf-8

虽然原理比较复杂,但

浏览器端都有浏览器自动完成,我们无需 *** 心服务端可以通过拦截器统一实现,不必每次都去进行跨域判定的编写。

由此进行总结:

 什么是跨域 为什么会有跨越问题 跨域解决方案 jsonp:最早的解决方案,利用script标签(不受限)可以跨域的原理实现。 nginx:反向代理服务器,通过域名访问项目;搭建静态资源服务器cors:规范化的跨域请求解决方案,安全可靠。是w3c组织的标准   cors是什么 cors的解决方案:如何实现? cors原理总结:

简单请求

只能是head、get、post请求头信息不超过5种数据只需要发送一次请求

复杂请求

发送一次或者两次请求put、delete等请求第一次请求是预检请求,判断服务器是否会处理该请求,第二次请求是预检通过之后,向服务器发送真正的请求

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1319708.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-11
下一篇 2022-06-11

发表评论

登录后才能评论

评论列表(0条)

保存