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 ,如需转载请自行联系原作者




相关文章
|
21天前
|
Web App开发 JavaScript 前端开发
深入浅出Node.js: 打造高效后端服务
【10月更文挑战第39天】在数字化浪潮中,后端开发作为支撑现代Web应用的骨架,扮演着不可或缺的角色。Node.js,作为一种流行的服务器端JavaScript运行环境,因其非阻塞I/O和事件驱动的特性,被广泛应用于构建轻量且高效的后端服务。本文旨在通过浅显易懂的语言,结合生动的比喻和实际代码案例,带领读者深入理解Node.js的核心概念、架构设计及其在后端开发中的应用,进而掌握如何使用Node.js搭建稳定、可扩展的后端服务。无论你是初探后端开发的新手,还是寻求进阶的开发者,这篇文章都将为你提供有价值的指导和启示。
|
14天前
|
Web App开发 JavaScript 前端开发
Node.js 是一种基于 Chrome V8 引擎的后端开发技术,以其高效、灵活著称。本文将介绍 Node.js 的基础概念
Node.js 是一种基于 Chrome V8 引擎的后端开发技术,以其高效、灵活著称。本文将介绍 Node.js 的基础概念,包括事件驱动、单线程模型和模块系统;探讨其安装配置、核心模块使用、实战应用如搭建 Web 服务器、文件操作及实时通信;分析项目结构与开发流程,讨论其优势与挑战,并通过案例展示 Node.js 在实际项目中的应用,旨在帮助开发者更好地掌握这一强大工具。
37 1
|
26天前
|
Web App开发 JavaScript 前端开发
深入浅出Node.js后端框架
【10月更文挑战第34天】在数字化时代,后端开发如同一座桥梁,连接着用户界面与数据处理的两端。本文将通过Node.js这一轻量级、高效的平台,带领读者领略后端框架的魅力。我们将从基础概念出发,逐步深入到实战应用,最后探讨如何通过代码示例来巩固学习成果,使读者能够在理论与实践之间架起自己的桥梁。
|
12天前
|
Web App开发 JavaScript 前端开发
深入浅出Node.js后端开发
本文将带你走进Node.js的世界,从基础到进阶,逐步解析Node.js在后端开发中的应用。我们将通过实例来理解Node.js的异步特性、事件驱动模型以及如何利用它处理高并发请求。此外,文章还会介绍如何搭建一个基本的Node.js服务器,并探讨如何利用现代前端框架与Node.js进行交互,实现全栈式开发。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供新的视角和深入的理解。
13 4
|
1月前
|
JavaScript 中间件 关系型数据库
构建高效的后端服务:Node.js 与 Express 的实践指南
在后端开发领域,Node.js 与 Express 的组合因其轻量级和高效性而广受欢迎。本文将深入探讨如何利用这一组合构建高性能的后端服务。我们将从 Node.js 的事件驱动和非阻塞 I/O 模型出发,解释其如何优化网络请求处理。接着,通过 Express 框架的简洁 API,展示如何快速搭建 RESTful API。文章还将涉及中间件的使用,以及如何结合 MySQL 数据库进行数据操作。最后,我们将讨论性能优化技巧,包括异步编程模式和缓存策略,以确保服务的稳定性和扩展性。
|
29天前
|
Web App开发 存储 JavaScript
深入浅出Node.js后端开发
【10月更文挑战第31天】本文将引导你进入Node.js的奇妙世界,探索其如何革新后端开发。通过浅显易懂的语言和实际代码示例,我们将一起学习Node.js的核心概念、搭建开发环境,以及实现一个简单但完整的Web应用。无论你是编程新手还是希望拓展技术的开发者,这篇文章都将为你打开一扇通往高效后端开发的大门。
|
24天前
|
Web App开发 JavaScript 前端开发
深入浅出Node.js后端开发
【10月更文挑战第36天】本文将引导您探索Node.js的世界,通过实际案例揭示其背后的原理和实践方法。从基础的安装到高级的异步处理,我们将一起构建一个简单的后端服务,并讨论如何优化性能。无论您是新手还是有经验的开发者,这篇文章都将为您提供新的视角和深入的理解。
|
1月前
|
Web App开发 JavaScript 前端开发
深入浅出Node.js后端开发
【10月更文挑战第30天】本文将通过一个Node.js的简单示例,引导你进入Node.js的世界。我们将从基础概念讲起,然后一步步深入到代码实现,最后总结Node.js在后端开发中的优势和应用场景。无论你是前端开发者还是后端新手,这篇文章都将为你打开一扇了解Node.js的大门。
48 2
|
2月前
|
Web App开发 JavaScript 中间件
构建高效后端服务:Node.js与Express框架的完美结合
【10月更文挑战第21天】本文将引导你走进Node.js和Express框架的世界,探索它们如何共同打造一个高效、可扩展的后端服务。通过深入浅出的解释和实际代码示例,我们将一起理解这一组合的魅力所在,并学习如何利用它们来构建现代Web应用。
54 1
|
27天前
|
Web App开发 JavaScript 前端开发
构建高效后端服务:Node.js与Express框架的实践
【10月更文挑战第33天】在数字化时代的浪潮中,后端服务的效率和可靠性成为企业竞争的关键。本文将深入探讨如何利用Node.js和Express框架构建高效且易于维护的后端服务。通过实践案例和代码示例,我们将揭示这一组合如何简化开发流程、优化性能,并提升用户体验。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的见解和实用技巧。

热门文章

最新文章