NativePHP for Desktop v2 发布! 🚀

AI摘要
NativePHP for Desktop v2发布,主要更新包括:合并仓库统一维护、默认禁用nodeIntegration增强安全性、支持捆绑额外文件、新增ChildProcess::node方法、升级至Electron v38。需注意不再支持旧版macOS,建议开发者参考官方指南升级。

PHP 桌面端框架NativePHP for Desktop v2 发布!

NativePHP 团队正式发布了 NativePHP for Desktop v2!这是一个重要的主要版本更新,虽然包含一些向后兼容性的破坏性变更,但带来了显著增强的安全默认设置和许多实用的新特性。

让我们一起来看看这个版本有哪些值得关注的新内容和变更。

原文 PHP 桌面端框架NativePHP for Desktop v2 发布!

v2 的新特性

👋🏼 新仓库,新面貌

v2 已在统一的仓库 nativephp/desktop 下发布。这次更新将之前的两个独立仓库(nativephp/laravel 和 nativephp/electron)合并到了一个项目中。

这样的调整不仅与 nativephp/mobile 保持了一致性,也使得整个项目更易于维护,为未来的功能迭代提供了更好的基础。

值得注意的是,旧仓库仍然可用,官方团队会继续维护 v1 一段时间,但建议开发者尽快升级到 v2 以享受新特性。

🔒 默认增强安全性

v2 在安全性方面做了重要改进,开箱即用地提供了更好的安全默认设置。新版本默认禁用了 nodeIntegration 并启用了 contextIsolation,严格遵循 Electron 的安全最佳实践。这一变更能够有效保护应用程序免受潜在的安全漏洞威胁。

如果你的项目需要使用旧的行为模式,也不用担心!可以通过 Window::webPreferences() 方法轻松地为特定窗口重新启用 nodeIntegration。

🔧 调整 Electron 后端

如果需要对底层 Electron 应用程序进行深度定制,可以使用以下命令将其发布出来:

php artisan native:install --publish

这个命令会将 Electron 项目导出到 {project-root}/nativephp/electron 目录,让开发者能够完全掌控 NativePHP 的所有内部实现细节。

📦 在应用中捆绑额外文件

开发者们期待已久的功能终于实现了!v2 支持在应用程序中捆绑额外的文件,这些文件可以在运行时被访问。这个特性非常适合用来分发额外的资源文件,比如预编译的可执行文件。

这一功能为 NativePHP 应用程序的能力边界开辟了全新的可能性。

✨ 新的 ChildProcess::node() 方法

v2 新增了一个便捷的方法,可以直接使用捆绑的 Node.js 运行时来执行 JavaScript 文件:

ChildProcess::node(
    cmd: 'resources/js/filesystem-watcher.js',
    alias: 'filesystem-watcher'
);
  • 无需预先编译 JavaScript 文件
  • 在所有平台上利用相同的 Node.js 版本

在测试方面,ChildProcess fake 也提供了相应的方法,可以使用 ChildProcess::assertNode() 来验证 Node 调用。

🪟 菜单栏窗口的 WebPreferences

v2 将 webPreferences 方法的支持扩展到了菜单栏窗口!在之前的版本中,这个强大的配置选项仅适用于常规窗口。现在开发者对菜单栏应用程序也拥有了同样级别的控制能力。

🐚 新的 Shell fake

新版本为测试提供了 Shell facade 的 fake 功能,允许开发者拦截和断言 shell 交互(如打开文件、显示文件夹或将项目移至回收站)而无需真正执行这些操作。

Shell::assertOpenedExternal('https://some-url.test');

底层升级:Electron v38

v2 将底层框架升级到了最新的 Electron v38,这意味着开发者可以享受到现代 Electron 基础带来的所有性能改进、安全增强和新功能。

重大变更 ⚠️

与任何主要版本一样,有一些需要注意的重大变更:

macOS 支持变更

重要提示: v2 不再支持 macOS Catalina 和 Big Sur。这个变更是由于升级到 Electron v38 所致,目的是与 Apple 官方支持的操作系统版本保持一致。虽然大多数用户不会受到影响,但建议在升级前先检查一下项目的部署目标系统。

安全默认设置

如前文所述,nodeIntegration 在 v2 中默认被禁用了。虽然这提高了应用的安全性,但可能会影响到依赖此功能的现有应用程序。好在开发者可以在需要的地方通过 Window::webPreferences() 方法轻松重新启用它。

升级到 v2

新版本的包现在可以在 nativephp/desktop 仓库中获取。具体的迁移步骤可以参考官方提供的升级指南。

开始构建!

NativePHP for Desktop v2 现已正式可用。无论是升级现有应用还是开启新项目,这些新特性都值得尝试。

NativePHP for Desktop 始终保持免费和开源,项目团队欢迎社区的贡献和赞助,共同推动项目的持续发展。

如果你正在使用 Laravel 开发桌面应用,不妨试试这个强大的工具! 🚀

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
开发 @ 家里蹲开发公司
文章
126
粉丝
80
喜欢
439
收藏
307
排名:18
访问:28.7 万
私信
所有博文
社区赞助商