Internet Archive BookReader 用於線上查看 Internet Archive 中的圖書,也可用於查看其他圖書。
查看實例:
詳細資訊頁面:https://archive.org/details/birdbookillustra00reedrich
完整視窗:https://archive.org/details/birdbookillustra00reedrich?view=theater
iFrame 的嵌入網址:https://archive.org/embed/birdbookillustra00reedrich
請參閱BookReaderDemo
目錄。可以透過建立原始檔案來測試這些(確保安裝了 Node.js):
npm 運行構建
並在根目錄中啟動一個簡單的 Web 伺服器:
npm run serve
然後開啟http://localhost:8000/BookReaderDemo/demo-simple.html
。
這是一個簡短的例子。
// 建立 BookReader 物件var options = { 資料:[[{寬度:800,高度:1200,uri:'//archive.org/download/BookReader/img/page001.jpg'},],[{寬度:800,高度:1200,uri:'/ /archive.org/download/BookReader/img/page002.jpg' }, { 寬度: 800, 高度: 1200,uri: '//archive.org/download/BookReader/img/page003.jpg' },],[ { 寬度:800,高度:1200,uri:'//archive.org/download/BookReader/img/page004.jpg' },{ 寬度:800,高度:1200,uri:'//archive.org/download/ BookReader/img/page005.jpg' },] ], bookTitle: '簡單的圖書閱讀器示範', // 縮圖是可選的,但它在資訊對話框中使用 縮圖:'//archive.org/download/BookReader/img/page014.jpg', // 元資料是可選的,但它在資訊對話框中使用 元資料: [{label: '標題', value: '開啟圖書館BookReader 簡報'},{label: '作者', value: 'Internet Archive'},{label: '示範資訊', value: '此示範展示如何人們可以使用 BookReader 來閱讀自己的內容。 ], ui: 'full', // 嵌入,完整(響應式)};var br = new BookReader(options);// 開始吧!
從 v5 開始,BookReader 引入了混合架構,該架構合併了用 jQuery 編寫的核心程式碼,使其更接近其作為 Web 元件的演進。 當我們邁向 BookReader 作為 Web 元件的未來時,我們正在採用事件驅動方法將兩者連接在一起。
方法:
事件驅動
使用者介面更改
API回
核心事件 src/BookReader/events.js
搜尋 API src/BookReader/events.js
BookReader (BR) 的核心程式碼發出自訂事件,報告其採取的動作:
BookNavigator 是 BR 的 Web 元件控制器,它監聽這些事件並對這些事件做出反應,以便填充側面選單面板
使用公共方法從外部控制 BR
隨著我們繼續將 UI 與繪圖/計算邏輯解耦,這些邏輯方法將變得更容易發現、作為公共方法提出並為它們建立單元測試。
當BookNavigator對BR的事件做出反應時,BookNavigator可以使用公共函數直接控制BR核心。
BookReader 的側邊導航由 LitElement 風格的 Web 元件提供支援。
BookReader 的核心功能是在 jQuery 中實現的。這包括:
繪製和調整書籍大小以及各種模式(1up、2頁展開、圖庫視圖)
水平導航
搜尋API服務
外掛
了解如何使用/擴充核心功能:
特性
TODO(現在請參閱 src/BookReader/options.js)
外掛
plugin.autoplay.js - 自動播放模式。以設定的時間間隔翻頁。
plugin.chapters.js - 渲染章節標記
plugin.search.js - 新增搜尋使用者介面和回調
plugin.tts.js - 新增 tts(大聲朗讀)ui、聲音庫和回調
plugin.url.js - 自動更新瀏覽器 url
plugin.resume.js - 使用 cookies 來記住目前頁面
plugin.vendor-fullscreen.js - 以供應商原生全螢幕取代全螢幕模式
請參閱插件目錄以取得當前插件文件
使用基本的插件系統。請參閱插件目錄中的範例。總的想法是,它們是增強 BookReader 原型的 mixin。請參閱插件目錄以獲取所有包含的插件,但這裡有一些範例:
BookReader 可以嵌入<iframe>
。如果您在<iframe>
內使用 IFrame 插件,閱讀器將透過window.postMessage()
傳送有關閱讀器狀態變更的通知。父視窗可以傳送自己的訊息(也可以透過window.postMessage()
),而 IFrame 外掛程式將更新閱讀器以進行比對。
當嵌入式 BookReader 在頁面/模式之間移動時,片段變更訊息將會傳送到父視窗。當<iframe>
收到此訊息時,它會移動到指定的頁面/模式。 「片段」的格式符合 BookReader URL 規格。
{“type”:“bookReaderFragmentChange”,“fragment”:“page/n1/mode/2up”}
(更新?)
來源 JavaScript 是用 ES6(位於src/js
目錄)和 ES5(位於BookReader
)寫的。 npm run serve-dev
啟動一個自動重新載入的開發伺服器,該伺服器建置已在localhost:8000
編輯的 js/css 。
在下一個主要版本發布之前,我們必須將建置檔案儲存在儲存庫中以保持向後相容性。請不要將這些文件包含在您的 PR 中。不應提交BookReader/
目錄中的任何內容。
要查看圖書閱讀器中本機圖示套件的更改,您需要將 core-js 安裝到圖示包中並連結到圖書閱讀器。
讓我們以icon-share
為例。
確認您的圖示套件在 iaux-icons 演示中正常運作
導航到您的圖標包( iaux-icons/packages/icon-share
)並運行命令: npm install core-js
您不需要提交任何這些 core-js 更改
從圖標包目錄中運行命令: npm link
您可以使用命令npm ls -g
確認您的本機套件現在出現在登錄中
導航到/bookreader
並執行命令: npm link @internetarchive/icon-share
您可以使用命令npm ls |grep icon-share
確認 icon-share 現在是指向本機目錄的鏈接
現在您可以透過執行命令啟動本機伺服器來查看變更: npm run serve-dev
若要對儲存庫進行版本升級並準備發布,請執行npm version major|minor|patch
(在 semver 之後),然後(類似) git push origin HEAD --tags
。它將自動更新出現的版本號、建置檔案並要求您更新變更日誌。
我們在儲存庫中以標籤和節點模組的形式發布 BookReader @internetarchive/bookreader
我們希望達到 100% 的測試覆蓋率,並正在追蹤該專案的進度:BookReader Fidelity
我們也使用 Testcafe 進行端到端測試。 我們為儲存庫本身以及在 archive.org 上的使用編寫測試。您可以在這裡閱讀有關它們的資訊。這些相對容易做到,也是了解 BookReader 奇妙的絕佳方式。 檢查項目板是否有待處理的開放門票。 如果您沒有看到針對您發現的內容的測試,請隨時提出問題。
若要執行所有本地端對端測試,請執行命令: npm run test:e2e
若要在開發時保持端對端測試伺服器打開,請執行指令: npm run test:e2e:dev
我們有單元測試並使用 Jest 來運行它們。對於mocks,我們使用Jest的內部mocking機制和Sinon來設定spies。
若要執行所有本機單元測試,請執行命令: npm run test
我們總是可以使用手工建造 BookReader。 查看問題並看看您感興趣的內容。 如果您有改進的想法,請提出問題。
開發人員文件:https://openlibrary.org/dev/docs/bookreader
託管原始碼:https://github.com/internetarchive/bookreader
IIIF (http://iiif.io) 請參閱BookReaderDemo/demo-iiif.html
以查看如何在 BookReader 中載入 IIIF 清單的範例。
請注意,BookReader 是 Archive.org 普遍獲得所有知識這項使命的核心部分。因此,必須注意支援舊版瀏覽器。它應該仍然可以在舊設備上運行並使用。
將庫更改為 NPM 依賴項,而不是包含在原始程式碼中
請參閱 CHANGELOG.md 了解該專案的歷史。
原始碼許可證是 AGPL v3,如 LICENSE 檔案中所述。
瀏覽器堆疊提供了在多個裝置上進行測試的能力。