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

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 应用程序进行深度定制,可以使用以下命令将其发布出来:

bash 复制代码
php artisan native:install --publish

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

📦 在应用中捆绑额外文件

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

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

✨ 新的 ChildProcess::node() 方法

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

php 复制代码
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 交互(如打开文件、显示文件夹或将项目移至回收站)而无需真正执行这些操作。

php 复制代码
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 开发桌面应用,不妨试试这个强大的工具! 🚀

相关推荐
yhole4 小时前
springboot 修复 Spring Framework 特定条件下目录遍历漏洞(CVE-2024-38819)
spring boot·后端·spring
BingoGo4 小时前
Laravel 13 正式发布 使用 Laravel AI 无缝平滑升级
后端·php
l软件定制开发工作室4 小时前
Spring开发系列教程(34)——打包Spring Boot应用
java·spring boot·后端·spring·springboot
随风,奔跑4 小时前
Spring MVC
java·后端·spring
美团技术团队5 小时前
美团 BI 在指标平台和分析引擎上的探索和实践
后端
JimmtButler5 小时前
我用 Claude Code 给 Claude Code 做了一个 DevTools
后端·claude
Java水解5 小时前
Java 中实现多租户架构:数据隔离策略与实践指南
java·后端
Master_Azur5 小时前
Java面向对象之多态与重写
后端
ywf12156 小时前
Spring Integration + MQTT
java·后端·spring
武超杰6 小时前
SpringMVC核心功能详解:从RESTful到JSON数据处理
后端·json·restful