当前位置:首页>php>NativePHP super-native:从 PHP 渲染完全原生 Android UI — 无 JavaScript,无 WebViews

NativePHP super-native:从 PHP 渲染完全原生 Android UI — 无 JavaScript,无 WebViews

  • 2026-09-10 17:30:06
NativePHP super-native:从 PHP 渲染完全原生 Android UI — 无 JavaScript,无 WebViews

如果你是一个 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 个组件演示,使用模拟数据复制流行应用界面:

列表

  • Airbnb 风格的探索动态(默认激活)
  • 列表详情页

社交

  • Twitter 动态和个人资料
  • Instagram 动态和搜索
  • Facebook 动态和个人资料

电商

  • IKEA 商店、购物车和搜索
  • iHerb 商店、购物车和分类

娱乐

  • Spotify 主页、播放列表和艺术家页面
  • YouTube 主页、视频和频道

简单

  • 递增/递减计数器(如果你想要最小化起点,这是个好选择)

让它脱颖而出的地方:这里的每一个 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>

幕后会发生三件事:

  1. Laravel 如常渲染页面。
     Blade 被处理,但 <native:*> 组件不会转换为 HTML——它们被收集到一个结构化数组中。
  2. 该数组被序列化为干净的 JSON。
     这个 JSON 以平台无关的格式描述你的布局——不是 HTML 标记,而是组件蓝图。
  3. 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 团队的积极开发中。

仓库本身明确指出这是一个 演示和参考应用,不是生产模板。这意味着:

  • API 随时可能改变
  • 今天可用的组件在最终发布中可能看起来不同
  • 更新之间可能有破坏性变更 *仅限 Android——此演示不支持 iOS

如果你计划一个跨平台生产应用,这是一个严肃的考虑因素。

那么,为什么现在就讨论它,如果它还没准备好?

因为这正是正确的时间。有趣的技术值得及早关注——不是立即部署,而是当它成熟并突然每个人都在使用时,你不会措手不及。最好已经理解概念,自己运行过,知道它如何工作——这样当稳定版发布时,你就能快速行动。

现在,正确的行动是:试试它,探索它,并继续关注。 给 GitHub 仓库加星,订阅 NativePHP 通讯,并在有重大更新时检查。如果你想更进一步,团队对问题和 PR 很响应——NativePHP 周围的社区正在稳步增长。

这不是可以跳过的东西。这是值得 收藏并等待 的。

NativePHP 与替代方案

如果你是一个 Laravel 开发者,正在权衡选项,这里是一个诚实的分解:

NativePHP

  • 语言→PHP + Blade
  • 对 Laravel 开发者的学习曲线→低——无需学习新生态系统
  • 原生 UI→是的,通过 EDGE
  • 状态→积极开发中,还未生产就绪
  • 最适合→CRUD 应用、内部工具、MVP、已深度使用 Laravel 的团队

React Native

  • 语言→JavaScript/TypeScript
  • 对 Laravel 开发者的学习曲线→中等——JSX 和 JS 生态系统是新领域
  • 原生 UI→是的
  • 状态→成熟且生产就绪
  • 最适合→具有丰富库生态系统的复杂消费者应用

Flutter

  • 语言→Dart
  • 对 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 是一个参考和演示——不是生产就绪的。

所以你今天能做的最好的事归结为三步:

  1. 自己试试。
     克隆仓库,运行四个命令,看看 Airbnb 或 Spotify UI 如何从你的 PHP 代码在 Android 上原生渲染。
  2. 理解概念。
     EDGE、服务器驱动 UI、原生元素——这些是定义 NativePHP 未来工作方式的构建块。
  3. 耐心关注。
     关注 GitHub 仓库和 NativePHP 博客。当这个功能成熟并达到生产就绪时,你已经领先一步。

因为归根结底,最有准备的开发者不是立即采用每项新技术的人——而是知道何时探索、何时等待的人。

对于 NativePHP super-native?现在是探索的时候。生产稍后。

参考:github.com/NativePHP/super-native · nativephp.com/docs/mobile · nativephp.com/blog · YouTube 演示

最新文章

随机文章