I-Los Abathuthukisi be-SQLite bakha iphrojekthi abazoyiqalisa ikhono lokuhlanganisa umtapo wolwazi ube a ikhodi ye-WebAssembly ephakathi engasetshenziswa kusiphequluli sewebhu futhi ifanele ukuhlela umsebenzi ngesizindalwazi kusuka kuzinhlelo zokusebenza zewebhu ngolimi lwe-JavaScript.
Inhloso wephrojekthi ukuhlinzeka ngesixhumanisi esisebenzayo se-JavaScript lokho kuyafana ekusebenzeni kwe-SQLite API. Abathuthukisi bewebhu banikezwa isixhumi esibonakalayo esigxile entweni okusezingeni eliphezulu ukuze basebenze nedatha ngesitayela se-sql.js noma i-Node.js, esonga i-C API yezinga eliphansi kanye ne-API esekelwe kumshini we-Web Worker evumela ukudala okungavumelaniyo. asebenzisa imicu ehlukene.
Ukufihla ubunzima bokuthungatha nge-Web Worker-based API, Okuhlukile kwe i-interface yokuhlela esekelwe kumshini Thembisa.
Idatha egcinwa izinhlelo zokusebenza zewebhu kunguqulo ye-WASM ye-SQLite ingatholakala phakathi nesikhathi samanje (ilahlekile ngemva kokulayishwa kabusha kwekhasi) noma iqhubeke ohlangothini lweklayenti (iqhubeka kuzo zonke izikhathi).
Ukuze uthole isitoreji unomphela, okungemuva kulungiselelwe ukubeka idatha kusistimu yefayela yendawo usebenzisa i-OPFS (Origin-Private FileSystem, isandiso ku-File System Access API, okwamanje etholakala kuphela ku-WebKit neziphequluli ezisekelwe ku-Chromium) kanye nesitoreji sesiphequluli sendawo esisekelwe ku-window.localStorage kanye newindi.sessionStorage APIs.
Lapho usebenzisa i-LocalStorage/sessionStorage, idatha ifakwe kumephu ezitolo ezifanele zikakhiye/inani, kanti uma usebenzisa i-OPFS, kukhona izinketho ezimbili: ukulingisa i-FS ebonakalayo usebenzisa i-WASMFS, kanye nokusebenzisa okuhlukile kwe-sqlite3_vfs okunikeza isendlalelo se-VFS esisekelwe ku-SQLite. ku-OPFS. .
I-Emscripten compiler isetshenziselwa ukwakha i-SQLite esethulweni se-WASM. Umphumela uthi sqlite3.js kanye namafayela e-sqlite3.wasm ongawafaka kuphrojekthi yakho ye-JavaScript (isampula ye-HTML ne-JavaScript).
zezinjongo ezithile zale phrojekthi zibaliwe:
Ngaphandle kwalapho kuphawulwe khona kokungekona okuqondiwe, hlinzeka ngokugoqa okuphelele noma okuncane kwezici ze-sqlite3 C API, ngokwezinga ukulinganisa kwesici se-WASM no-C kuvumela. Eqinisweni, hlinzeka okungenani ngama-API alandelayo .
- Hlanganisa izinga eliphansi le-sqlite3 API eliseduze nelomdabu ngangokunokwenzeka mayelana nokusetshenziswa.
- Izinga eliphakeme le-OO API, efana nokusetshenziswa kwesitayela se-sql.js ne-node.js.
- I-API esekwe kubasebenzi exhumana nama-API angenhla ngemilayezo yabasebenzi. Lokhu kuklanyelwe ukusetshenziswa kuchungechunge oluyinhloko, nama-API asezingeni eliphansi afakwe kuchungechunge lwabasebenzi, futhi uxhumane nabo ngemilayezo yabasebenzi.
- Okuhlukile okusekelwe kusithembiso se-Worker API efihla ngokuphelele izici zokuxhumana ze-inter-thread zomsebenzisi.
- Ngokwezinga ongakwazi ngalo, sekela isitoreji esiqhubekayo sohlangothi lweklayenti usebenzisa ama-JS API atholakalayo. Ngesikhathi sokubhala lokhu, lokho kuhlanganisa i-Source Private File System (OPFS) kanye (nomkhawulo kakhulu) wesitoreji ngewindi.localStorage kanye .window.sessionStorage backends
Ngokuqondene ne izinjongo ezingaqondile:
- Njengoba i-WASM iwubuchwepheshe be-web-centric futhi i-UTF-8 iyinkosi yombhalo wekhodi kulowo mbuso, azikho izinhlelo zamanje zokusekela i-UTF3-sqlite16 APIs.
- Nakuba ukusekelwa kwezikhathi zokusebenza ze-WASM esingaphandle kwesiphequluli kusandile, le phrojekthi okwamanje (ngasekupheleni kuka-2022) igxile ekuhlosweni kwesiphequluli kuphela. Nakuba imininingwane yokusetshenziswa ehlobene newebhu iza kuqala, futhi izingxenye ze-JavaScript ze-API zigxila ngokukhethekile kumakhasimende esiphequluli, imojuli ye-WASM yezinga eliphansi "kufanele" isebenze ezindaweni ezingezona zewebhu ze-WASM.
- Ukuhambisana namapulatifomu amadala noma ama-niche. I-WASM yakhelwe iwebhu yesimanjemanje futhi idinga izinkundla zesimanje. Ngokufanayo, izinketho zelabhulali ye-sqlite3 eyehlisiwe zizosuswa ku-WASM interface ngokuphelele.
Ikhodi yosekelo lwe-WebAssembly yengezwe endaweni yokugcina enkulu yephrojekthi. Ngokungafani ne-WebSQL API, esekelwe ku-SQLite, i-WASM SQLite ihlukaniswe ngokuphelele nesiphequluli futhi akuthinti ukuphepha kwaso (i-Google inqume ukuyeka ukusekelwa kwe-WebSQL ku-Chrome ngemva kokulimala okuningana ku-SQLite okungase kusetshenziswe nge-WebSQL ukuze kuhlaselwe I-Navigator. ).
ekugcineni uma ukhona unentshisekelo yokufunda okwengeziwe ngayo, ungabheka imininingwane Kulesi sixhumanisi esilandelayo.