NodeJS让前端与后端更友好的分手

简介:

NodeJS让前端与后端更友好的分手

1

来源:cnblog    阅读:388   时间:2015-01-05

学问


 

 

最近“上层建筑”在兴起国学热,所以公司几个月前决定开发一款名叫“学问”的有关于国学的app。

 

 

APP的详情页面还是由web来显现具体内容,有些类似于新闻页,图文混排什么的web是最适合干这个的了,所以团队决定用WEB来实现详情页。

 

团队对WEB页的要求是:

  • 页面在访问后离线依然可以查看。

  • 首屏展现速度要快,不允许长时间白屏或loading。

项目现状

 

后端提供的都是以JSON为数据格式的API接口供Native端使用,同样提供给WEB的也是JSON格式的API接口

 

那么意味着WEB工作流程是

 

  1. 打开web,加载基本资源,如CSS,JS等

  2. 发起一个ajax请求再到服务端请求数据,同时展示loading

  3. 得到json格式的数据后再根据逻辑选择模板渲染出”DOM字符串"

  4. 将”DOM字符串”插入页面中webview渲染出DOM结构

 

这些步骤都由用户所使用的设备中逐步执行,也就是说用户的设备性能与APP的运行速度联系的更紧

换句话说就是如果用户的设备很低端,那么APP打开页面的速度会越慢。

 

如果是在PC端的浏览器中基本不成问题,因为现在浏览器性能已经非常好了。但在低端的Android机器上的webview性能可就难说了。

而且离线后还得要查看已访问过的页面,实现最好的方式就是用HTML5的离线存储技术了,但离线存储存的是整个页面的HTML及资源,不会存JSON数据

用本地数据库存把JSON数据也存下来?靠,太复杂了吧...

只能是服务端直接输出HTML结构渲染页面,而不是API输出JSON再由客户端渲染页面。

 

让服务端人员来写页面?


 

 

确实可以依照以前老的方式,自己写出HTML的静态页面交给服务端人员,再套上JSP或PHP服务端语言,但是..

由于服务端人员对前端HTML结构不熟悉套代码时造成各种错误经常出现。而且很难找出BUG,相信做前端的程序猿应该都体会过..

也有很多前端人员不得不开始学习JSP或PHP来应付这样的场景,全栈工程师么-_-!..

 

 

 

一种折中的解决方案


 

我看到过某些公司的某些页面,在首屏页面head的某个<script>中输出大量的JSON数据

大概是这样

<script>     var _jsonData = [{a: 1}, {a: 2}, …];
</script>

 

 

我猜测大概是想省去首屏发起ajax请求,直接将JSON输出到页面中,由JS来完成DOM构建。

这样在一定程度上提高了首屏渲染速度,前端人员又不用去写服务端程序

 

我没用这种方式,因为没人管我,我就是这么任性..

 

 

 

Er...更激进的解决方案


 

关注NodeJS很久了一直没怎么用,而且NodeJS已经发展了很多年,现在大公司应用的越来越多,可以参考NodeJS应用公司列表-》

做为前端人员,NodeJS真的很容易上手,语法就是JAVASCRIPT么。

听说淘宝啊什么的前端人员已经开始用NodeJS这么做了,大公司就是先进啊。嗯,我们盛大文学也是大公司-_-!,那么上吧骚年!

用NodeJS来做为桥梁架接服务器端API输出的JSON。如图:

 

浏览器(webview)不再直接请求JSP的API,而是

  • 浏览器请求服务器端的NodeJS

  • NodeJS再发起HTTP去请求JSP

  • JSP依然原样API输出JSON给NodeJS

  • NodeJS收到JSON后再渲染出HTML页面

  • NodeJS直接将HTML页面flush到浏览器

 

这样,浏览器得到的就是普通的HTML页面,而不用再发ajax去请求服务器了。

 

