
如果你是一个 Laravel 开发者,你可能有过那样的时刻。客户凑过来,随口说:“哦,顺便,你能再做一个移动版吗?”
你的脑子里立刻就想:“我现在得学 Swift 或 Kotlin 了?这得花好长时间啊……”
这正是 NativePHP 旨在消除的恐慌。但让它更有趣的不是“它能在移动设备上运行”——而是一个名为 super-native 的参考应用,它展示了真正令人惊讶的东西:Airbnb 风格的列表、Twitter 动态、Spotify 主页、Instagram 搜索——所有这些都渲染为真正的原生 Android UI 组件,完全用 PHP 和 Blade 编写。没有一行 JavaScript。
本文将分解 super-native 是什么、为什么重要,以及它内部的工作原理。
首先,让我们谈谈问题
大多数想要发布移动应用的 Web 开发者会面临两条熟悉的路径:
选项 1 — 从零开始学习。 iOS 用 Swift,Android 用 Kotlin。每种都有自己的生态系统、工具链和怪癖。如果你已经在 Laravel 上花了好几年,这感觉就像搬到一个外国国家,被告知必须先学会语言才能做任何有用的事。
选项 2 — 走混合路线。 React Native、Flutter 或 Ionic。更好一些,但仍然是一个新生态系统——Dart、TypeScript 或你从未接触过的 JavaScript 工具。而且结果呢?有时它仍然感觉不太原生。
NativePHP 提出第三条路径:留在 Laravel,留在 Blade,并获得真正原生的输出。
NativePHP super-native 是什么?
super-native 是 NativePHP 团队的官方演示应用,可在 GitHub 上获取,地址为 github.com/NativePHP/super-native。
目标很简单:证明 NativePHP 能够渲染复杂的原生 Android UI——不是 WebView,不是样式化的 HTML——而是真正的 Android 系统组件。
在仓库中,你会找到超过 30 个组件演示,使用模拟数据复制流行应用界面:
列表
社交
电商
娱乐
简单
- 递增/递减计数器(如果你想要最小化起点,这是个好选择)
让它脱颖而出的地方:这里的每一个 UI 都渲染为真正的原生 Android 组件。 不是截图。不是用 CSS 伪装的 HTML。真正原生。
它是如何工作的?
这是技术上最引人入胜的部分。
NativePHP 使用他们称之为 EDGE — Element Definition and Generation Engine 的系统。概念简单但优雅。
当你这样编写 Blade 时:
<native:bottom-nav><native:bottom-nav-itemid="home"icon="home"label="Home"url="/home" /><native:bottom-nav-itemid="explore"icon="search"label="Explore"url="/explore" /></native:bottom-nav>
幕后会发生三件事:
- Laravel 如常渲染页面。 Blade 被处理,但
<native:*> 组件不会转换为 HTML——它们被收集到一个结构化数组中。 - 该数组被序列化为干净的 JSON。 这个 JSON 以平台无关的格式描述你的布局——不是 HTML 标记,而是组件蓝图。
- JSON 通过响应头发送回原生应用。 在 Android 端,它被拦截、解析,并在实时中渲染原生 UI。
结果呢?你仍然在编写 Laravel。你仍然在使用 Blade。但出现在手机屏幕上的却是 真正的操作系统原生 UI 组件——不是重新绘制的 WebView。
想象一下,这就像服务器驱动的 UI,只不过一切都在设备上发生。PHP 直接与原生层对话,没有网络往返。
自己试试:运行 super-native
这个仓库最好的地方之一就是它启动得有多快。你需要 Composer 和 Android Studio(带模拟器或连接的 Android 设备)。
# 1. 克隆仓库git clone https://github.com/NativePHP/super-native.git && cd super-native# 2. 安装依赖composer install# 3. 安装 NativePHPphp artisan native:install# 4. 在 Android 上运行php artisan native:run android -W --no-vite
四个命令。应用会在 Android 上启动,默认激活 Airbnb 风格的 UI。
想切换到 Twitter 演示?打开 routes/web.php,注释掉 Airbnb 路由,取消注释 Twitter 路由:
// Airbnb (默认)// Route::native('/', \App\NativeComponents\Explore::class);// Twitter - 启用这个Route::native('/', \App\NativeComponents\TwitterFeed::class);
保存文件,UI 会立即更新。不需要完整重新编译。
一个感觉像家的项目结构
如果你打开仓库,文件夹结构对任何 Laravel 开发者来说都会立刻感到熟悉:
app/NativeComponents/ ← 原生 UI 组件(演示在这里)app/NativeComponents/Concerns/ ← 共享 trait(模拟数据等)resources/views/native/ ← 使用 <native:*> 元素的 Blade 模板routes/web.php ← Route::native() 定义
没有神秘的 ios/ 或 android/ 文件夹塞满 XML 配置文件。一切都正好在你期望的位置。
一个真实示例:构建 Twitter 风格的动态页
假设你想构建一个类似于 Twitter 的动态页。在 super-native 中,TwitterFeed 组件大致是这样工作的:
// app/NativeComponents/TwitterFeed.phpclassTwitterFeedextendsNativeComponent{useHasMockTweets;publicfunctionrender(){return view('native.twitter-feed', ['tweets' => $this->getMockTweets(), ]); }}
以及 Blade 模板:
{{-- resources/views/native/twitter-feed.blade.php --}}<native:scroll-view> @foreach($tweets as $tweet) <native:list-item avatar="{{ $tweet['avatar'] }}" title="{{ $tweet['username'] }}" subtitle="{{ $tweet['content'] }}" timestamp="{{ $tweet['time'] }}" /> @endforeach</native:scroll-view>
输出是一个渲染为原生 Android 列表项的动态。流畅滚动。原生感觉。用 PHP 编写。
为什么这不仅仅是一个演示
你可能在想:“当然,这是个演示。但生产环境你还是会用更合适的东西,对吧?”
公平的观点。但有几件事让 super-native 不仅仅是个噱头:
首先,它证明了可行性。 在你投资时间学习新东西之前,想要一个真正的概念验证是合理的。super-native 提供了这个——用 30+ 个复杂演示,而不仅仅是一个基本计数器。
其次,架构考虑周到。 EDGE 不是权宜之计。它是一个精心设计的系统——属性验证、热重载支持、浅色/深色模式兼容性。忘记传递必需的属性,错误会很清楚:
EDGE Component <native:bottom-nav-item> is missing required properties: 'label'.Add these attributes to your component: label="..."
第三,生态系统正在增长。 NativePHP v3(也称为 NativePHP Air)于 2026 年 2 月以 MIT 许可免费推出。像 SecureStorage、Geolocation、Gallery Picker、相机和生物识别这样的原生插件都可以通过 Composer 获取。只安装你需要的——没有多余的东西被打包到你的构建中。
重要提示:此功能仍在积极开发中
在你过于兴奋并开始规划生产应用之前,有一件事值得直言不讳。
super-native——以及整个原生元素渲染系统——仍在 NativePHP 团队的积极开发中。
仓库本身明确指出这是一个 演示和参考应用,不是生产模板。这意味着:
- 更新之间可能有破坏性变更 *仅限 Android——此演示不支持 iOS
如果你计划一个跨平台生产应用,这是一个严肃的考虑因素。
那么,为什么现在就讨论它,如果它还没准备好?
因为这正是正确的时间。有趣的技术值得及早关注——不是立即部署,而是当它成熟并突然每个人都在使用时,你不会措手不及。最好已经理解概念,自己运行过,知道它如何工作——这样当稳定版发布时,你就能快速行动。
现在,正确的行动是:试试它,探索它,并继续关注。 给 GitHub 仓库加星,订阅 NativePHP 通讯,并在有重大更新时检查。如果你想更进一步,团队对问题和 PR 很响应——NativePHP 周围的社区正在稳步增长。
这不是可以跳过的东西。这是值得 收藏并等待 的。
NativePHP 与替代方案
如果你是一个 Laravel 开发者,正在权衡选项,这里是一个诚实的分解:
NativePHP
- 对 Laravel 开发者的学习曲线→低——无需学习新生态系统
- 最适合→CRUD 应用、内部工具、MVP、已深度使用 Laravel 的团队
React Native
- 对 Laravel 开发者的学习曲线→中等——JSX 和 JS 生态系统是新领域
Flutter
- 对 Laravel 开发者的学习曲线→高——Dart 是一门全新的语言
- 原生 UI→近原生(使用自己的渲染引擎,而不是原生小部件)
NativePHP 并不总是正确选择——对于今天就需要生产的复杂消费者应用,React Native 和 Flutter 有更丰富、更稳定的生态系统。但对于已经全盘使用 Laravel 的团队,价值主张很明确:无需学习新语言,无需新招聘,也无需抛弃你已知的工具链。
想看它实际运行吗?
如果你更喜欢看视频而不是读文档,NativePHP 团队有一个演示视频展示 super-native 的实时运行:
📺 NativePHP super-native — 官方演示
你可以看到 Airbnb 列表、Twitter 动态和 Spotify 主页在 Android 上原生渲染——在真实设备上实时运行,从 PHP 代码。
最终想法:收藏它,试试它,等待它
NativePHP super-native 是 PHP 生态系统中目前最真正有趣的事情之一。Laravel 开发者可以用 Blade 编写并渲染为原生 Android UI 的想法——两三年前这还不是主流。
但老实说:它还没完成。 NativePHP 团队仍在积极构建这个。事情会改变。仓库清楚地表示 super-native 是一个参考和演示——不是生产就绪的。
所以你今天能做的最好的事归结为三步:
- 自己试试。 克隆仓库,运行四个命令,看看 Airbnb 或 Spotify UI 如何从你的 PHP 代码在 Android 上原生渲染。
- 理解概念。 EDGE、服务器驱动 UI、原生元素——这些是定义 NativePHP 未来工作方式的构建块。
- 耐心关注。 关注 GitHub 仓库和 NativePHP 博客。当这个功能成熟并达到生产就绪时,你已经领先一步。
因为归根结底,最有准备的开发者不是立即采用每项新技术的人——而是知道何时探索、何时等待的人。
对于 NativePHP super-native?现在是探索的时候。生产稍后。
参考:github.com/NativePHP/super-native · nativephp.com/docs/mobile · nativephp.com/blog · YouTube 演示