基于Node.js中间层Web开发的研究与实现——以微信图书借阅平台为例

  • 格式:pdf
  • 大小:1.05 MB
  • 文档页数:7

第34卷第2期 2017年3月河北工业科技Hebei Journal of Industrial Science and TechnologyVol. 34,No. 2Mar. 2017文章编号:1008-1534(2017)02-0118-07基于N o d e,j s中间层W e b开发的研究与实现—以微信图书借阅平台为例仇晶,黄岩,柴瑜晗(河北科技大学信息科学与工程学院,河北石家庄 050018)摘要:针对W eb研发领域一直面临前后端耦合问题,在充分分析传统的互联网前后端W eb软件 开发的基础上,提出了引入Node,j s作为中间层来解除前、后端之间耦合关系的新解决方案。

设计 了新的架构模式指导W eb软件开发,从而达到提高开发效率、提升代码灵活性、明确开发人员工作 职责等目的。

基于此研究,真实开发了一个基于微信的图书借阅平台,并以此作为可行性检验的依 据,该图书借阅平台使用微信作为前端执行环境,提供图书借阅、图书归还、图书入库、图书浏览功 能。

系统采用B/S架构,Node,j s中间层和后端程序在服务器中运行,用户关注微信公众号后,可以通过微信聊天窗口接收服务器端讯息,也可以通过公众号菜单导航到前端界面,完成图书借阅分 享操作,交互方式高效简洁。

关键词:计算机网络;W eb开发方法;耦合与解耦;Node,js;中间层;移动终端中图分类号:T P311.5 文献标志码:A doi:10. 7535/hbgykj.2017yx02008Research and realization of Web development based onNode, js middle layer:Taking Wechat book sharingplatform as an exampleQIU Jing,HUANG Y an,CHAI Yuhan(School of Information Science and Engineering,Hebei University of Science and Technology, Shijiazhuang, Hebei 050018, China) Abstract :Front-end and back-end's code coupling together is a historical problem in Web development area. In this paper, a new solution of Web development is proposed to decoupling connections between front-end and back-end, where Node, js is used as middle layer. A new architecture is also introduced to point the new way of creating web apps, which can enhance efficiency and extend flexibility of development, and make the duty of programmer more clear. To prove the feasibility of our method, a Wechat book sharing platform is developed based on this idea. The platform provides book borrowing, book returning, book checkin and book browsing functionalities and runs on Wechat environment. The platform is based on B/S architecture, and Node, js acts as middle layer on server. Users may receive notifications in Wechat's chatting interface or redirect to front-end webview page by clicking Wechat public accounts, custom menu bar, accomplishing sharing operation of book lending and bor­rowing, which is convenient and efficient.收稿日期:2016-10-26;修回日期:2017-03-01;责任编辑:陈书欣基金项目:国家自然科学基金(61300120)第一作者简介:仇晶(1983—),女,河北石家庄人,副教授,博士,主要从事机器学习和W e b服务方面的研究。

通信作者:黄岩。

E-m ail:ry erh@q 仇晶,黄岩,柴瑜晗.基于Node, j s中间层W e b开发的研究与实现—以微信图书借阅平台为例[J].河北工业科技,2017,34 (2): 118-124.Q IU Jin g, H U A N G Y a n, C H A I Yuhan. Research and realization of Web development based on Node, js middle lay er: Taking W echat book sharing platform as an exam p le[J], Hebei Journal of Industrial Science and Technology,2017,34(2): 118-124.第2期仇晶,等:基于N o d e,j s中间层W e b开发的研究与实现119 Keywords: computer network;Web development;coupling and decoupling;Node, js;middle layer;mobile terminal步入信息时代以来,互联网给人们的生活带来 了翻天覆地的变化,互联网也不再简单地仅仅通过 提供便利快捷的资讯服务来丰富人们的生活。

互联 网的出现打破了许多传统行业垄断的格局,互联网 以其接入面广、信息及时、人人可参与等性质,迅速 融入到了人们的生活中,并且已经成为整个社会不 可缺少的一部分[1]。

大约5年以前的互联网是属于 P C时代,那时人们的网络生活包括逛贴吧、看资 讯、写博客、下载多媒体文件以及在线网购等。