这样做的好处:

  • app的WEB页可以实现离线存储技术

  • 页面首屏渲染更快

  • 由于NodeJS与页面在同一个域名下,所以就不用跨域了,而不用HTML5输出头信息这样的方式去实现跨域了

  • 服务端与客户端逻辑都由前端人员控制都是使用JAVASCRIPT语言,前端程序猿可以更好的控制和优化,套页面什么的不容易出错

  • 真正服务端程序人员不需要再关心页面的渲染逻辑,仅需要关心数据的处理

 

这样做的坏处:

  • 增加了前端人员的工作

  • 前端人员需要对服务端程序有一定的了解

  • 服务端需要架起NodeJS服务

  • 通过NodeJS架接后台服务过程中通信时间上必然有一部分损失

 

好在NodeJS安装比较简单,各种插件也非常丰富

 

项目中实际应用经验


 

用ExpressJS框架搭建NodeJS的WEB服务感觉棒棒哒!

真的很简单,三下两下就搞定了,我这么菜的人都行,说明真的很简单!

注意点:

页面中动态部分,如:评论,阅读人数,赞的人员等这些动态数据还是需要用ajax请求

这些动态数据需要动态的插入DOM中否则这些数据会被离线存储给缓存住,每次打开都是一样的数据不会再更新,

除非.appcache文件更新,这样肯定不合理,嗯对,就是不合理

所以那些动态数据还是可以根据原先的逻辑去直接请求JSP或PHP之类的服务端提供的API接口,当然跨域什么的就看项目需求与项目环境了。

 

ExpressJS中默认的模板是EJS,而浏览器中我使用的是artTemplate.js,好吧我真的喜欢artTemplate.js

一查发现artTemplate也有NodeJS版本的,就这样服务端与浏览器端都可以使用artTemplate来做为渲染模板了,可以说是无缝啊,嘿嘿

 

最后要说的

第一次在正式项目中使用NodeJS还是挺兴奋的,感觉前端的路子又多了一条。

第一次麻,都紧张,都快....

er..就怕由于对NodeJS的不了解最后造成致命的错误,而导致项目延期。

 

 

现在已经上线了目前只有Android版本,扫一扫即可

 

 

===================================================================

转载处请注明:博客园(池中物,王二狗)willian12345@126.com














本文转自ljianbing51CTO博客,原文链接:http://blog.51cto.com/ljianbing/1624932 ,如需转载请自行联系原作者




