西安嘉瑞德网络公司
当前位置:网站首页 > 建站百科 > 网络公司做网站注重前后分离 返回列表

网络公司做网站注重前后分离

发布时间:2019-01-10来源:admin
网络公司做网站注重前后分离,什么是前后端分离,传统开发模式相信很多做过Web开发童鞋应该都会经历这样一种开发模式,利用后端语言提供的模版引擎编写HTML/XML页面,比如:

PHP 开发有 Smarty模板引擎

Java web工程有jsp页面

Python 各个Web框架都有各自的模板引擎

NodeJS 的express你懂得

都有一个共同的特点,服务器端后台语言生成解析后的HTML/XML格式返回给客户端,例如浏览器端访问直接返回解析好的HTML,浏览器直接就解释执行。

在传统的像ASP,JSP和PHP等开发模式中,前端是处在一个混沌的状态中,可以说是没有独立的“人格”可言。

前端负责切图和编写静态页面模板,后端将数据渲染到前端提供的页面模板中,最后将页面渲染到浏览器展示。

这个过程中,前端只提供页面模板或者写一些JavaScript脚本,有的甚至JS脚本都是后端来写,前端的作用只局限于切图和样式模板文件,这种角色就是传说中的“切图仔”。

前后端分离,不只是简单的代码的分离。

首先是要架构上分离解耦,逐渐摆脱前后端在架构上的依赖,前后端各司其职,分开部署在不同的服务器上,通过RESTful接口传递数据。减轻后端服务器的压力,后端服务器不再负责页面渲染,只负责输入数据,吞吐量提升了好几倍。

其次是逻辑分离,不分离的时候,对于业务代码的界限很不明确,业务逻辑基本都放在后端,分离之后,前端也承担了一部分不该后端来写的业务逻辑,数据处理更加清晰。

最后是系统分离,同一个后端系统,可以将同样的接口数据提供给PC端、Mobile端和Native端等不同的前端终端,不需要为每一种终端提供一套接口。同样,对于前端应用来说,可以更方便的调用多个后端服务器的接口,处理和展示多个系统间的数据。

为什么要前后端分离
前后端分离,让软件开发的流程更加清晰,解决了开发阶段的痛点。

从前,前端不止要学习后端的模板渲染语法,还要配置后端的开发环境,并不断同步后端的代码,这对于前端来说是非常痛苦的。

而现在,前端有自己的服务器,不需要再依靠后端服务器来支持项目运行,如果在开发阶段,还可以使用mock数据(要先和后端确定接口数据结构),摆脱对后端接口的依赖,这样极大的提高了开发效率,系统分工也更加明确。

前后端分离后,需要考虑哪些事情
分离后的前端,不再是一个简单的HTML文件,已经是一个独立的应用系统。除了要考虑页面的数据渲染展示,还要用工程化的思想来考虑前端的架构,前后端的交互和数据安全等事情。

架构
**前端应用部署在Nodejs、Nginx或者Nodejs和Nginx组合的服务器上,通过反向代理转发页面请求到后端服务器,相当于在传统的流程中加了Nodejs这一层。**当然,也可以用Nodejs服务器来承担一部分负载均衡的工作,业务逻辑也可以放在Nodejs这一层来处理,例如:通过判断请求是来自 PC 还是 APP ,将请求发到不同的后端服务器

Nodejs的架构中,分层如下

让我们来回想一下软件开发流程中的几个关键环节:

(1)产品经理提需求,画原型;

(2)UI设计师根据原型出设计图;

(3)测试团队根据产品原型编写测试用例,制定测试计划;

(4)架构师根据原型编写API文档;

(5)前后端工程师基于API文档完成业务开发;

(6)测试、改BUG、发布。

API文档环节直接关系到了前端和后端两个开发团队,也是整个软件开发流程中耗时最大的环节。

RESTful接口交互
前后端分离之后,更多的是采用 RESTful 风格的接口与后端进行数据交互。(如果你们的项目还在使用静态的API文档,比如word文档,那你们必定经历着巨大的痛苦)

REST是“呈现状态转移(REpresentational State Transfer)”的缩写,一种API的架构风格,在客户端和服务端之间通过呈现状态的转移来驱动应用状态的演进。

在 REST 样式的 Web 服务中,每个资源都有一个地址。资源本身都是方法调用的目标,方法列表对所有资源都是一样的。这些方法都是标准方法,包括 HTTP GET、POST、PUT、DELETE,还可能包括 HEADER 和 OPTIONS。
RESTful的API设计,使得后端通过接口向前端传递数据,数据的格式通常是JSON这种通用的格式。对前端来说,只要后端返回过来的是RESTful的数据就行,不管后端是用Java写,还是用python或PHP,拜托对后端的依赖,做到前端系统的独立。

