niyko/rocket

Rocket 是一个用 PHP 编写的静态网站生成器,底层使用 Laravel 的 Blade 模板引擎来生成构建。

1.0.2 2024-07-04 12:02 UTC

This package is auto-updated.

Last update: 2024-09-04 16:41:47 UTC


README

Rocket logo 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不应用于在生产中托管构建。此命令仅应用于测试目的。建议在生产中使用NgnixApache作为服务器。

📃 许可证

Rocket遵循MIT许可证