nodejs怎么实现前后端分离开发实例

nodejs怎么实现前后端分离开发实例,第1张

如果使用webform这种形式的开发,必须使用服务器控件,控件都是runat=server。这样的形式就是前后台不分离的

使用htmajaxjquery前端和js框架,后台使用一般处理程序或者mvc的形式就可以做到,前端的处理和后台的处理无太大的关系

因为SEO属于后期管理,而搜索引擎不仅仅是从文章或者是关键词入手的,它对网站的结构和代码设置也是有很严格一些要求

而这些都是前端开发时候要注意的如果站长没有和前端进行良好的沟通没有按照蜘蛛的要求来进行设置,那么后期的SEO工作就是比较麻烦的

如果想改的话对网站的影响很大,不改的话效果肯定不好所以前后端不分离可以让网站更好的符合用户体验度以及搜索引擎体验度两种体验,也能更好的节约后期的推广成本

不分离。
前后端分离实际上是技术的分离而非团队的分离,如果要真正实现前后端团队分离的协作模式,或者反过来要想实现前后端技术分离的分布式架构,都要首先考虑组织的沟通结构设计,是比较复杂的,不分离会比较简单。
若需要搜索引擎带来流量和需要App和后端交互,则不分离。

因为前后端分离有很多优点。
1、为优质产品打造精益团队,通过将开发团队前后端分离化,让前后端工程师只需要专注于前端或后端的开发工作,是的前后端工程师实现自治,培养其独特的技术特性,然后构建出一个全栈式的精益开发团队。2、提升开发效率,前后端分离以后,可以实现前后端代码的解耦,只要前后端沟通约定好应用所需接口以及接口参数,便可以开始并行开发,无需等待对方的开发工作结束。与此同时,即使需求发生变更,只要接口与数据格式不变,后端开发人员就不需要修改代码,只要前端进行变动即可。如此一来整个应用的开发效率必然会有质的提升。3、完美应对复杂多变的前端需求,如果开发团队能完成前后端分离的转型,打造优秀的前后端团队,开发独立化,让开发人员做到专注专精,开发能力必然会有所提升,能够完美应对各种复杂多变的前端需求。4、增强代码可维护性,前后端分离后,应用的代码不再是前后端混合,只有在运行期才会有调用依赖关系。应用代码将会变得整洁清晰,不论是代码阅读还是代码维护都会比以前轻松。

1、先理清业务流程

2、定义前后端开发的接口规范。比如json的格式,url的格式

3、定义接口文档,这里的接口文档一般就是对应后台的实体reqVo(调用后台接口访问的实体)和返回给前台的respVo(前台调用接口的返回的实体)。注意一般respVo都会有在后台做一个统一的处理为ResultVo(这个规范在2中要定义好,比如:错误码,错误描述,请求的url,请求时间,以及实体T)

4、定义接口文档是在了解业务流、数据流基础之上完成的。有了这个接口文档(其实就是定义实体的过程和对应的json)前后端的开发基本按照这个文档去开发。接口文档会有版本迭代,一般放到svn上,供所有开发人员阅览

5、现在一般系统用到的数据库都不会是单纯mysql了。还有redis,mongo、es等。这些个人感觉都是在十分了解业务的情况和系统架构下去设计的。后台运用这些工具去完成接口功能的实现已经系统功能和性能的实现。这个和接口文档先后顺序还真不好说,个人觉得都可以。

6、业务流-数据流-资金流。去了解和设计系统。

对于前后端分离,认识上有个误区,那就是很多人自称:我们老早就分离了,全AJAX,使用Angular或者什么什么就可以了。

这个说法是不合适的,打个比方,别人问的是“如何解决家禽把蛋生在水草边的问题?”,但实际上人家养的是鸭子,答题的却是养鸡的,所以回答“不让去水边就行了”,这显然不在点子上。

这两年业界说的前后端分离,是限于偏展示类的系统(用A代替),而不是应用、管控类Web项目(用B代替),在B类项目里,前后端是天然分离的,对此,除了

少部分后端开发人员,基本所有人的认识都是一致的。上一段中这样回答的人一般都是只做B类项目,在B类项目里,前后端分离是共识,不需要讨论。

那么,剩下的问题就是讨论A类项目的前后端分离了。这个问题的核心在什么地方呢,在于模板的与数据结合的位置,以及,模板的控制权在谁手里。经过这两年的讨论,基本上我们可以达成的共识就是:模板应当由前端人员去控制,主要原因有两方面:

-性能优化(尤其是外部资源的管理与发布,请求合并等等)

-协作的顺畅性(已形成模板的界面片段的返工等问题)

那么,模板到底应该在什么地方跟数据结合?

这个问题就比较折腾了,有部分人尝试像B类项目那样,使用js模板,然后在浏览器端执行,这是存在一些问题的,比如说seo不友好,首屏性能不够,尤其对于首页DOM量很大的电商类网站,差距很明显。

所以我们还是得把主要的模板放在服务端来执行。在这个过程中,阿里作了一些尝试,那就是引入Node层,在这一层把模板与数据进行合成,然后浏览器拿到的就

是生成好的HTML了,但也不是所有HTML都是这么生成好的,还是会有一些内容等到了浏览器之后,再用js去加载和生成。

所以这一定会是一个混合方案,同一个系统中存在两种模板,一种在服务端执行,一种在浏览器中执行,互为补充。

至于说这个方案中,是否中间层一定要是node,我觉得无所谓,只要是能正常做web项目的东西都可以,这个还是要看所在企业的技术积累方向,当然node

做这块是有一些优势的,比如对前端人员的语言友好性,前后端模板的通用性等等,但这些都是细节,重点还是整体方案和流程。

这时候回头看你问题中的这句:

>前后端分离的意思是,前后端只通过JSON来交流,组件化、工程化不需要依赖后端去实现。

我相信你这里对前后端的限定是以浏览器为准的,但事实上,A类项目中,前后端的分界一定要延伸到服务器端的模板层,也就是在这一层里,把各种来源的数据整合到模板中,这个数据未必是JSON格式的,会存在有JSON,XML,特定的二进制等等。

组件化这个话题就更复杂了,在刚才组织形式中,很难说出究竟什么才是组件。是某个商品的模板吗?是数据吗?是数据和模板的结合体吗?没法回答。在此,我说一句自己的看法:像电商这种项目的前端部分,基本不存在组件的概念,甚至不存在组件化的价值,因为这里面可复用的东西太少了,也不易提取,大多数东西都是不带逻辑的界面模板。

最近因为ReactJS的流行,带来了一个Isomorphic的概念,这是一种很有意义的探索,但是否能解决这类问题,尚不得而知,根据我的理解,它对B类项目是较好的补充方案,但对A类项目暂时还缺乏可用性,因为A类项目中,运行期的DOM变更并不多,多是整片的改变,用这个方案去解决的话,有些牛刀杀鸡的感觉。

关于B类项目的组件化,我之前那个没写完的系列是关于它的,但经过最近一年多的思考,我又觉得需要再重新写一篇东西了。感谢你的问题提醒了我,这就写。


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

原文地址: http://outofmemory.cn/yw/12918522.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-28
下一篇 2023-05-28

发表评论

登录后才能评论

评论列表(0条)

保存