微信小程序在图书馆移动服务中的应用实践

2018-12-14 08:41朱玉强
新世纪图书馆 2018年9期
关键词:微信小程序

摘 要 论文使用微信开发者工具编制图书漂流小程序,解决传统漂流过程中查询不便及图书入库、借阅、预约等手续繁琐的问题;使用JavaScript作为中间件读写数据库、格式化JSON数据并与小程序交互,调用微信API实现用户统一认证、二维码扫描等个性化功能。结果表明,小程序功能确切、操作简单,非常契合图书漂流对线上线下连接的功能需求,对推进全民阅读具有积极意义。

关键词 微信小程序 图书馆移动服务 图书漂流

分类号 G250.7

DOI 10.16810/j.cnki.1672-514X.2018.09.015

Abstract In this paper, with WeChat web development tool, a book-crossing program is designed to solve the problems in traditional book-crossing process, such as difficulties in searching, storage, borrowing, reserving and so on. JavaScript is used as middleware to read and write databases and format JSON data and let it exchange with mini program. WeChat APIs are used to call out user unified authentication, QR code scan to make the program personalized. The result shows that WeChat mini program is reliable with simple operation to meet the need to combine the online and offline book-crossing service, which can actively improve nationwide reading project.

Keywords WeChat mini program. Mobile library service. Book crossing.

“图书漂流”活动源于上世纪60年代的欧洲,其雏形为读者将自己拥有但不再阅读的书籍贴上特定标签后投放到图书馆、博物馆、公园等公共场所,供人无偿取阅,阅后再投放公共场所,实现“漂流”。2001年4月,Ron Hornbaker开设了首家图书漂流网站www.bookcrossing.com[1],随后国内也陆续出现www.tspl.me、豆瓣圖书漂流小组、QQ图书漂流群[2]等线上服务,图书漂流有了组织者和管理者,并开始尝试O2O(Online To Offline) 服务。但是,从网站注册用户数及活跃度来看,上述图书漂流服务的实际成效不甚理想。对此,本文基于微信小程序工具,设计编制图书漂流移动服务,以供业界人士借鉴。

1 图书漂流及相关研究

近年来,我国图书馆界对图书漂流的研究热度持续不下。马杰良等[3]收集bookcrossing一个月内的漂流信息,建立图书漂流网络模型,证明该模型具有无标度特性和小世界网络特性,为系统自动向读者推荐同类漂流图书提供理论依据。钱海钢[4]介绍了广东省数据库建设,采用局域网工作站互访等方式开展捐赠换书中心图书捐赠、交换、漂流相关的数据管理。郭丽梅[5]以浦东图书馆“爱心图书漂流”活动为案例,对图书漂流可持续发展与自组织管理进行了探讨,强调前期活动必须与社会组织协调合作,建立良好的活动制度。鄂丽君[6]调研了38所本科高校图书馆、32所区县级公共图书馆的图书漂流开展情况,探讨漂流图书来源、漂流站设置、漂流政策、回漂率、服务效果及存在的问题,提出针对性解决方案。马志杰[7],罗雪英和刘一鸣[8],杨云芳[9],陈敏芳和季鸿斌[10]分别从不同角度指出图书漂流存在社会认可度低、读者满意度低、回漂率低等问题,并分别提出了加强管理、定期评估、丰富漂流图书种类、构建漂流平台等解决方案。

有学者探讨了微信小程序应用于图书馆服务的可能性和可行性,如王天泥[11],朱玉强[12]也以排架游戏为例探讨了微信小程序在图书馆移动服务中的应用实践。

2 图书漂流小程序设计思路及方案

腾讯微信于2017年1月9日正式上线“微信小程序”,用户通过搜索小程序名称或扫描二维码即可找到并打开小程序,关闭即释放占用资源,无需安装和卸载。小程序不支持dom、window、jquery等第三方JavaScript框架,架构为Client/Server,代码随用随下载,执行效率普遍高于HTML5应用,强调“场景”和“服务”,而非“流量”与“红利”,正好解决图书漂流线上线下连接问题,同时契合读者“招之即来、用完就走”的需求。

本文基于微信设计了图书漂流小程序,该程序由服务器端、JavaScript中间件层、微信小程序层和客户端组成,如图1所示。服务器端存储漂流图书信息数据库、数据接口等;中间件层负责收割客户端数据、读写图书库并分发给小程序;微信小程序前台为客户提供捐书、借书、还书、预约等友好操作界面,后台与服务器端交换数据实现功能。

2.1 图书漂流项目框架

项目框架如图2所示。程序视图层由app.wxss、image目录及pages各子目录下wxml、wxss文件实现,程序逻辑层由app.js、app.json和pages各子目录下js、json文件实现。index.wxml提供donate.wxml、borrow.wxml等页面入口,实现捐书、借书等友好前台界面,并借助相应js文件实现数据收割及与服务器的数据交互。

2.2 图书漂流小程序既定功能

小程序核心模块有9个,分别是:使用微信账号登录小程序、捐书、书目查询、借书、还书、预约、借阅史查询、OpenID查询、公告板。

