####一、前言
>前段时间写了《前后端分离项目实践》收到一些建议,又经过两个月的项目实践、整理,和大家再分享下,统一回复下疑问。
>其它相关文章可参考<http://www.upopen.cn>
####二、新的架构图
>标红线部分,由前端完成,相对于之前的结构,web服务端多了mobile 和 app,数据服务端在非敏感数据处也使用了mongo做数据库存储,按图的序号简单说下每块的职能。
>1、nginx – 作为项目的入口,主要用于代理 及 负载。
>>偏前端的朋友问既然nodejs可以做web服务器,为什么还要用nginx?在服务器的层面上nodejs可以启动为web服务器,但通常也仅限于此。在运维层面上要考虑代理、负载、process、gzip、cache、cgi...,这些不是nodejs可达到的,并且单从对静态资源的处理上,nginx就比nodejs高效很多,毕竟nginx号称理想情况下可以支持50000的并发,这和为什么不用nodejs完成所有的服务数据处理是一个道理。
>>据文件和域名将请求代理到static和nodejs服务器
>>gzip / cache等其它功能
>2、static用于存放js/css/imgs/ttf/less/woff等静态资源,要充分考虑据项目的文件目录细化、便于扩展、
cdn部署等。
>3、mobile web服务器
>4、pc web 服务器
>5、app web 服务器
>>上面三个对应三个不同的客户端请求,在项目不明朗的情况下,尽量细化且少耦合是比较合适的。虽然在我公司项目实践上,三个服务主要都是对用户使用公司服务支持,但仍有较多的不同,所以单独分开,app部分正在开发,使用react native。
>>此处不做数据存储,也有朋友说不做存储,其它也没什么事情可以做了。我们可以做
>>* 请求路由指向
>>* 数据过滤
>>* 附件上传
>>* 图片验证码
>>* 页面静态化
>>* 权限控制
>>* ...
>>这取决于你项目本身,如果是java,除了存储外的其它逻辑,都可以考虑用nodejs来实现。
>6、routes,配置向外的接口文件,控制请求流向
>7、使用mongodb + nodejs搭建数据库服务,
>>此处主要用于存储一些非敏感性、轻计算的数据,如新闻等营销类数据,开发轻量,且非SQL数据库也便于扩展。我们官网的运营支撑平台就是完全由前端完成的。
>8、Redis存储缓存类数据
>>暂存用户登录状态及角色等临时信息,单独使用SESSION无法处理多台服务器共享,可以自行生成SID对应用户信息保存在REDIS里。
>9、用户数据存储 online
>>此处是常规意义的后台,因涉及较多的数据计算,我们用JAVA实现,各取所长。
>10、用户数据存储 DEV
>>用于并行开发过程中为web服务提供测试数据,因为此处只是为WEB服务提供基本的数据存取不用考虑业务逻辑,实现起来也非常便捷,提供可模块化的方法、流程,对工作是非常有利的
>11、提供测试类数据
>>此处主要是给QA使用,数据输出到其指定的工具,便捷查看及反馈
>12、其它第三方接口
>>比如,我们手机网页也适用于微信服务号,涉及用户数据如OPENID获取等。
>13、使用nodejs+mongo额外提供一个接口测试工具,方便java人员在线测试,也作为接口交付依据。
>总体思想就是,尽量解耦,接口化,才能便于扩展、复用,减少重构成本。
####三、技术支持
>这样的项目,对前端人员的技术深度、广度有更高层面的要求,此时更是一个架构、全栈的角色,这样的角色需要哪些技能呢?
>首先,需要较好的技术团队,良好的运维、测试、JAVA开发同事,是项目顺利进行的保证,除此之外,前端人员需要掌握以下不限于的技术,
>>1、 NODEJS,官网上的API
>>2、 NODEJS各种框架,提高开发效率
>>>a) Express
>>>b) Ejs
>>>c) Node-dev
>>>d) Node-inspector
>>>e) Log4js
>>>f) Redis-server
>>>g) Mongoose
>>>h) Pm2
>>>i) grunt
>>>...
>>3、 MONGODB / SQL
>>4、 对http有更深刻的理解,理解其原理,掌握HEADER信息等
>>5、 LINUX(UBUNTU)开发经验,提高开发效率,也便于与运维人员沟通
>>6、 redis / socket / ...
>>7、 更严谨的编辑思维,对测试、异常、日志等有较好的控制。
>可以参考教程<http://www.upopen.cn/article/info/559252e1b269230039000002>,相信会对初学者有些帮助。
>教程git在https://github.com/xiaolulu/mynodejs.git
####四、人员
>这样的一个项目结构需要多少前端人员支持也大家最常问的,具体要视项目情况及从业人员的技术积累,有60分的积累,就可以尝试做70分的事情,这样才会成长。在前期探索阶段,先开发一些轻逻辑的应用,把时间多用在技术实现上。
>我刚进现在创业型公司三个月+,目前只有我一个,还在扩招。人手不足,所以在技术选择及业务支持上一直比较谨慎
####五、总结
>这样架构虽然提高了公司项目开发效率,但也并不比传统方式高明很多,更谈不上替代,并且需要我花费更多心力,但工作就是这样,自己学习、努力之外,还要去创造展示自己的平台,成长就在于你为自己搭了多高的门槛,让他人难以替代。
>nodejs出现终究还较短,国内尚没有大规模应用,但通过一些国际企业的使用,我们可以预见其优势可以被我们所应用。特别对于互联网这种重页面交互、轻业务逻辑的web应用上,更能体现其价值。
>作为新事物,还有很多问题需要探索、解决,我们在路上。
### 技术新Q群 435485569
相关推荐
项目源码"journey前后端项目"包含整个系统的前端和后端代码,包括Vue.js组件、SpringBoot微服务模块、Redis配置、Druid数据源设置以及RabbitMQ相关配置和处理器。开发者可以通过查看和学习这些源码,深入了解如何将...
总的来说,“前后端分离项目.zip”是一个全面展示前后端分离开发模式的实例,涵盖了前端开发、后端服务化、API设计、依赖管理等多个方面,对于学习和实践前后端分离技术具有很高的参考价值。开发者可以借此深入理解...
### 前后端分离实践 #### 一、引言 在现代软件开发尤其是Web应用领域,前后端分离已经成为一种趋势。本文档旨在探讨前后端分离的概念、发展历程以及其在淘宝的实际应用情况,并进一步深入讨论如何利用Node.js来...
"Python-pythonvue3前后端分离项目" 提供了一个将这两种技术结合的实践案例,用于构建内容管理系统(CMS)。 在这个项目中,Python 通常会作为服务器端的语言,负责数据处理、业务逻辑以及与数据库的交互。开发者...
《基于Layui和ThinkPHP的前后端分离实践详解》 在现代Web开发中,前后端分离已经成为一种主流模式,它能有效提升开发效率,优化项目结构,提高代码的可维护性和可扩展性。本教程将围绕“layui+thinkphp前后端分离....
总的来说,这个项目是一个全面的电商解决方案,不仅展示了前后端分离的开发模式,还涵盖了项目集成和优化的诸多方面,对于学习和实践Web开发,尤其是电商领域的开发者来说,是一个非常有价值的资源。
本项目以"前后端分离"为核心,结合Vue.js和Java技术栈,为自学者提供了一个实用的学习平台。以下是关于这个项目的详细说明: 一、前后端分离 前后端分离是指在Web应用中,前端和后端通过API接口进行通信,各自负责...
总的来说,这个基于Vue的建材销售管理系统是一个完整的全栈项目,它结合了现代Web开发的前沿技术和实践,展示了如何通过前后端分离实现高效、可扩展的业务应用。无论是对于毕业设计还是实际工作场景,这样的项目都有...
本系统“前后端分离项目源码--功能最全面的进销存管理系统”就是这样一个典型的实践案例,适用于毕业设计或课程设计,为学习者提供了丰富的实践素材。 一、前后端分离原理与优势 前后端分离主要是指前端负责用户...
这本《Vue Spring Boot前后端分离开发实战》的源码提供了深入学习和实践这一技术栈的机会。以下是对其中涉及知识点的详细说明: 1. **Vue.js**:Vue.js是一个轻量级的前端JavaScript框架,以其易学易用、组件化和...
本项目“Springboot_Vue前后端分离”正是这种模式的一个实例,它利用Spring Boot作为后端服务框架,Vue.js作为前端UI框架,实现了基本的数据增删改查功能。 **Spring Boot** Spring Boot是Spring框架的一个扩展,...
总的来说,这个项目为开发者提供了一个实践Thinkphp6和JWT结合的起点,有助于理解和掌握前后端分离的实现方法,同时也展示了现代Web开发中的一些最佳实践。通过学习和研究这个项目,开发者可以提升自己的技能,为...
【标题】"毕业设计源码前后端分离meiduo_mall商城项目.zip" 提供的是一个基于前后端分离技术的毕业设计项目,名为"meiduo_mall",这是一个在线购物平台的实现,旨在模拟类似淘宝或京东的电商网站功能。这个项目的...
总的来说,这个项目展示了如何利用SpringBoot和Vue.js实现高效、分离的Web应用开发,是学习和实践前后端分离技术的好材料。开发者可以通过研究该项目,深入了解这两者的整合方式,提升自己的全栈开发能力。
《SpringBoot+Vue 教务管理系统前后端分离实践详解》 在现代的Web开发中,前后端分离已经成为一种主流架构模式。本项目“SpringBoot+Vue教务管理系统”充分利用了这种模式的优势,结合了SpringBoot的强大后端能力与...
本项目是一个基于Java、Vue和SpringBoot的前后端分离实战案例,主要涵盖了社区类Web应用的后端开发。在这个项目中,我们将深入学习和实践如何使用这些技术来构建一个功能完善的社区平台。以下是对该项目涉及的技术点...
在现代Web开发中,前后端分离已经成为一种常见的架构模式,它可以提高开发效率,增强应用的可维护性。本文将深入探讨如何使用React作为前端框架,Spring Boot作为后端微服务框架,结合MySQL数据库来实现一个完整的增...
本项目"在线云盘系统源码"是一个采用现代Web开发技术构建的前后端分离应用程序,主要技术栈为SpringBoot、Vue.js以及Hadoop分布式文件系统(HDFS)。 首先,SpringBoot是Java领域的一种轻量级框架,它简化了传统...
**Pyecharts与Django结合实现Ajax Web应用** ...总的来说,这个项目为学习者提供了一个了解如何将Python的Pyecharts、Django和Ajax技术结合的实践平台,有助于提升Web开发技能,尤其是对前后端交互的理解。
从上述内容来看,周骞提到的前后端分离实践,其实质是对前后端工程师职责的明确划分。在前后端分离模式下,前端工程师主要关注界面展示和用户交互,后端工程师则专注于业务逻辑和数据处理。这种分离的好处在于,前后...