系列旨在打造一個「給開發者的工具」——通用的 Web BLE 掃描與偵錯瀏覽器。我們將從網頁開發的零基礎出發,深入 JavaScript 核心,精通非同步程式設計,最終駕馭 Web Bluetooth API,同時透過使用API,駕馭API,來深刻理解其底層的 GATT 結構。
現在,我們的應用程式看起來像一個準備就緒的機器人,有大腦有身體,但大腦和身體之間的「神經系統」還沒有接上。大腦(JS)還不知道如何指揮身體(HTML)的各個部位...
在過去幾天,我們完成了所有基礎建設:我們有了能思考的「大腦」(JS)、能展示的「身體」(HTML/CSS),以及連接兩者的「神經系統」(DOM)。我們甚至學會了...
昨天,我們打造了一個「UI 工廠」函式 renderCharacteristic。它就像一位智慧工匠,能夠根據藍牙特徵的「屬性藍圖」(properties),精...
今天,我們要暫時停下手中修改 UI 的工作,來挑戰一個在 JavaScript 世界中,既是「最強大的盟友」,也是「最難纏的敵人」的概念。 回顧一下我們的進度:...
昨天,我們正面迎擊了 JavaScript 中最核心的挑戰——非同步程式設計。透過「點咖啡」的生動比喻,我們理解了 Promise 如同一張「取餐券」,並學會了...
今天我們將放慢腳步,回歸到非同步程式設計的起點,專注於一個看似簡單,卻蘊含深意的關鍵字:async。 在前幾天的內容中,我們為了快速理解整個流程,將 async...
昨天,我們深入探索了 async 關鍵字。我們揭開了它的核心秘密:它是一個「Promise 製造機」,能將任何函式都轉變為一個承諾未來的容器,並為我們創造了一個...
今天,我們正式跨入專案的第三階段。過去十八天的所有努力——從學習 JS 語法、設計資料結構、打造動態 UI,到征服非同步程式設計——都是為了這一刻所做的準備。我...
昨天,我們學習了 Web Bluetooth API 的三大黃金法則,如同飛行員在起飛前 meticulously 檢查儀表板,確保了萬無一失。我們的 scan...
昨天,我們取得了歷史性的突破。透過 navigator.bluetooth.requestDevice(),我們的網頁第一次「看見」了真實世界中的藍牙裝置,並成...