随着 互联网的发展、移动4G和公共网络的速度提升和移动设备的普及,目前移动端市场正在以突飞 猛进的速度渗透到用户群当中。

越来越多的人开始 使用移动端设备接入互联网丰富日常生活[2]。

在线 购物、订餐,订房、订票,到日常信息的获取和交流,都可以利用移动设备完成。

然而,移动端服务和业务规模的扩增对开发者 而言却是一件让人头疼的难事,因为传统互联网一 直没能很好地解决前后端耦合的问题[3]。

前端由于 接入设备种类的增加以及业务规模的愈发复杂化,导致人们强烈需要把前端从后端中解耦出来,让前 后端不仅从运行平台上解开,更重要的是从代码设 计和架构上实现完全的解耦。

在这些基础上,前人为了实现前后端解耦总结 了许多实践方法,但每解决一个问题往往会引入新 的问题[4]。

本文试图引入一种新的模式,从根本上 实现前后端的彻底解耦,并通过微信公众号开发实 现一个图书借阅平台的真实例子,验证了所提出新 模式的可行性与架构方法。

1前后端解耦的问题描述W eb软件研发这一行业,从互联网诞生的那一 刻开始诞生,开发模式也在不断演进。

从最初既做 设计图又要写代码,不分前后端一人通吃的蛮荒时 代,到现在逐渐分工明确各司其职的现代化开发时 代,W eb行业正在以历史上最快的速度向前发展。

在这个历史进程中,W e b研发模式经历了如下阶段。

最初期可称为W eb初期,那时不区分前后端工 程师,对于大部分公司而言,懂得技术的人才并不 多,然而当初的业务程度也没有现在这么复杂。

通 常所有工作由一个小团队即可完成,H T M L内容直 接由J S P或者P H P等后端语言直接输出,交给浏 览器来呈现,所有关于页面的展示逻辑都由浏览器来负责[5]。

浏览器端也很少参与业务逻辑,内容完 全由服务器端程序来决定。

这种模式的方便之处就 是业务逻辑十分简单,业务核心依赖服务器端,代码 结构简单清晰,利于调试和编写[6]。

然而,一旦随着 业务规模的增长,过多掺杂了 V ie w层逻辑的服务 器端代码就会不断增长,不但影响性能、效率,还严 重制约程序开发的进度。

服务器端的复杂度越来越 大,为了解决问题,单纯靠填补服务器端开发人员的 数量也难以应对庞大的服务器端代码。

这期间遇到的一些典型问题令许多人深有感 触,随着服务逐渐增长,A P I调用关系变复杂,服务 器端程序部署成为问题。

后端人员对代码做出修改 后上线需要进行上线部署,而前端人员对页面的细 微调整也需要与后端人员进行沟通,提交代码给后 端进行处理,完成本地开发,代码合并,后端部署等 诸多环节[7]。

这导致前端的任务严重依赖于后端,没有后端的前端程序完全无法独立运行,制约着前 后端之间开发进度的衔接。

为了解决这种混乱不堪的开发状况,诞生了一 种耦合式的前后端解决方案,即前端人员书写完页 面代码之后,交给后端人员处理与数据库的对接,让 前端人员给后端人员打下手,并且严格按照这种开 发流程来执行。

虽然这种方式解开了前后端人员之 间的工作任务,但是并没有解开前后端之间耦合的 代码[8]。

到了 Web 2.0时期,浏览器所呈现的内容愈发 丰富,各种W eb应用层出不穷,开始强调客户端丰 富的用户交互,此时再把前后端耦合在一起显然不 合适。

所以为了降低复杂度,开始在W eb后端领域 实践M V C开发模式。

这一阶段涌现出了一些非常 优秀的后端框架,比如RubyonRails,JavaSpring,Django等[9]。

后端M V C强调模型、视图和控制器 职责的分离,而一直以来前端的工作都是与View 层紧密相连的,所以后端可以完全专注于M odel和Controller的开发工作,而前端则专注于V ie w层页 面的开发。

当前端编写完页面模板之后,交给后端 去渲染M odel层的数据。

虽然前后端各自的关注 点分离了,但是依然没有解决代码耦合的问题。

对 于后端而言,Controller层和M odel层纠缠不清,M odel层又和V ie w层纠缠不清。