PHP 桌面端框架NativePHP for Desktop v2 發布!
PHP 桌面端框架NativePHP for Desktop v2 發布!
NativePHP 團隊正式發布了 NativePHP for Desktop v2!這是一個重要(yao)(yao)的主要(yao)(yao)版(ban)本更新,雖(sui)然包含一些向后兼(jian)容性(xing)的破壞性(xing)變(bian)更,但帶來了顯(xian)著增(zeng)強的安全(quan)默認設置和許多(duo)實用的新特(te)性(xing)。
讓我們一起來看看這個版本(ben)有哪(na)些值得關注的新內容和(he)變更。
v2 的新特性
???? 新倉庫,新面貌
v2 已(yi)在統一的倉庫 nativephp/desktop 下發布。這次更新將之前的兩個獨立倉庫(nativephp/laravel 和(he) nativephp/electron)合并到了一個項目中。
這(zhe)樣的調整(zheng)不僅與 nativephp/mobile 保持了(le)一致性,也使得(de)整(zheng)個項目更易于(yu)維(wei)護,為未來的功(gong)能迭代提供了(le)更好的基(ji)礎。
值得注意的是,舊倉庫仍然可用,官方團隊會(hui)繼(ji)續維(wei)護(hu) v1 一段(duan)時(shi)間(jian),但(dan)建議開發者盡(jin)快升級到 v2 以享受新特(te)性。
?? 默認增強安全性
v2 在(zai)(zai)安(an)全性方面做了重(zhong)要改(gai)進,開(kai)箱即用(yong)地提供了更好的安(an)全默認(ren)設(she)置。新版本(ben)默認(ren)禁用(yong)了 nodeIntegration 并啟用(yong)了 contextIsolation,嚴格(ge)遵(zun)循 Electron 的安(an)全最(zui)佳實踐。這一變(bian)更能夠有效保護應用(yong)程序免受潛在(zai)(zai)的安(an)全漏洞威(wei)脅。
如果你的項目需(xu)要使用(yong)舊的行為模式,也不用(yong)擔心!可(ke)以通過 Window::webPreferences() 方法輕松(song)地為特定窗口重新啟用(yong) nodeIntegration。
?? 調整 Electron 后端
如果需要對底層 Electron 應(ying)用(yong)程(cheng)序進(jin)行深(shen)度定(ding)制,可(ke)以使用(yong)以下命令將其發布出(chu)來:
php artisan native:install --publish
這(zhe)個命令會將 Electron 項目導出(chu)到 {project-root}/nativephp/electron 目錄,讓(rang)開(kai)發者(zhe)能夠完全掌控 NativePHP 的所有內部實現細節。
?? 在應用中捆綁額外文件
開發(fa)者們(men)期待已久(jiu)的功能終于(yu)實現了!v2 支持(chi)在(zai)應用(yong)程序(xu)中捆(kun)綁額外的文件,這(zhe)些文件可以(yi)在(zai)運行(xing)時(shi)被訪(fang)問。這(zhe)個特性非(fei)常適合用(yong)來(lai)分發(fa)額外的資源文件,比如預編譯(yi)的可執行(xing)文件。
這一功能為 NativePHP 應用程序的能力邊界開辟了全新的可(ke)能性。
? 新的 ChildProcess::node() 方法
v2 新增了一(yi)個便(bian)捷的(de)方法,可以直接使用捆綁的(de) Node.js 運行時來執行 JavaScript 文件:
ChildProcess::node(
cmd: 'resources/js/filesystem-watcher.js',
alias: 'filesystem-watcher'
);
- 無需預先編譯 JavaScript 文件
- 在所有平臺上利用相同的 Node.js 版本
在測試(shi)方(fang)面(mian),ChildProcess fake 也提供了相應的方(fang)法,可以使用(yong) ChildProcess::assertNode() 來(lai)驗(yan)證 Node 調(diao)用(yong)。
?? 菜單欄窗口的 WebPreferences
v2 將 webPreferences 方法的(de)支持擴展到了菜單(dan)欄(lan)窗(chuang)(chuang)口!在(zai)(zai)之前的(de)版本中,這(zhe)個強大的(de)配(pei)置選項僅適(shi)用于常規窗(chuang)(chuang)口。現在(zai)(zai)開發(fa)者對(dui)菜單(dan)欄(lan)應用程(cheng)序也擁有了同樣級(ji)別(bie)的(de)控制能力。
?? 新的 Shell fake
新版本為測試提供(gong)了(le) Shell facade 的 fake 功能,允(yun)許開發者攔截和斷言 shell 交互(如打開文件、顯(xian)示文件夾或將(jiang)項目移至回收站)而無需真正(zheng)執行這些操作。
Shell::assertOpenedExternal('//some-url.test');
底層升級:Electron v38
v2 將底層框(kuang)架升級(ji)到了最新的(de) Electron v38,這意味著開發者可(ke)以(yi)享受到現代(dai) Electron 基礎(chu)帶來(lai)的(de)所有性能改進、安(an)全增強(qiang)和新功(gong)能。
重大變更 ??
與任(ren)何主要(yao)版本一樣,有一些需要(yao)注意的重大變更:
macOS 支持變更
重要提示: v2 不再支持(chi) macOS Catalina 和 Big Sur。這個變(bian)更是(shi)由于升(sheng)級到 Electron v38 所致(zhi)(zhi),目(mu)的(de)是(shi)與 Apple 官方支持(chi)的(de)操(cao)作系統版本(ben)保持(chi)一致(zhi)(zhi)。雖(sui)然(ran)大多數用戶(hu)不會受到影響(xiang),但建議在升(sheng)級前先檢查一下(xia)項(xiang)目(mu)的(de)部署目(mu)標系統。
安全默認設置
如前(qian)文所述(shu),nodeIntegration 在 v2 中(zhong)默認被禁用了。雖然這提高(gao)了應(ying)用的安(an)全性(xing),但可能會影響到依賴此功能的現有應(ying)用程序。好在開發者可以在需要的地方通過 Window::webPreferences() 方法輕松(song)重新啟用它(ta)。
升級到 v2
新(xin)版(ban)本的(de)包現在可以在 nativephp/desktop 倉庫中獲取。具(ju)體的(de)遷移步(bu)驟可以參考官方提供的(de)升級(ji)指南。
開始構建!
NativePHP for Desktop v2 現已正式可用(yong)。無論是升級現有(you)應(ying)用(yong)還是開(kai)啟新項目,這些新特性(xing)都(dou)值得(de)嘗試。
NativePHP for Desktop 始終保持(chi)免費和開(kai)源,項目(mu)團隊(dui)歡迎(ying)社區的貢獻和贊助(zhu),共同推(tui)動(dong)項目(mu)的持(chi)續發展。
如果你正在使用(yong) Laravel 開發(fa)桌面應用(yong),不妨(fang)試(shi)試(shi)這個強大的工具! ??