相关文章
|
6月前
|
JavaScript 前端开发 Java
制造业ERP源码,工厂ERP管理系统,前端框架:Vue,后端框架:SpringBoot
这是一套基于SpringBoot+Vue技术栈开发的ERP企业管理系统,采用Java语言与vscode工具。系统涵盖采购/销售、出入库、生产、品质管理等功能,整合客户与供应商数据,支持在线协同和业务全流程管控。同时提供主数据管理、权限控制、工作流审批、报表自定义及打印、在线报表开发和自定义表单功能,助力企业实现高效自动化管理,并通过UniAPP实现移动端支持,满足多场景应用需求。
632 1
|
2月前
|
存储 前端开发 安全
实现“永久登录”:针对蜻蜓Q系统的用户体验优化方案(前端uni-app+后端Laravel详解)-优雅草卓伊凡
实现“永久登录”:针对蜻蜓Q系统的用户体验优化方案(前端uni-app+后端Laravel详解)-优雅草卓伊凡
195 5
|
7月前
|
前端开发 Java 物联网
智慧班牌源码,采用Java + Spring Boot后端框架,搭配Vue2前端技术,支持SaaS云部署
智慧班牌系统是一款基于信息化与物联网技术的校园管理工具,集成电子屏显示、人脸识别及数据交互功能,实现班级信息展示、智能考勤与家校互通。系统采用Java + Spring Boot后端框架,搭配Vue2前端技术,支持SaaS云部署与私有化定制。核心功能涵盖信息发布、考勤管理、教务处理及数据分析,助力校园文化建设与教学优化。其综合性和可扩展性有效打破数据孤岛,提升交互体验并降低管理成本,适用于日常教学、考试管理和应急场景,为智慧校园建设提供全面解决方案。
488 70
|
8月前
|
JSON 自然语言处理 前端开发
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
461 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
|
6月前
|
存储 消息中间件 前端开发
PHP后端与uni-app前端协同的校园圈子系统:校园社交场景的跨端开发实践
校园圈子系统校园论坛小程序采用uni-app前端框架,支持多端运行,结合PHP后端(如ThinkPHP/Laravel),实现用户认证、社交关系管理、动态发布与实时聊天功能。前端通过组件化开发和uni.request与后端交互,后端提供RESTful API处理业务逻辑并存储数据于MySQL。同时引入Redis缓存热点数据,RabbitMQ处理异步任务,优化系统性能。核心功能包括JWT身份验证、好友系统、WebSocket实时聊天及活动管理,确保高效稳定的用户体验。
420 4
PHP后端与uni-app前端协同的校园圈子系统:校园社交场景的跨端开发实践
|
5月前
|
人工智能 监控 前端开发
AI工具:前端与后端的终极对决?谁将成为新时代的宠儿?
深入探讨AI工具对前端和后端开发的具体影响、各自的机遇与挑战,并分析未来开发者如何驾驭AI,实现能力跃迁。
284 0
|
8月前
|
前端开发 算法 NoSQL
前端uin后端php社交软件源码,快速构建属于你的交友平台
这是一款功能全面的社交软件解决方案,覆盖多种场景需求。支持即时通讯(一对一聊天、群聊、文件传输、语音/视频通话)、内容动态(发布、点赞、评论)以及红包模块(接入支付宝、微信等第三方支付)。系统采用前后端分离架构,前端基于 UniApp,后端使用 PHP 框架(如 Laravel/Symfony),配合 MySQL/Redis 和自建 Socket 服务实现高效实时通信。提供用户认证(JWT 集成)、智能匹配算法等功能,助力快速上线,显著节约开发成本。
251 1
前端uin后端php社交软件源码,快速构建属于你的交友平台
|
7月前
|
监控 前端开发 小程序
陪练,代练,护航,代打小程序源码/前端UNIAPP-VUE2.0开发 后端Thinkphp6管理/具备家政服务的综合型平台
这款APP通过技术创新,将代练、家政、娱乐社交等场景融合,打造“全能型生活服务生态圈”。以代练为切入点,提供模块化代码支持快速搭建平台,结合智能匹配与技能审核机制,拓展家政服务和商业管理功能。技术架构具备高安全性和扩展性,支持多业务复用,如押金冻结、录屏监控等功能跨领域应用。商业模式多元,包括交易抽成、增值服务及广告联名,同时设计跨领域积分体系提升用户粘性,实现生态共生与B端赋能。
739 12
|
8月前
|
资源调度 JavaScript 前端开发
前端开发必备!Node.js 18.x LTS保姆级安装教程(附国内镜像源配置)
本文详细介绍了Node.js的安装与配置流程,涵盖环境准备、版本选择(推荐LTS版v18.x)、安装步骤(路径设置、组件选择)、环境验证(命令测试、镜像加速)及常见问题解决方法。同时推荐开发工具链,如VS Code、Yarn等,并提供常用全局包安装指南,帮助开发者快速搭建高效稳定的JavaScript开发环境。内容基于官方正版软件,确保合规性与安全性。
7481 23
|
机器学习/深度学习 JavaScript 前端开发
前端走进机器学习生态,在 Node.js 中使用 Python
从今天开始,你就可以开始看着 Python 的文档,使用 JavaScript 来“学习和使用”机器学习和深度学习了!
前端走进机器学习生态,在 Node.js 中使用 Python

热门文章

最新文章