REST服务的调试:Postman 和 Insomnia

使用模板引擎
前后端分离之后,前端工程师需要将通过API获取的数据呈现到页面上,虽然也可以通过jQuery对页面一个一个赋值,但是这种效率太低了,或者也可通过在JavaScript中拼接HTML,但是这种方式太难维护HTML代码了,也很难阅读。因此最好的方式就是使用模板引擎。

前端的模板引擎跟后端模板引擎很相似,比如JSP或cshtml(razor),他们的语法都非常相似,他们所实现的功能也几乎一样:将数据绑定到HTML模板。VueJs和react都可以充当这样的模板引擎。我们最终没有选用react而是选用了VueJs的原因只有一个,那就是VueJs是真正的响应式,而react改变model之后需要手工调用setState才会更新UI,这是完全无法忍受的。

因为这个原因,我们只能选择VueJS作为模板引擎。

工程化构建
Nodejs不止可以用来做前端服务器,在开发阶段,它也能发挥很大的作用。
前端生态的发展,是围绕着Nodejs进行的。用npm来管理项目依赖,可以很好的维护和运行在Nodejs环境上。
打包工具grunt、gulp、webpack和rollup等,都是运行在nodejs上,再结合语法编译、打包部署等插件,将应用输入成一个完整的应用。
如果你使用了Angular、React或Vue框架,或者你使用浏览器暂时还不兼容的ES6语法,还需要在应用打包前用babel将语法编译成浏览器可识别的ES5的语法。

SPA
SPA是单页Web应用(single page web application,SPA)的简写,就是只有一张Web页面的应用,是加载单个HTML 页面并在用户与应用程序交互时动态更新该页面的Web应用程序。

像Angular、React或Vue就是为了SPA而设计的,结合前端路由库(react-router、vue-router)和状态热存储(redux、vuex)等,可以开发出一个媲美Native APP的Web APP,用户体验得到了很大的提升。

当然,SPA也不是完美的,也不是适合所有的web应用,需要结合项目和场景来选择。

SPA有如下缺点:

初次加载耗时增加。可以通过代码拆分、懒加载来提升性能,减少初次加载耗时。

SEO不友好,现在可以通过 Prerender 或 Server render 来解决一部分。

页面的前进和后端需要开发者自己写,不过现在一些路由库已经帮助我们基本解决了。

对开发者要求高,由于做SPA需要了解一整套技术栈,所以,要考虑后期是否有合适的人选进行维护。

mock(模拟数据)
前后端分离框架中的API mock思路
想要实现真正的前后端分离,那就必须得用好API mock(模拟数据)。使用mock数据的好处有两个:

前端开发人员可以基于API文档生成mock数据,在后端开发人员将API发布出来之前就可以完成整个业务流程的开发;

使用mock数据能够更低成本、更快速地,通过直接修改mock数据的方式,调试页面样式、调试页面功能。

全局的mock开关
为什么要设置这样一个全局的mock开关呢?主要基于以下两点考虑:

设置全局的mock开关之后就不再需要针对每一个页面设置mock开关,更容易维护,避免项目中有多个mock开关而难以统一开关状态;

如果发布时忘记将mock开关给关掉,那么发布之后一运行发布者就会发现mock开关忘了关,然后可以快速修复之后再重新发布,从而避免不小心将正式服更新为mock数据源。

正是由于以上两点考虑,我们的全局mock开关可以帮助程序开发者和发布者更不容易犯错。

解决请求问题
前后端分离后,我们只需要Server端告诉我们Api URL即可,那么这会产生一个问题:Ajax跨域。这里就不能使用一般的跨域解决方法去解决,比如jsonp,iframe信使等等,因为我们还有POST请求。

于是Http Proxy类工具就有用了,比如我就会在BrowserSync加入中间件判断每一个请求,如果是/api前缀就会代理到API Server端,API Server端收到数据后再返回给BrowserSync,BrowserSync再返回给浏览器端。这样就解决跨域请求的问题

生产环境有两种部署,一种是放到后台项目里,这就没啥说的,另外一种就是前后端分开部署,那就在前端WebServer处理端写点转发规则就好,如Nginx,Apache都支持。

静态资源路径问题
如果你的项目有上传资源功能,那自然就会产生用户资源,那前后端分离后,如何来处理这个问题呢?得先看模式。

资源与后台项目放一起,后台处理完后需要返回前台一个相对路径,如果资源时一台单独的服务器,那就需要返回资源的绝对URL即可。

会话
Web项目最头疼的就是无状态导致会话问题,传统的Web项目都使用Session/Cookie,但在前后端分离,集群部署模式下这Session明显缺陷太多。token方式已经是当前Web端解决会话的主流,并且有很多开源好用的token生成管理程序,基本上拿来就能用。

