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

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

发布时间: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

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

  • 企业网站改版制作需要注意那些问题
    如今大小的公司都在建设自己公司的官网,公司官网使用的使用久了,避免不了存在诸多的问题,或者网站原来的版面不是很美观,需要重新设计制作一个网站,面对这些需改版重构的企业网站我们究竟该怎么做才算正确呢?
    首先要看网站是需要保留原来网站数据的情况下升级网站版面设计还是需要重新制作一个新网站,如果是重新制作一个新网站,这个简单,就不需要过多的考虑原来网站数据,就当一个新网站建设制作即可,但是如果需保留原来网站数据,升级网站功能和版面设计的这种网站重构改版情况,一定要谨慎对待,原来网站数据肯定是在各大搜索引擎有收录存在,为了保证收录链接能正常有效果打开,建议保留原来网站数据库,重构网站管理后台和前端网页设计界面,这样既能保证网站功能升级和网页界面重构的目的,有能保证原有网站收录链接在搜索引擎的有效性,唯一的缺点是网站改版的工作量,大费用太高,所以建议网站改版重构的用户谨慎对待公司网站改版。
  • 西安网站建设过程中如何让视频做到自动播放

    在制作网站的过程中有时为了让网站更好的进行宣传等,会在网站中添加视频介绍来吸引用户,其中有些网站的视频是进入页面后自动播放,有的是需要用户点击才能播放。那么为什么会出现着两种情况呢?

    出现这种情况的原因主要在于浏览器。现在在代码上让视频自动播放不难,但是浏览器为了让用户有更好的体验是不允许自动播放视频的。当然也不是完全不然播放,现如今大部分自动播放视频的网站都是没有视频的声音的,在浏览器看来,没有声音的视频和普通的动图是一样的,不会影响用户的体验,所以浏览器允许播放没有声音的视频。或者用户在网站进行强交互后浏览器才会允许视频进行播放,在浏览器看来,用户一旦进行了强交互,它就会认为用户对于网站的内容感兴趣,从容允许播放视频,展示更好的效果。

    当然还有一些网站的视频不仅是自动播放,而且还带有视频的声音,这种也是涉及到了浏览器的另一个规则,正常的网站是无法做到这种效果的。想要让视频在一般的网站上进行自动播放要么就放弃声音,要么让用户对网站进行强交互着两种方式。当然也还有其他方式来实现,当也是和其他两种一样有有的的局限性,并且实现起来也不容易。
  • 西安网站公司对于网站安全问题的处理方式

    随着网络的高速发展,网站已经成为企业吸引用户和宣传的新方法了。随着越来越的人们通过互联网来获取信息,很多不同的行业也开始通过网站来提高自身的影响力,宣传或推广产品等。随着越来越不同行业通过网站来推广或吸引用户,网站的安全问题也逐渐成为企业和用户所关注的方面。造成网站安全问题的原因有很多,常见的就是对代码进行修改,或者在数据传输过程中进行修改或拦截等。

    对于网站的安全问题很难有人能够保证不出问题,最好是对网站的代码和数据库随时进行备份,当网站出现代码问题的时候,可以快速的替换调有问题的代码。并且如果是服务器出现问题,或找不到问题所在了,也可以重新部署网站,查看具体问题所在。

    当然服务器的安全也是关键。定期更新服务器的操作系统,配置防火墙,限制不必要的端口和服务,防止其他的外部攻击。对于服务器上的代码也要随时进行备份,保证发生安全问题的时候可以通过源代码进行恢复等操纵。

    当然对于网站在数据传输过程中所发生的安全问题,一般的解决方式就是使用HTTPS协议,保证网站在数据传输过程中不会发生数据泄露或修改的问题。

    随着互联网的快速发展,网络安全的问题越来越关键。想要避免网站的安全问题是很难的,只有随时进行维护和备份,对服务器随时进行扫描,尽可能保证网站的安全不会出现问题。
  • 网站建设制作价格高的原因详解

    网站建设制作价格高的原因详解,现在是市场经济,做网站的价格不同的公司报价都是不一样的,那么这个价格是根据什么来的呢,同样的公司网站建设,同样的要求,不同的公司他们有的报价两千,有的报价五千,有的报价一万多,价格差距这么大,什么原因造成的呢,其实出现这样的问题,与网站制作公司的运营模式有很大的区别的,为什么这么说,有的网站制作公司投放广告吸引客户,寻找潜在的客户,有的公司通过免费的广告寻找客户的,有的公司则是通过客户介绍客户来做的,面对这些不同的获客方式,给公司带来的成本和效益肯定是有很大的区别的,接下来我们来听听西安网站制作公司的技术是怎么说的。

    第一凡是报价上万的网站制作公司,这些公司要说规模有多大,也不一定很大,但是他们往往是通过投放的一些高价位的广告来获客的,作为客户来说,这个最终的广告费用肯定是需要转嫁给网站制作的用户身上去的,这是一定的。所以网站制作得费用就高了,

    第二有的网站制作公司是根据整个网站制作市场的平均价位来报价的,这就造成了网站制作的成本与网站报价之间有差距了,根据市场报价,与网站制作公司的成本相比较而言,肯定网站制作的成本就很高,往往报价要比成本高很多,这个时候,作为网站制作公司维护的是市场的价格,但是要说网站制作成本有多少,在小编看来没有多高,

    第三有些网站制作公司以所谓的高质量,网站设计的有多美观这些画饼的方式来给客户讲,等到网站真正做出来的时候,也就那样了,没有多大变化,跟两千多做出来的网站差距其实并不是很大,其实大部分网站制作公司都是这样的方式在运营。

    其实不管其他的网站制作公司报价有多少,或者报价有多低,作为自己的公司成本你应该很清楚,之需要按照自己的成本去报价即可,如果你考虑那么多,考虑整个市场的报价,其实现在市场行情不好,好多公司都有意的在打价格战,这个时候就需要注意了,一定要坚守自己的价格系统,不然你很容易被市场带偏。

  • 企业网站建设有什么重点和难点的地方吗?

    企业网站建设有什么重点和难点的地方吗?企业网站建设的重点和难点当然是有的,就看你对客户的需求以及对网站制作能熟悉到什么程度了,如果你在跟客户沟通的过程中,非常的了解客户的需求,并且能够将客户的需求通过网站设计的形式和展现和传递出来的话,那这个时候,网站建设基本上没有什么难度了,作为企业网站建设的难度就是网页设计这个层面的东西了,因为这个层面的东西太过于主观,让好多的技术和网页设计人员不好把控,这个时候就需要有经验的网站建设人员将网站的需求来展现和传递出来的,并且需要结合网站制作人员自身的理解的基础上再去对网页进行设计,所以这就变的有点难了,接下来我们来听听西安网站制作人员是怎么看待这个问题的。

    第一网站制作的难度一定是网站设计层面这块,并且网站设计的好坏一定是对客户的要求的理解的基础上进行展示和制作的,从而这不仅仅网站制作业务人员的要求高了,也对网站设计的人员有所要求的,一般不熟悉网页设计或者对网站设计了解不够深入了,是很难做到全面把控客户需求,有可能对这整个网站设计跑偏也是有可能的。这个时候在进行网页设计多多与客户沟通,那块不清楚先沟通,在去设计比较好。

    第二企业网站制作的难点一定是网站功能的实现,好多人感觉不就是一个网站管理后台吗,那个制作起来有什么困难的,不是有成成熟的系统吗,是的,你说的都没错,难点就是如何把整个网站后台制作的很完美,有方便一些默认用户的操作和使用,后台操作容易上手,另外网站后台容易操作是一个方面,另外一个方面就是网站的安全性了,如果能开发出一个高安全的网站后台这样的网站肯定是非常的值钱,但是现在的网站制作公司估计是很难做到这点的,多半使用的网站后台都是一些开源的很少有公司自己去开发的,所以这也是为什么网站网站管理后台制作是难点的原因。

  • 西安网站公司如何进行移动端网站的优化

    随着互联网的不断发展,人们逐渐开始通过网络获取更多的信息。手机的出现让人们获取信息的方式不在单单依靠电脑。现在手机已经成为人们日常生活中最常用的工具之一了,很多企业为了能够更好的吸引用户,开始进行移动端的网站建设。移动端网站的建设基本上和普通的电脑网站没有什么区别,并且现如今很多网站都是通过响应式设计来同时满足网站的手机端和电脑端建设。

    因为手机网站的建设和电脑网站本质上没有太大的区别,手机网站的优化其实也和电脑端没有太大的区别。手机端中往往有可能会出现一些电脑端所没有的问题,例如:兼容性等问题。大部分优化和电脑端一样,优化图片、视频等资源的大小,保证页面的整洁,避免复杂的排版,网站关键词的优化,定期更新网站的内容或文章。这些基本方法对于手机端网站来说也是一样管用的。

    当然一些响应式设计的网站,虽然在开发和维护时会有很大的优势,但是在优化时就要要注意了。因为使用的是同一个数据库或内容,在优化时有可能会影响到另一端的网站。特别是响应式网站中图片资源的大小、清晰度等问题这些都有可能会影响到另一端网站的效果。

    手机端的优化基本上和电脑端是一样的,只是对于一些特殊的网站建设,可能会没有那么好处理。如果想要长期的发展,最好找专业的网站公司进行网站的优化。

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