(1) 使用微信账号登录小程序。小程序直接调用微信接口wx.login实现用户登录。其主页界面分别显示捐书、查询、借书、还书、预约、借阅史六大模块供读者使用。

(2) 捐书。小程序内置“捐书扫码”功能,捐书人携书至漂流管理处,管理员和捐书人分别使用小程序扫描图书ISBN二维码,前者扫码为小程序提供该书信息,后者提供捐书人相对于当前小程序具唯一性的OpenID。當捐书人在任何应用场景都拒绝公开其微信号时,OpenID是捐书人唯一身份标识。新书上传至数据库并初始化为“可借”,如数据库已有该ISBN号,则在“ISBNalias”(ISBN别名)字段顺序标记不同复本,以确保数据库记录唯一性。“ISBNalias”字段并不区分具体图书、不与具体图书一对一绑定,只在逻辑上与读者借出或还回此ISBN图书的顺序绑定。小程序询问捐书人在该图书借出时是否显示捐书人微信号并记录,允许则在“dv2b”字段记作“1”,此后捐书人亦可随时联系超级主管开关此选项。新书入库后在小程序“公告板”模块实时、自动展示。图书受捐入库时写入数据表的部分字段示例如表1所示。

(3) 书目查询。通过小程序内置的“书目查询”功能,用户可随时随地浏览漂流图书库所有书目信息,包括ISBN、书名、作者、出版社、出版年、页码、价格、复本数、是否已借出、借书人微信号(当且仅当借书人允许公开其微信号时可查看,否则显示“匿名”)等信息,亦可通过书名进行查询。

(4) 借书。小程序内置“借书扫码”功能,用户在漂流管理处取书并在管理员监督下扫描图书ISBN二维码,如该书状态为“可借”,管理员扫描ISBN二维码,小程序将书分配给该用户,数据库中“借书人OpenID”字段与该书“ISBNalias”字段绑定。图书成功借出后,小程序自动给出提示并显示所借图书的书名及作者信息。当同一ISBN有多个未借出复本时,以ISBN号“9787209087421”为例,假设该书库存5本,3本已借出,有读者借此书时,将其OpenID与数据库中“ISBNalias”为“9787209087421-004”的记录绑定。如借书人与该书捐书人OpenID相同,则在借书成功后提供“是否停止该书漂流并重归个人所有”选项,选“是”则将该书信息从数据库中删除,书目信息写入“历史漂流”数据表以备后查。用户可选择是否公开自己的微信号及借阅时间,方便喜欢同种图书的用户联系交流。借书不限时长,不提供续借功能。图书借出30天后如读者仍未归还,则小程序自动在“公告板”模块对借书人OpenID或微信号(当且仅当公开微信号时)发出“请还书”的格式文本,借阅时长和催还格式文本可由超级主管自定义设置。

(5) 还书。小程序内置“还书扫码”功能,读者将所借图书交还漂流管理处时,管理员和读者分别使用小程序扫描该书ISBN二维码,根据读者OpenID核实此书确为该微信用户借阅后,小程序将该书初始化为“可借”,同时记录读者已归还图书,并将该书的书目信息写入该读者OpenID对应借阅史数据表,供“借阅史”模块调用。还书成功后如该书对应ISBN号有预约信息,小程序提示第1位预约成功读者的OpenID或微信号(当且仅当读者预约时允许公开微信号时),并自动将格式文本如“@User1 @User2 书名为《Book》 的图书已还至漂流管理处,请OpenID(或微信号)为‘User1的读者3日内来取,过期则自动分配给下一位OpenID(或微信号)为‘User2的预约者。详情请洽管理员微信:jingfei2011。”等送至剪贴板,方便管理员通过微信群通知用户取书,同时该信息自动发布在小程序“公告板”模块。超级主管可自定义该格式文本内容。

(6) 预约。读者通过小程序内置“书目查询”模块浏览或检索图书,当且仅当想借图书所有复本都被借出后,读者可通过输入该书ISBN号进行预约。如同种图书有多个预约者,以预约时间先后记录预约者OpenID或微信号(当且仅当读者预约时允许公开微信号时)。预约成功后,小程序自动提示用户关注“公告板”及微信群取书通知,并给出超期不取预约失效声明。

(7) 借阅史查询。小程序内置“借阅史查询”功能,读者可查询本人通过小程序借书的全部历史记录。

(8)OpenID查询。当小程序用户在任何应用场景都拒绝公开其微信号时,OpenID是其在当前小程序内的唯一身份标识。用户登录个人微信后,可一键查询该微信号在当前小程序对应的具唯一性OpenID,如“oQt09s2e_Dh679HSJNn2mStZAT0o”。

(9) 公告板。小程序内置“公告板”模块,包括“随数据表动态变化自动更新”(如“新书通报”“预约到书”“借书超30天温馨提示”)、“管理员主动更新重要公告”“文艺副刊”(如书评等) 三个版块。

3 图书漂流小程序实现的关键方法与技术

3.1 JavaScript中间件的设计与实现

