基于Node.js中间层Web开发的研究与实现
——以微信图书借阅平台为例
2017-04-12柴瑜晗
仇 晶,黄 岩,柴瑜晗
(河北科技大学信息科学与工程学院,河北石家庄 050018)
基于Node.js中间层Web开发的研究与实现
——以微信图书借阅平台为例
仇 晶,黄 岩,柴瑜晗
(河北科技大学信息科学与工程学院,河北石家庄 050018)
针对Web研发领域一直面临前后端耦合问题,在充分分析传统的互联网前后端Web软件开发的基础上,提出了引入 Node.js 作为中间层来解除前、后端之间耦合关系的新解决方案。设计了新的架构模式指导Web软件开发,从而达到提高开发效率、提升代码灵活性、明确开发人员工作职责等目的。基于此研究,真实开发了一个基于微信的图书借阅平台,并以此作为可行性检验的依据,该图书借阅平台使用微信作为前端执行环境,提供图书借阅、图书归还、图书入库、图书浏览功能。系统采用 B/S 架构,Node.js 中间层和后端程序在服务器中运行,用户关注微信公众号后,可以通过微信聊天窗口接收服务器端讯息,也可以通过公众号菜单导航到前端界面,完成图书借阅分享操作,交互方式高效简洁。
计算机网络;Web开发方法;耦合与解耦;Node.js;中间层;移动终端
步入信息时代以来,互联网给人们的生活带来了翻天覆地的变化,互联网也不再简单地仅仅通过提供便利快捷的资讯服务来丰富人们的生活。互联网的出现打破了许多传统行业垄断的格局,互联网以其接入面广、信息及时、人人可参与等性质,迅速融入到了人们的生活中,并且已经成为整个社会不可缺少的一部分[1]。大约5年以前的互联网是属于PC时代,那时人们的网络生活包括逛贴吧、看资讯、写博客、下载多媒体文件以及在线网购等。随着互联网的发展、移动4G和公共Wifi网络的速度提升和移动设备的普及,目前移动端市场正在以突飞猛进的速度渗透到用户群当中。越来越多的人开始使用移动端设备接入互联网丰富日常生活[2]。在线购物、订餐,订房、订票,到日常信息的获取和交流,都可以利用移动设备完成。
然而,移动端服务和业务规模的扩增对开发者而言却是一件让人头疼的难事,因为传统互联网一直没能很好地解决前后端耦合的问题[3]。前端由于接入设备种类的增加以及业务规模的愈发复杂化,导致人们强烈需要把前端从后端中解耦出来,让前后端不仅从运行平台上解开,更重要的是从代码设计和架构上实现完全的解耦。
在这些基础上,前人为了实现前后端解耦总结了许多实践方法,但每解决一个问题往往会引入新的问题[4]。本文试图引入一种新的模式,从根本上实现前后端的彻底解耦,并通过微信公众号开发实现一个图书借阅平台的真实例子,验证了所提出新模式的可行性与架构方法。
1 前后端解耦的问题描述
Web软件研发这一行业,从互联网诞生的那一刻开始诞生,开发模式也在不断演进。从最初既做设计图又要写代码,不分前后端一人通吃的蛮荒时代,到现在逐渐分工明确各司其职的现代化开发时代,Web行业正在以历史上最快的速度向前发展。在这个历史进程中,Web研发模式经历了如下阶段。
最初期可称为Web初期,那时不区分前后端工程师,对于大部分公司而言,懂得技术的人才并不多,然而当初的业务程度也没有现在这么复杂。通常所有工作由一个小团队即可完成,HTML内容直接由JSP或者PHP等后端语言直接输出,交给浏览器来呈现,所有关于页面的展示逻辑都由浏览器来负责[5]。浏览器端也很少参与业务逻辑,内容完全由服务器端程序来决定。这种模式的方便之处就是业务逻辑十分简单,业务核心依赖服务器端,代码结构简单清晰,利于调试和编写[6]。然而,一旦随着业务规模的增长,过多掺杂了View层逻辑的服务器端代码就会不断增长,不但影响性能、效率,还严重制约程序开发的进度。服务器端的复杂度越来越大,为了解决问题,单纯靠填补服务器端开发人员的数量也难以应对庞大的服务器端代码。
这期间遇到的一些典型问题令许多人深有感触,随着服务逐渐增长,API调用关系变复杂,服务器端程序部署成为问题。后端人员对代码做出修改后上线需要进行上线部署,而前端人员对页面的细微调整也需要与后端人员进行沟通,提交代码给后端进行处理,完成本地开发,代码合并,后端部署等诸多环节[7]。这导致前端的任务严重依赖于后端,没有后端的前端程序完全无法独立运行,制约着前后端之间开发进度的衔接。
为了解决这种混乱不堪的开发状况,诞生了一种耦合式的前后端解决方案,即前端人员书写完页面代码之后,交给后端人员处理与数据库的对接,让前端人员给后端人员打下手,并且严格按照这种开发流程来执行。虽然这种方式解开了前后端人员之间的工作任务,但是并没有解开前后端之间耦合的代码[8]。
到了Web 2.0时期,浏览器所呈现的内容愈发丰富,各种Web应用层出不穷,开始强调客户端丰富的用户交互,此时再把前后端耦合在一起显然不合适。所以为了降低复杂度,开始在Web后端领域实践MVC开发模式。这一阶段涌现出了一些非常优秀的后端框架,比如RubyonRails,JavaSpring,Django等[9]。后端MVC强调模型、视图和控制器职责的分离,而一直以来前端的工作都是与View层紧密相连的,所以后端可以完全专注于Model和Controller的开发工作,而前端则专注于View层页面的开发。当前端编写完页面模板之后,交给后端去渲染Model层的数据。虽然前后端各自的关注点分离了,但是依然没有解决代码耦合的问题。对于后端而言,Controller层和Model层纠缠不清,Model层又和View层纠缠不清。虽然后端MVC是一种非常优秀的开发模式,但是前后端耦合这些根源问题依然没有解决。
随着Google推动Ajax技术的发展,现在几乎所有网站都有Ajax的身影,异步的JavaScript和XML技术给Web开发模式提供了全新的思路。服务器端单纯以服务的模式提供数据,View层完全独立于后端的服务,前端所需的数据都通过Ajax异步请求向服务器端获取,页面内容的渲染工作全部由前端完成。这种模式下,前端与后端实现了完全的分离,交互的关键点就是Ajax接口,但是此时,服务器端的业务虽然降低了,但是前端的复杂度却增加了。一切总归是平衡的,后端所减轻的负担,现在全部施加到了前端上。这个阶段,是前端工作人员最痛苦的时期,JavaScript走向了之前JSP和PHP走过的路,前端代码陡增,前端尝试引入框架来解决代码逻辑问题,但前端的压力依然很大[10]。
到了最近一个阶段,也是目前业界正在广泛使用的一个模式,即在前端也部署MVC甚至MVVM这种大型软件的构建模式。这一阶段前后端之间的代码耦合已经降低到最低,几乎解除了Web开发之间的代码耦合问题[11]。后端专注于业务逻辑的开发,通过RESTful接口输出数据,前端只要遵从设计模式的标准,也可以应对复杂的交互逻辑。但是方便的背后,也带来了一些其他问题。比如全部异步的请求模式给前端编码带来难度,全部通过请求接口来渲染数据对搜索引擎也十分不友好,不方便爬取页面数据。而且对于移动设备而言,尤其是手机,在网络状况不好的情况下,前端页面需要等待网络请求返回到结果才能呈现。对于前端SPA应用,最重要的路由问题难以和后端调谐,长此以往路由都是交给后端处理的,但是现实的情况是前端对路由的依赖更加严重。
展望未来,业界正在积极寻找一种新的解决方案,一个新的模式。既能解除Web开发面临的耦合问题,又能让前后端关注自己的职责,并且彼此的功能划分也更加细致。让前端可以脱离于后端,让后端可以专注于业务服务。随着Node.js技术的发展,再一次为Web研发模式带来了新的思路[12]。Node.js与前端共享开发语言,可以与前端实现高度的代码重用,也赋予了JavaScript在服务器端执行的能力。这种新的模式就是在传统后端和前端之间,引入一个Node.js中间层来调和矛盾和彼此的缺失。以往所面临的问题,随着Node.js的引入都可以得到解决,所带来的代价便是需要前端工程师对后端有更深入的理解,需要他们设计更多后端的知识,同时引入一个新层之后的通信效率略微下降。更多的制约可能是面临新的技术解决方案时的担忧,缺乏对新技术的实践经验,无法短期内改善大量的历史代码[13]。
2 系统概述
在传统前后端之间引入一个Node.js中间层来调和前后端耦合问题,是本文提出的Web开发解耦问题的新方案。同时通过开发一个基于微信的图书借阅平台,来展示和验证该方案的可行性[14]。
所尝试探索的途径是在Web服务器上同时部署服务器程序和Node.js中间层,当用户请求前端页面时,前端首先访问Node.js中间层进行页面关键数据的渲染,当后续需要数据时即可跳过Node.js中间层直接请求后端。当用户进行页面跳转时,使用Node.js中间层和前端同步页面路由,对于用户的状态管理等与业务逻辑不是强相关的服务也由Node.js来提供。依然会依赖Ajax技术来处理大量的数据,除了引入Node.js之外,其他的前后端技术依然保持不变,变的是它们之间的组合关系。
微信图书借阅平台提供添加图书、借阅图书、归还图书、浏览图书等功能。用户首次向书架贡献自己的图书时,使用添加图书功能;当用户需要查看当前书架图书信息时,使用浏览图书功能;当用户需要从书架上借阅图书时,使用图书借阅功能;当用户阅读完图书时,使用归还图书功能。
微信图书借阅平台的使用流程有3个步骤。第1步:用户关注微信图书借阅平台公众号;第2步:用户使用微信图书借阅平台的各个功能,包括添加图书、浏览图书、借阅图书、归还图书;第3步:扫描图书条形码,完成图书信息读取,并确认图书的添加、借阅、归还等功能。
目前微信平台使用的广泛度已家喻户晓,作为即时通讯软件,它还提供了开发平台供开发者使用。因此,微信图书借阅平台基于微信,不需要下载任何软件,只要用户关注“微信图书借阅平台”公众号,就可以使用平台的图书相关功能。微信图书借阅平台公众号的主界面是由3个一级菜单组成,包括借阅图书、归还图书、管理图书。其中管理图书菜单下还有2个二级菜单,包括添加图书、浏览图书。用户第1次使用本平台可能是要贡献图书的贡献者用户或者是借阅图书的借阅者用户,对于贡献者,点击管理图书菜单下的添加图书,并将图书放入书架;对于需要借阅书籍的用户,点击借阅图书菜单。用户需要借阅书籍时,可以点击浏览图书,查看当前书架上有哪些图书,点击具体的某本图书,查看图书相关信息。微信图书借阅平台并没有图书馆手持款图书条形码扫描仪,但是,平台使用微信的“扫一扫”功能,完成对图书条形码的扫描,从而获取实体图书的图书信息。添加图书、借阅图书、归还图书的功能都需要获取图书信息,通过点击功能菜单会自动转到扫一扫界面。微信图书借阅平台的操作流程是关注“微信图书借阅平台”公众号、选择功能菜单、进入扫码、完成操作确认。系统总体框图如图1所示。
图1 系统总体框图Fig.1 Overall block diagram of the system
3 系统设计
3.1 概要设计
3.1.1 整体设计
1) 微信公众号自定义菜单
微信公众号是用户使用该图书分享平台的入口,公众号底部的自定义菜单是引导用户进行功能操作的入口,需要设置简洁直观的入口让用户快速了解菜单对应的功能。
2) 前端交互
图书分享和借阅应该是一个非常便捷的操作,不应当涉及过多的交互步骤,使得各个功能一触即达。
3) Node.js中间层
中间层的职责是前端与后端的桥梁,负责从后端获取数据并渲染出页面或进一步处理数据后传递给前端。
系统架构图如图2所示。
图2 系统架构图Fig.2 System architecture diagram
3.1.2 模块设计
1)图书借阅模块
图书借阅模块实现了图书的借阅操作,读者从书架上拿到图书,通过扫描图书背面的条形码确认借阅完成借书操作,取走图书。
2)图书归还模块
图书归还模块实现了图书的归还操作,当读者阅读完毕后,扫描图书条形码后确认图书归还,然后将图书归回原位。
3)图书添加模块
图书添加模块实现了图书的入库操作,读者拿出自己的图书,扫描图书条形码后确认图书归还,然后将图书放入书架。
4)图书浏览模块
图书浏览模块实现了浏览图书信息的功能,用户可以远程查看书架上的书籍信息,包括书籍名等基本信息、书籍数量、书籍可借阅数量。
3.2 详细设计
用户进入微信后,关注公众号进入公众号界面,通过公众号主页底部的自定义菜单进入相关操作界面。点击“借阅图书”自动弹出二维码让用户扫描书籍自动借阅;点击“归还图书”自动弹出二维码让用户扫面书籍自动归还;点击“添加图书”自动弹出二维码让用户扫描书籍完成添加;点击“浏览图书”跳转到设定的网页浏览当前书库的所有书目。
3.2.1 微信公众号设置
申请个人公众订阅号和商业公众企业号的用户,首先需要到微信官网注册账号,个人公众订阅号用户需要提供证件申请实名认证,商业公众企业号用户需要提供商业资质证明。等待申请结果成功后,用户们便可以通过微信搜索功能搜索公众号名字,查看详情后关注该微信公众号。
在微信后台配置微信与自己的服务器之间的连接,从而打通从用户到微信服务器再到个人服务器之间的消息传递,并将处理后的结果回传给微信服务器,最终转发到用户的微信客户端上。
微信图书借阅平台通过企业公众号底部的自定义菜单栏,分别引导用户至不同的功能,与用户完成交互。菜单栏分为一级菜单和二级菜单,本平台使用借阅图书、归还图书、管理图书3个一级菜单,管理图书下有添加图书、浏览图书2个二级菜单。
3.2.2 获取图书信息
实现一个图书数据库的工作量非常庞大,涉及到市面上所有已有图书的信息采集入库操作。为了便利地获取图书信息,采用豆瓣开放的公共图书API接口实现图书信息查询功能。用户首先打开微信进入公众号界面,通过公众号底部菜单中的“添加图书”菜单,点击后自动转至图书条形码扫描界面,用户扫描图书背面的条形码后,微信将识别出条形码中包含的ISBN号并回传给前端程序。前端程序将ISBN回传给Node.js中间层服务器,Node.js向豆瓣开放API服务器发送RESTful请求,附带着图书的ISBN信息,取得图书信息(图书名、图书封面图片链接、图书内容摘要、作者、出版社等)。
3.2.3 存储图书信息
所有图书的信息都通过自豆瓣的开放API接口服务获得,每当采集到一本图书的信息,便会执行一次图书信息的存储任务,将图书信息存入服务器本地数据库中。这样做的原因是,一方面便于再次获取图书信息时,可以快速查询图书结果,另一方面将初次获取后的信息按照关系存入本地数据库,有利于信息的统计和变更。
在取得图书信息后,用户点击确认按钮,图书的书名、ISBN号、作者、出版社、封面、摘要等信息会存储到数据库中,并附加与借阅相关的图书信息,比如图书库存量、借阅次数、当前借阅者的信息等等。
3.2.4 展示图书信息
Node.js中间层在取得图书信息后,根据预先定义的Jade模板渲染出图书界面的HTML内容。微信用户内置的WebView控件在收到HTML内容后,渲染内容,加载图书封面等静态资源,经过CSS样式表处理后渲染出图书展示界面。图书信息的展示工作完全由Node.js中间层负责,当用户在图书页面之间跳转时,均直接请求Node.js中间层服务器,交由Node.js选择指定的Jade模板渲染内容[15]。
3.3 概念设计
微信图书借阅系统的正常使用需要有正确的数据库读取操作,数据库设计的优劣与否关系到系统能否运行流畅[16-17]。微信图书借阅系统的数据库设计主要分为概念结构设计和物理结构设计,概念结构设计主要分析实体关系,以E-R图形象地展示实体关系。物理结构设计将实体关系转化成数据库中表的关系,以及表结构中各个字段的设置。
微信图书借阅系统的实体是各个用户,用户之间的地位平等,每个用户都可以贡献图书、借阅图书、查看图书借阅情况。本系统的数据库E-R图如图3所示。
图3 系统E-R图Fig.3 System E-R diagram
本系统使用的数据库是MySQL数据库,设计时充分考虑了程序处理的要求、应用环境的需求,斟酌数据库表结构和字段设置,考虑数据库各表中的字段类型和长度,尽可能提前预估到可能出现的问题,避免程序设计过程中带来不必要的麻烦[18]。MySQL数据库中,凡字段为varchar或char类型时,需要指定编码方式为UTF-8,本系统对以上2种类型数据全部设置为UTF-8编码方式。
微信图书借阅系统共设计了3张表,分别是图书表(Books)、用户表(Users)、借阅表(Borrowing)。图书表存放从豆瓣开放API接口获取到的图书信息,用户表存放微信的用户账号信息,借阅表是一张关联表,关联了用户借阅图书的信息。所有功能均采用这3张表实现。
4 图书借阅平台的实现
本文设计的微信图书借阅平台是一个完整的B/S架构的实现,在服务器端通过Nginx监听用户请求并分发请求给StrongLoop进程管理器,StrongLoop创建多个slave进程维护Node.js实例来处理用户请求,Node.js作为中间层可以构建在任何其他语言的后端之上,通过基于RESTful规则设计的接口可以建立Node.js中间层与其他后端语言的数据通信[19-20]。数据库采用MySQL、通过Jade模板引擎实现服务端HTML预渲染、在客户端通过微信内置的Blink内核的WebView作为与用户交互的入口、UI效果展示采用Bootstrap、CSS界面库快速制作移动端友好的响应式界面[21-22]。
该平台的各功能界面如图4—图7所示。
图4 图书列表Fig.4 List of books
图5 扫一扫添加图书Fig.5 Swipe to add books
图6 借阅图书Fig.6 Borrow books
图7 归还图书Fig.7 Return books
5 结 语
本文在分析传统Web研发领域互联网前、后端Web软件开发的基础上,提出引入Node.js作为中间层以解除前后端之间的耦合关系新的解决方案,并设计新的架构模式指导Web软件开发,从而达到提高开发效率、提升代码灵活性、明确开发人员工作职责等目的,并在此研究基础上实现一个基于微信的图书借阅平台作为可行性检验的依据。该图书借阅平台使用微信作为前端执行环境,提供图书借阅、图书归还、图书入库、图书浏览功能。系统采用 B/S 架构,Node.js 中间层和后端程序在服务器中运行,用户关注微信公众号后,可以通过微信聊天窗口接收服务器端讯息,也可以通过公众号菜单导航到前端界面,完成图书借阅分享操作,交互方式高效简洁。
/References:
[1] 李张永,陈和平,顾进广.跨平台移动Web开发框架与数据交互方法[J].计算机工程与设计,2014,35(5): 1827-1832. LI Zhangyong, CHEN Heping, GU Jinguang. Cross-platform mobile Web development framework and data interactive method[J]. Computer Engineering and Design, 2014, 35(5): 1827-1832.
[2] 周东星,李心科.基于MVC和AJAX的Web开发模型的设计与应用[J].合肥工业大学学报(自然科学版),2008,31(9): 1438-1442. ZHOU Dongxing, LI Xinke. Design and application of a Web development model based on MVC and AJAX[J]. Journal of Hefei University of Technology(Natural Science), 2008, 31(9): 1438-1442.
[3] 王准,夏阳.基于Ruby on Rails的WEB开发新技术[J].微计算机信息,2007,23(10-3): 218-220. WANG Zhun, XIA Yang. New technology of Web development: Ruby on Rails[J]. Microcomputer Information, 2007, 23(10-3): 218-220.
[4] 潘晓梦,邓建华,苏厚勤.一种跨平台移动应用方案的研究与实践[J].计算机应用与软件,2013,30(1): 180-182. PAN Xiaomeng, DENG Jianhua, SU Houqin. Study and practice of a cross-platform mobile application solution[J]. Computer Applications and Software, 2013, 30(1): 180-182.
[5] 武佳佳,王建忠.基于HTML5实现智能手机跨平台应用开发[J].软件导刊,2013,12(2): 66-68.
[6] CHARLAN A, LEROUX B. Mobile application development: Web vs. native[J]. Communicaitons of the ACM, 2011, 54(5): 49-53.
[7] 鹿旭东,万建成.Web应用开发方法研究[J].计算机工程与应用,2006(13): 97-101. LU Xudong, WAN Jiancheng. Study of development method-logy in Web applications[J]. Computer Engineering and Applications, 2006(13): 97-101.
[8] 孟凡宁,丛中昌,黄志兴,等.移动互联网应用跨平台开发研究[J].移动通信,2013(13): 60-63.
[9] 陈桦,杜启宏,程刚.移动智能终端Web应用平台开发技术研究[J].移动通信,2013(5):23-26.
[10]陈必峰.基于AJAX的富客户端技术及应用[J].计算机科学, 2011, 38(sup1): 419-420. CHEN Bifeng.Technology and application of rich client based on AJAX[J].Computer Science, 2011, 38(sup1): 419-420.
[11]WILLIAMS N S. Java Web高级编程[M].王肖峰,译.北京:清华大学出版社,2015.
[12]张煜.一种使用Node.js构建的分布式数据流日志服务系统[J].计算机系统应用,2013,22(2): 68-71. ZHANG Yu. Distributed data stream log service system built with Node.js[J]. Computer Systems & Applications, 2013, 22(2): 68-71.
[13]SIMONM. Introduction to Ajax: Client Server Communications on the Web[M]. [S.l.]:Oreilly & Associates Inc, 2016.
[14]罗皓,李敏,彭康明.Web开发中模版引擎方案的实现[J].计算机工程与设计, 2010,31(7):1606-1608. LUO Hao, LI Min, PENG Kangming.Realization of template engines for Web development process[J].Computer Engineering and Design, 2010,31(7): 1606-1608.
[15]孟晨,赵春亮,张建国.泛型DAO模式在Java Web开发中的应用[J].计算机应用与软件, 2012, 29(1): 175-177. MENG Chen, ZHAO Chunliang, ZHANG Jianguo.Applying generic DAO pattern Java Web development[J].Computer Applications and Software,2012,29(1): 175-177.
[16]李小平,肖岳峰,宿元,等.基于J2EE多层架构的Web开发框架研究[J].计算机应用研究, 2008, 25(5): 1429-1431. LI Xiaoping, XIAO Yuefeng, SU Yuan, et al.Study of Web-based framework based on J2EE multi-tier architecture[J].Application Research of Computers, 2008, 25(5): 1429-1431.
[17]张亭. 基于Struts和Hibernate架构的渲染集群管理系统 Web Portal的开发[J]. 河北工业科技,2013,30(4):253-256. ZHANG Ting. Development of Web Portal based on Struts and Hibernate[J]. Hebei Journal of Industrial Science and Technology, 2013,30(4):253-256.
[18]缪亚波,赵轶群.一种针对复杂交互界面应用的Web开发框架[J].计算机应用, 2004,24(2): 154-156. MIAO Yabo, ZHAO Yiqun.A framework of Web development for complex user-interface application[J].Computer Applications, 2004,24(2): 154-156.
[19]任喜伟,陈长明,苗新强.基于Caché的三层结构Web开发模式的研究[J].计算机测量与控制, 2009, 17(9): 1793-1794. REN Xiwei, CHEN Changming, MIAO Xinqiang.Research three-tier structure of Web development mode based on Caché[J].Computer Measurement & Control, 2009, 17(9): 1793-1794.
[20]楼树美,李淑玉.动态WEB开发下大型交互网站BBS的设计分析[J].科技通报, 2014, 30(2): 164-166. LOU Shumei, LI Shuyu.Large interactive website BBS design under dynamic WEB development[J].Bulletin of Science and Technology, 2014, 30(2): 164-166.
[21]郑广成. ASP.NET中AWSMVC架构模式研究[J] . 河北科技大学学报,2011,32(6):598-604. ZHENG Guangcheng. Research in AWSMVC framework pattern in ASP.NET[J]. Journal of Hebei University of Science and Technology, 2011,32(6):598-604.
[22]王志刚.PHP5应用实例详解:使用Zend Framework & Smarty构筑真正的MVC模式应用[M].北京:电子工业出版社,2010.
Research and realization of Web development based on Node.js middle layer: Taking Wechat book sharing platform as an example
QIU Jing, HUANG Yan, CHAI Yuhan
(School of Information Science and Engineering, Hebei University of Science and Technology, Shijiazhuang, Hebei 050018, China)
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 borrowing, which is convenient and efficient.
computer network; Web development; coupling and decoupling; Node.js; middle layer; mobile terminal
1008-1534(2017)02-0118-07
2016-10-26;
2017-03-01;责任编辑:陈书欣
国家自然科学基金(61300120)
仇 晶(1983—),女,河北石家庄人,副教授,博士,主要从事机器学习和Web服务方面的研究。
黄 岩。E-mail:ryerh@qq.com
TP311.5
A
10.7535/hbgykj.2017yx02008
仇 晶,黄 岩,柴瑜晗.基于Node.js中间层Web开发的研究与实现——以微信图书借阅平台为例[J].河北工业科技,2017,34(2):118-124. QIU Jing,HUANG Yan, CHAI Yuhan.Research and realization of Web development based on Node.js middle layer:Taking Wechat book sharing platform as an example[J].Hebei Journal of Industrial Science and Technology,2017,34(2):118-124.