PHP 开始做移动端,性能接近原生,但它真的能取代 Flutter 吗?

最近我看到一个叫 NativePHP Mobile 的东西,说实话第一反应是不信。PHP 都能写手机 App 了?以前咱们搞后端的,想做个移动端应用要么学 Flutter、React Native,要么找外包。现在倒好,composer 安装一下,跑个命令就能生成一个 iOS 和 Android 都能跑的原生应用。

我花了一个周末试了试,发现它真不是那些套个浏览器壳的假原生。比如我写了一个简单的按钮,点击手机就振动——这在以前纯 Web 页面是绝对做不到的。NativePHP 是直接把你的 PHP 代码通过一个中间层,转化成了系统自带的控件。也就是说,你在 iPhone 上看到的按钮就是 SwiftUI 的按钮,在 Android 上就是 Jetpack Compose 的按钮,不是网页截图。

性能也比我想象中好很多。官网上说 v3.1 版本把响应时间从两三百毫秒降到了几十毫秒,我自己试了一下,页面切换、数据加载基本感觉不到延迟。因为它的做法是把整个 Laravel 跑在手机本地,不需要联网请求服务器,就像电脑上装了个本地网站一样。

打开网易新闻 查看精彩图片

不过别急着吹它多牛。它的底层原理其实跟 React Native 有点像,都是通过一个“桥”把逻辑代码和原生控件连起来。但区别在于 React Native 用的是 JavaScript,NativePHP 用的是 PHP。而且为了在手机上跑 PHP,它得开启线程安全模式,这个模式本身会有一些性能损失。

所以它到底能打什么级别的应用?我觉得它特别适合内容型的 App,比如小说阅读器、宠物交流社区、房屋租赁展示这类。因为这些应用主要就是展示数据、表单提交、列表滚动,对动画和手势要求不高。正好咱们 PHP 后端开发者熟门熟路,把 Laravel 的代码原封不动搬到手机里就行。

但你要是想做抖音那种高帧率动画、复杂手势交互,或者游戏,那还是老老实实用 Flutter 吧。Flutter 用的是自己画的渲染引擎,可以控制每一个像素,而 NativePHP 说到底还是依赖系统的原生控件,在动画流畅度上追不上 Flutter。

打开网易新闻 查看精彩图片

再说生态。目前 NativePHP 的第三方插件还很少。你想接入支付、地图、推送,要么自己写桥接代码,要么等社区出包。而 React Native 和 Flutter 那边,基本上一搜一大把。万一你遇到崩溃或者奇怪的问题,网上的解决方案也少,可能得同时懂 PHP 和原生开发才能排查。

不过它最大的价值是让 PHP 开发者有了一条低成本进入移动端的路。以前我们团队做个移动端项目,前端要招人,后端也要招人。现在一个后端同学靠 Laravel 就能把页面和数据全搞定,哪怕界面丑一点,至少功能能跑通。对于小团队、创业公司或者企业内部用的工具型应用来说,这简直是个神器。

我试了一下后台队列和本地数据库,也挺顺手。文件处理、数据同步这些耗时的操作可以扔到后台,不卡界面。相当于你在手机上跑了一个完整的 Laravel 应用,只不过它不在服务器上,而在你的手机里。

打开网易新闻 查看精彩图片

技术选型其实没有银弹。你要是做超级 App,比如微信、抖音,那 Flutter 还是更好的选择。要是团队里全是 PHP 人,项目又是个内容社区或者记账本,那 NativePHP 就是最优解。它不是在跟 Flutter 抢市场,而是开了个新地盘——Laravel 原生开发。

最后说一句,别光听我叨叨,自己试一下最靠谱。运行一条 `php artisan native:run`,把你在电脑上的 Laravel 项目变成 App 装到手机上,感受一下它振动起来的感觉。也许它还有不少坑,但至少给了我们这些写 PHP 的人一个机会,让自己的代码真正落到用户手里。