做网站公众平台每天为您分享原创Web开发资讯,开发经验,为您的技能充电。期待您的关注与分享,同时欢迎您留言,让我们每天进步一点点!
联系方式:18066528545   029-89298792

阅读过此文章的读者,还阅读过下面的文章

  • 在西安是选择建设网站好还是小程序好一些

    关于建设网站还是小程序这个问题,要从很多方面去考虑。两者之间现如今都有各自的优劣,如果预算充足的话是比较推荐两个都建设的,要是只能选择其中之一的话,还是需要从多个方面进行考虑。

    首先是网站。现如今网站更多的是起到一个展示、宣传的作用,能够让更多的用户了解企业和产品。随着技术的不断升级,现如今也可以通过网站和用户进行沟通,并且像是在线支付,会员登录,线上预约,相关查询等很多功能都可以通过网站来完成。并且网站的宣传面更广,成本相对会更低,并且现如今很多用户寻找信息还是依靠网站来完成的。并且对于网站来说只需要有浏览器就可以进行访问,对于一些外贸企业来说想要进行外国的推广很大程度上都是需要网站的。

    而小程序因为其无需下载,打开就能使用的特点,对于很多用户来说也是具有很大吸引力的。并且小程序的用户群体相对来说会更多一些,在日常生活中的使用更加的频繁,并且可以通过朋友圈等方式进行宣传。并且使用方式相较于网站来说会更加的简单一些,可以搜索和扫码进入,对于用户的体验来说也是有很大帮助的。虽然的使用方式有一定的局限性,只能通过相关的软件才能够打开,但是其使用比起网站来说相对会更加的方便。

    对于网站来说更适合一些选哟进行产品展示,企业宣传,新闻展示的企业,而小程序更多的是适合一些特定的服务行业,或者是电商类的行业。
  • 西安网站加载速度慢的原因有哪些

    对于网站来说,加载速度的快慢对于用户来说影响是非常巨大的。对于用户来说如果网站的反应速度太慢,可能会导致用户离开网站,这对于想要通过网站进行宣传和推广的企业来说是非常不利的。

    对于网站来说影响网站加载速度的原因有很多。像是服务器不稳定、访问量过多,网站中的图片或视频资源过大,代码中有很多无用的功能或不必要的注释,或者是有链接外部的信息或资源等,这些都有可能会导致网站的加载速度过慢。

    想要提高网站的加载速度的方式有很多,像是更换性能更好的服务器,对于网站中使用到的图片、视频资源进行优化减少资源的大小,对于代码中无用的代码和注释进行删除,选择将外部资源下载到本地进行使用,或者是使用CDN加速这些方式。

    当然了影响网站加载速度的原因还有很多,像是网站中使用了太多的JS特效,或者是使用太多的内联型JS都有可能会导致影响网站的加载速度。对于这种情况最好是找专业的网站公司进行解决,毕竟有的JS代码可能和网站的功能等方面有很大的关系。并且现如今很多网站都是采用前后端分离来做的,JS代码的数量往往会很多,尽量使用其他工具将JS代码进行压缩,减少文件的大小。

    想要解决网站加载速度慢的方法有很多,其中最关键的就是要找到影响网站加载慢的原因,当然了一般情况下最好是寻找专业的网站公司来进行网站的维护,毕竟有的原因如果不是专业人员的话是很难看出问题的。

  • 在西安建设网站中都应该有些什么功能呢

    建设网站对于一般的公司来说更多是为了能够展示企业的形象和产品,让用户更好的了解产品的详情,以更好的进行推广和营销。当然了随着网站的功能不断地增多,网站也不在只是单纯的展示形象和产品,对于一些比较特殊的功能也可以通过网站来实现。

    像是一些在线预约功能,线上报名,会员登录,信息查询,购买支付等,现如今很多的网站已经不再只是单纯的进行产品和企业形象的展示了,大多数都会有一些特殊一点的功能方便用户使用。并且有的公司也会用网站来为企业的软件进行一个引流的行为,毕竟很多用户都是在网站寻找相关信息的,用网站来引流的话会更具有优势。很多情况下为了能够更好的服务用户,有的网站也会有会员或者登录功能,并且还会有支付的功能,以方便用户进行购买。

    现如今网站建设很多情况下都不在只是普通的展示网站,其中或多或少都会有一些特殊的功能。对于一些定制开发的网站来说,很多情况下都是会具有一定的特殊功能。现如今建设网站如果只是单纯的进行展示的话是很难吸引用户的,更多都是需要一些特殊的功能,来吸引用户或者更好的服务用户。

  • 在西安建设网站时如何让网站能够为用户留下深刻的印象

    对于企业来说建设网站的主要目的,就是为了能够吸引更多的用户,让很多用户能够通过网站更好的了解企业。要想让用户能够通过网站来了解企业,提高企业的知名度,就要让网站能够都为用户留下一个深刻的印象。

    想要让网站能够在用户心里留下深刻印象的方式有很多,首先就是网站的设计了。对于网站来说一个特殊的设计很大程度上让用户产生一定的兴趣,很容易在用户心里留下深刻的印象。当然无论多么特殊的设计,都要明确网站的导航,保证用户在使用网站时能够快速的找到网站的导航,否则的话可能会降低用户对于网站和企业的好感。在进行设计应该和企业的整体形象保证一致,可以使用一些符合企业的颜色、字体、图片等,提高用户对于企业的印象。同时也可以使用企业的产品等图片,来装饰网页的背景或效果。对于提高用户印象来说有着很大的帮助。

    再就是一些特殊的功能或者是交互。对于用户来说,他们会更喜欢一些形象的东西,像是跟随页面滚动而变化的图片,或者是一些更加浏览而推荐的产品等,这些都是能够很大程度上提高用户的印象的。特别是一些特殊的交互效果,对于用户来说这种交互所带来的特殊变化是非常容易提高用户印象的。

    对于用户来说浏览网站的主要目的就是浏览其中的产品和内容,因此内容的好坏对于提高用户印象来说是有很大帮助的。很多情况下只要网站的内容足够吸引人,就算没有优秀的设计,特殊功能,炫酷的效果也依然能够在用户心里留下深刻的印象。

    除了网站的内容非常重要之外,网站的设计、功能、效果等也是很关键的,毕竟这些也是很多用户愿意继续浏览网站的关键。

  • 在西安建设一个网站需要准备哪些东西

    现如今网站还是很多企业进行宣传和推广的主要方式,特别是对于一些外贸企业来说,网站可以说是进行推广的必备品。并且随着网站功能的不断增多,很多网站也不在只是单纯的进行展示和推广,像是网上预约,线上交易,在线咨询等。对于企业来说建设网站也不在只是单纯的进行产品展示了,那么在进行网站建设之前都应该准备什么东西呢?

    首先就是网站的域名和服务器了,这两个对于网站来说是非常重要的。域名就是网站的地址,选择一个合适的域名对于网站来说也是很重要的一点,能够更有利于用户记忆、访问。其次就是网站的服务器了,服务器对于网站来说是很关键的,服务器的选择很大程度上会影响网站的很多方面,因此在选择服务器时最好进行多方面的考虑。如果是使用国内的服务器的话还需要进行备案。

    再就是网站的内容了。像是网站所需要的公司logo、企业详情、展示内容、图片视频等,这些最好是提前做好准备,一般在进行网站建设时都会需要这些来填充网站,方便查看网站的整体样式等。

    至于剩下的就是找到一个专业的网站建设公司,进行网站的建设了,如果需要其他方面的东西的话,网站建设公司也会进行通知的。当然了也可以直接寻找专业的网站建设公司,他们在建设网站时,也会告诉用户所需要准备那些东西。

  • 在西安建设一个网站具体需要多长的时间

    大部分网站建设很难给出一个准确的时间的,毕竟影响网站建设总时间的原因有很多,像是临时修改网站功能,或者是对设计不满意需要修改页面样式等,都会影响网站建设所需要的时间。如果没有其他因素的干扰的话,建设一个网站的时间其实并不会特别长,如果是模板网站的话所需要的时间会更短。

    一般的模板网站都是提前建设完成的网站,只需要将网站中的内容进行更换就可以了,一般情况下一到两天就能够完成。对于模板网站来说,大部分花费的时间会是在网站的备案和样式修改上。因为模板网站的功能等多个方面都是齐全的,只是网站的样式很多情况下可能会让用户感觉不太好,需要进行一定修改这种情况下模板网站建设的时间就非常不确定了,毕竟想要将模板网站改成合适的样子是非常困难的。

    而定制网站建设的时间基本上都是非常长的,特别是一些页面数量多,功能复杂的网站,所需要的时间就更长的。首先定制网站花费时间最长的就是网站的开发,对于一般的网站来说,因为网站整体的页面数量不多,功能相对来说比较简单,所需要的全部时间最多就是一个月左右,当然要是用户对于网站的某些功能有不满意的需要进行调整和修改的话,需要的时间会长一些。对于功能复杂页面众多的网站来说,花费的时间可能需要好两三个月,当然了要是有丰富开发经验和团队的话,所需要的时间相对来说会更短一些。

    一般情况下建设网站大致分为模板和定制两种,模板网站的话基本上没有太多要求的话,大概一到两天就能完成,如果需要进行调整的话可能需要稍微长一点的时间。而定制网站的话基本上都是一个月左右了,要是功能多,要求高的话可能需要更长的时间了。

网站地图 Copyright © 2015 西安嘉瑞德网络科技有限公司 陕ICP备2023001199号