niyko / rocket
Rocket 是一个用 PHP 编写的静态网站生成器,底层使用 Laravel 的 Blade 模板引擎来生成构建。
Requires
- php: >=8.0.0
- dfridrich/php-mime-type: ^3.0
- eftec/bladeone: ^4.13
- nelexa/zip: ^4.0
- nicmart/string-template: ^0.1.3
- spatie/ignition: ^1.14
- statix/server: ^0.5.0
- symfony/console: ^6.4
- symfony/filesystem: ^6.4
- symfony/var-dumper: ^6.4
README
Rocket 是一个用 PHP 编写的静态网站生成器,底层使用 Laravel 的 Blade 模板引擎来构建静态网站。Rocket 自动化编码单个 HTML 页面的任务,并提前准备好这些页面以供用户使用。因为这些 HTML 页面是预先构建的,它们可以在浏览器中非常快地加载。
🎩 要求
Rocket 框架有一些系统要求。您应确保您的本地系统具有以下最低 PHP 版本和扩展
- PHP >=
8.0.0
- Composer >=
1.0.0
⚡ 开始
Rocket 框架可以从 composer 包管理器安装。在继续执行以下步骤之前,请确保您已从“要求”部分安装了 PHP 和 Composer。
- 创建一个项目文件夹,并在该文件夹内打开一个命令提示符。
- 运行命令
composer require niyko/rocket
来安装插件。 - 要设置项目,运行命令
php vendor/niyko/rocket/src/Console/Console.php --ansi create
- 探索复制到项目文件夹中的示例项目。
- 使用命令
composer rocket dev
运行示例项目。 - 在浏览器中打开命令提示符上显示的 URL。
您可以在项目中更改文件并重新加载浏览器以查看更改。不需要重新启动开发服务器。
📂 项目结构
此项目结构显示了所有不同文件的位置。Rocket 应用的文件夹结构概述。它涵盖了顶级文件和文件夹、配置文件和路由约定。
/index.php
文件包含页面的路由。/views
文件夹包含页面的 Blade 文件。/assets
文件夹包含images/css/js
和其他页面资产。/dist
文件夹包含创建构建时生成的静态网站。/build
文件夹包含构建生成的 zip 文件。
📌 创建页面路由
网站页面添加到位于项目目录根部的名为 index.php
的文件中。在此文件中,我们可以添加页面 URL 和为每个页面加载的视图。以下是一个 index.php
文件的示例。
<?php require __DIR__.'/vendor/autoload.php'; use Niyko\Rocket\Rocket; Rocket::init(); // A sample page is added like this Rocket::page('sample')->url('/')->view('sample')->add(); // Here is an example page added with long url Rocket::page('contact')->url('/about/contact')->view('contact-page')->add(); // Here is an example page added with URL paramters Rocket::page('blog.inner') ->url('/blog/{slug}', ['slug' => 'sample-blog-1']) ->view('blog-inner-page') ->add(); // Here is an example page with view parameters Rocket::page('blog.inner') ->url('/blog/{slug}', ['slug' => 'sample-blog-2']) ->view('blog-inner-page', ['title' => 'Sample blog two']) ->add(); Rocket::start();
🧿 创建页面视图
使用 Laravel 的 Blade 模板引擎来创建视图。视图文件存储在项目的 views
文件夹中。您可以从这篇文章中了解更多关于如何创建 blade 文件以及如何使用它们的信息:这篇文章。以下是一个如何使用的示例。
📄 index.php
<?php require __DIR__.'/vendor/autoload.php'; use Niyko\Rocket\Rocket; Rocket::init(); Rocket::page('blog.inner') ->url('/blog/{slug}', ['slug' => 'sample-blog-1']) ->view('blog-inner-page', ['title' => 'Sample blog one']) ->add(); Rocket::start();
📄 views/blog-inner-page.blade.php
<html> <body> <h1>{{ $title }}</h1> </body> </html>
🗃️ 使用资产
如图像、CSS、JavaScript 等资产存储在项目根目录的 assets
文件夹中。您可以使用 blade 中的 asset()
函数链接资产。框架自动管理文件缓存参数。以下是一个 asset()
函数的示例。
📄 views/sample.blade.php
<html> <head> <link rel="stylesheet" href="{{ asset('css/styles.css') }}"> </head> <body> <h1>Hello world</h1> <img src="{{ asset('images/hello.png') }}"> </body> </html>
🔗 链接到其他页面
在Rocket框架中,我们可以使用函数page()
来创建其他页面的链接。这可以用于<a>
链接的其他方法。基本上,page()
函数通过在index.php
文件中给出的路由创建到页面的链接。以下是一个示例。
📄 index.php
<?php require __DIR__.'/vendor/autoload.php'; use Niyko\Rocket\Rocket; Rocket::init(); Rocket::page('about')->url('/about')->view('about-page')->add(); Rocket::page('contact')->url('/about/contact')->view('contact-page')->add(); Rocket::page('blog.inner') ->url('/blog/{slug}', ['slug' => 'sample-blog-1']) ->view('blog-inner-page', ['title' => 'Sample blog one']) ->add(); Rocket::start();
📄 views/about-page.blade.php
<html> <body> <h1>About</h1> <a href="{{ page('contact') }}">Go to contact us</a> <a href="{{ page('blog.inner', ['slug' => 'sample-blog-1']) }}">Go to sample blog page</a> </body> </html>
📦 生产构建
运行composer rocket build
将生成您应用程序的生产优化版本。HTML、CSS和JavaScript文件基于您的页面创建。此构建存储在dist
文件夹中,并在build
文件夹中保存相同的压缩版本。
🚀 部署
由于构建的最终输出是基于静态HTML的网站,您可以按需使用它们。要测试构建,可以使用命令composer rocket run
。这将创建一个服务器,在该服务器上运行构建中创建的静态文件。
composer rocket run
不应用于在生产中托管构建。此命令仅应用于测试目的。建议在生产中使用Ngnix
或Apache
作为服务器。
📃 许可证
Rocket遵循MIT许可证。