为使小程序轻量化,同时满足小程序对数据传输强制使用https协议需求,小程序与服务器进行数据交换时使用中间件。小程序向服务器提交数据时,中间件搜集并格式化数据,传递给数据库处理程序,后者根据中间件提交的参数来选择对应数据表,执行数据新增、修改、删除、查询等功能。中间件的另一项功能是从数据表提取数据,并将其格式化为JSON数据集以供小程序读取。

小程序向服务器提交数据时,通过WebSocket连接并发送数据。先使用wx.connectSocket连接服务器,使用wx.onSocketOpen获得连接回调信息,确认连接成功再使用wx.sendSocketMessage提交数据,代码如下。

wx.onSocketOpen(function (res) {

}

})

}

以ISBN号为“9787209087421”的图书为例,豆瓣网根据ISBN号查询图书信息的API接口为:https://api.douban.com/v2/book/isbn/9787209087421,摘录此网址返回的部分JSON数据如下。

{"author":["马继业"],"pubdate":"2014-10",

"pages":"172","publisher":"山东人民出版社","title":"灵岩寺史略","price":"22.00元"}

如豆瓣未收录指定ISBN图书,取回文本串中有“book_not_found”字样,小程序自动到国家图书馆等其他网站抓取图书信息,或提示管理员手工输入。

用户执行“书目查询”时,客户端向服务器发送浏览或检索请求,服务器端中间件JavaScript提取图书总库数据表中“ISBN”和包含库存信息的字段值,循环调用豆瓣网API逐一抓取相应ISBN的JSON数据供小程序使用wx.request读取,构建视图层并建立页面内搜索机制(筛选特定JSON值构建结果页面),此处不赘述代码。

4 图书漂流小程序的应用效果评价

内测期间,使用小程序可绑定20位体验用户机会,每轮各绑定10位Android和iOS操作系统终端用户,每位用户自主、随机选取小程序某项完整功能(如“捐书”)展开测试10次,共进行5轮实验,计1000个实验结果。测试表明,本文编写的小程序可稳定运行于Android v4.2.2-v7.0和iOS v7-v8操作系统移动终端(微信版本为v6.5.3-v6.5.7),无需手机或平板电脑超级管理员权限。小程序各核心模块和中间件功能准确完备,界面简洁明了,客户端与服务器端交换数据流畅,成功率和准确率均为100%。

目前,小程序尚未提供数据异步加载解决方案,当漂流管理处不止一处时,数据读写有可能发生堵塞现象,还有待完善。但从长远角度来看,使用微信开发者工具编制的图书漂流小程序可用于公共图书馆、高校图书馆、主题公园、社区文化站等统筹管理图书漂流项目,投入成本不高但社会效益很大,可以为图书馆等文化部门开展O2O服务提供新方法和新思路。

参考文献:

中山大学图书馆.中山大学图书馆——图书漂流[EB/OL].[2017-04-02].http://202.116.65.75/c/portal/layout?p_l_id=PUB.1023.171.

江麗霞,张建莉.基于QQ群的同城少儿图书漂流实践[J].新世纪图书馆,2014(8):58-60.

马杰良,宋艳,潘贞贞,等.图书漂流网络模型实证研究[J].计算机科学,2015(3):51-54.

钱海钢.论捐赠换书中心数据库建设[J].数字图书馆论坛,2013(8):53-57.

郭丽梅.图书漂流可持续发展与自组织管理机制探究:以浦东图书馆“爱心图书漂流”活动为案例[J].图书馆学研究,2014(1):16-19.

鄂丽君.图书馆主导的图书漂流活动调查研究[J].图书情报工作,2015(9):64-67.

马志杰.高校图书馆“图书漂流”发展模式与策略研究[J].图书馆工作与研究,2013(9):50-53.

罗雪英,刘一鸣.我国“图书漂流”的尴尬与超越[J].出版科学,2013(5):75-78.

杨云芳.校园图书漂流:高校图书馆阅读推广可取形式:以浙江师范大学图书馆组织图书漂流活动为例[J].高校图书馆工作,2015(4):88-90.

陈敏芳,季鸿斌.校园“图书漂流”服务的深化路径[J].图书馆杂志,2016(4):48-51,64.

王天泥.当图书馆遇上微信小程序[J].图书与情报,2016(6):83-86.

朱玉强.微信小程序在图书馆移动服务中的应用实践:以排架游戏为例[J].图书馆论坛,2017(7):132-138.

朱玉强 山东师范大学图书馆宣传推广中心主任、副研究馆员。 山东济南,250014。

(收稿时间:2017-10-10 编校:谢艳秋,曹晓文)

猜你喜欢
微信小程序
基于微信小程序的停车位租赁平台设计与实现
微信小程序在高校英语教学中的应用
微信小程序对大学生使用APP意愿的影响
基于微信小程序的点餐系统
基于Webpy+Apache HTTP Server 微信小程序架构搭建研究
基于微信小程序的医嘱服务研究
图书馆微信小程序的应用现状及前景分析
基于CNKI的微信小程序研究文献计量分析
信息技术与专业课程融合路径探索
当图书馆遇上微信小程序