网络漫画与电子书应用
我们开发了一款在同一应用中阅读网络漫画、出版漫画和小说的内容服务应用。该服务从多家内容供应商获取连载作品,每天更新新的章节,读者通过PC、移动网页和应用阅读。用户会长时间阅读图片和文档,滚动一卡顿、已下载作品的状态一出错,阅读本身就会中断。工作涵盖网络漫画阅读器、打开多种文档格式的阅读界面,以及保存在设备中的内容状态、下载与阅读记录的存储结构。
滚动与翻页不卡顿的网络漫画阅读器
网络漫画阅读器是向下滚动阅读竖长画面的界面。滚动、翻页切换与内容加载决定了大部分阅读体验,因此在实现画面布局和主要操作时,我们把重点放在让这三条流程保持稳定。用户会长时间阅读一部作品,所以对他们最常遇到的加载和画面切换又单独做了检查。

在同一应用中打开不同格式出版漫画与小说的文档阅读
为了让出版漫画和小说也能与网络漫画在同一应用中阅读,我们接入了多个打开 PDF 和电子书格式的文档阅读组件。不同格式在屏幕上呈现文字和图片的方式各不相同,我们逐一确认了这些差异。读者无需在意是哪种格式,在应用内都以同样的方式翻页阅读。

围绕已下载作品状态重新设计的设备内数据库
网络漫画应用把已下载作品的内容状态、下载信息和阅读记录存放在设备内数据库中。下载了哪些章节、读到了哪里都记在这里,记录一旦出错,读者就得重新下载已下载的章节,或者找不到上次读到的位置。原有结构在画面布局和本地数据管理上不断出问题,于是我们重新设计了数据库结构,让这三类信息都能稳定处理。

把轻量值与需长期保留的数据分开存放的准则
网络漫画应用按数据的性质划分存放位置。像收藏这样轻量、丢失也无大碍的值放在设备设置存储中,需要长期保留并彼此一致的数据则放在服务器和设备内数据库中。什么放在哪里有了明确准则,之后维护的人也更容易找到并修改数据。

项目亮点
打磨滚动、翻页与加载的网络漫画阅读器
在同一应用中打开网络漫画、出版漫画与小说的文档阅读
按性质分开存放内容状态、下载与阅读记录的存储结构
洞察
GA4 client_storage: 'none'은 정말 쿠키를 막을까?
두 달 전 이 블로그에 「GA4 쿠키 없이 쓰기」라는 글을 썼습니다. clientstorage: 'none' 으로 쿠키 저장을 끄고, 자체 분석이 쓰던 익명 ID 를 clientid 로 넘기면 쿠키 0개로 GA4 를 쓸 수 있다는 내…
GA4 Measurement Protocol: gtag.js 없이 서버에서 이벤트 보내기
랜딩 페이지의 전송량을 파일 단위로 쪼개 보다가, 가장 큰 파일이 우리 코드가 아니라는 것을 알았습니다. Google Analytics 의 gtag.js 였고, 방문 한 번에 176KB 를 받고 있었습니다. 페이지 전체가 1,094K…
중소 제조업 AI 도입 순서: DX를 먼저 끝내야 할까?
공장을 가진 중소·중견 제조기업 16만여 곳 가운데 스마트공장을 도입한 곳은 19.5%입니다. 회사가 작을수록 이 비율은 더 떨어집니다. 중소벤처기업부가 2025년 4월에 낸 제1차 스마트제조혁신 실태조사 결과입니다. 그림: 기업 규…
Next.js loading.tsx와 404: 버튼이 화면보다 먼저 살아나게 하기
관리 화면 왼쪽 위에 사이드바를 접고 펴는 ☰ 버튼이 있습니다. 폭 하나 바꾸는 버튼인데, 대시보드에서 누르면 2초 넘게 아무 반응이 없었습니다. 레이아웃만 바꾸는 일이 왜 이렇게 오래 걸리는지부터 들여다봤습니다. Next.js 16…



