纽约公共图书馆:React 重建之路,一场关于可访问性和效率的探索

引言: 拥有超过 5400 万件藏品的纽约公共图书馆(NYPL),其数字馆藏网站正面临着现代化改造。这次重建并非简单的技术升级,而是关乎如何更好地服务于数百万用户,如何平衡有限资源与无限的访问需求,如何将庞大的数字资产转化为真正触手可及的知识宝库。NYPL最终选择了React框架Next.js,这背后隐藏着怎样的技术考量和战略决策?

主体:

1. 挑战:老旧系统与日益增长的需求冲突:

NYPL的旧数字馆藏网站,基于2013年构建的Ruby on Rails框架,尽管性能尚可,但其外观已过时,更重要的是,无法满足日益严格的可访问性要求。 超过百万件的数字藏品,涵盖印刷品、照片、视频和音频等多种格式,每天都在增长。 一个小规模的团队需要面对庞大的数据量和日益增长的用户访问需求,这无疑是一项巨大的挑战。 正如NYPL软件工程师Emma Mansell所言:“藏品越多,责任越大。” 可访问性,成为了NYPL重建网站的首要任务,这不仅关乎残障人士的使用体验,也关乎所有用户的平等访问权利。 网站需要满足Web 内容无障碍性指南(WCAG)标准,从字体大小到颜色对比度,都需要精细的调整和考量。

2. 选择:Next.js胜出,兼顾效率与可扩展性:

为了实现现代化、可访问性和与NYPL开源设计系统Reservoir(一个React组件库)的兼容性,NYPL选择了Next.js框架。 这一选择并非偶然。 Next.js的轻量级特性,以及开箱即用的功能,完美契合了NYPL小团队、有限资源的特点。 他们无需投入大量人力在前端创建复杂的自定义配置,从而节省了宝贵的时间和精力。 同时,Next.js的混合渲染能力,以及对服务器端渲染的支持,满足了NYPL对网站性能和SEO优化的需求。 更重要的是,NYPL团队拥有丰富的Next.js(版本9、10和11)开发经验,这为项目的顺利进行提供了坚实的基础。团队最终放弃了与Express框架的对比,因为Next.js更符合其需求。

3. 迁移:从Ruby on Rails到Next.js,一场架构的变革:

将Ruby on Rails应用程序迁移到Next.js并非易事。 NYPL团队最初尝试将Ruby控制器函数一对一映射到Next.js API路由,但很快发现这种方法行不通。 Ruby on Rails的MVC模式与Next.js的数据获取方法存在差异。 团队最终决定从一个空白的Next.js基板开始,并从Page Router转向App Router。 这过程中,他们也面临着服务器组件兼容性的挑战,因为Reservoir设计系统依赖于Chalk UI,需要在客户端运行。 团队最终通过重新创建页面组件,并手动传递数据来解决这个问题。 值得注意的是,Next.js 14的新特性,如路由器缓存和改进的错误边界,也为项目带来了额外的效率提升。

4. 展望:持续改进与未来发展:

NYPL的网站重建并非一蹴而就,而是一个持续改进的过程。 团队正在逐步迁移网站,并计划在Reservoir设计系统完全兼容服务器组件后,充分利用Next.js的服务器组件功能。 此次重建不仅提升了网站的性能和可访问性,也为NYPL团队带来了宝贵的经验和技术积累。 这不仅是一次技术升级,更是一次对图书馆数字化战略的重新思考和实践。 未来,NYPL将继续探索如何利用技术更好地服务于公众,将知识的海洋转化为人人可及的知识宝库。

结论: 纽约公共图书馆的网站重建案例,为我们提供了一个宝贵的样本,展示了如何在有限资源下,利用先进技术提升公共服务的效率和可访问性。Next.js的应用,以及团队在迁移过程中的经验教训,都值得其他机构借鉴。 这不仅仅是一次技术升级,更是对公共服务理念的诠释,体现了NYPL对知识平等和普惠的承诺。 未来,随着技术的不断发展,我们期待NYPL的数字馆藏网站能够为全球用户带来更加便捷、高效和丰富的知识体验。

参考文献:

  • InfoQ 文章: [此处应插入InfoQ原文链接]

*(注:由于无法访问外部链接,参考文献链接无法提供。请根据实际情况补充。) *


>>> Read more <<<

Views: 0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注