1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/ryan1981-jk-build-html

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

JKBuildHtml: статический генератор сайтов на основе ThinkPHP

Введение

Идеальное решение для создания статических сайтов без изменения процесса разработки на ThinkPHP 5.0 и 5.1. Позволяет настраивать правила генерации, поддерживает динамические параметры и настройку диапазона параметров.

Build static site, build html file for THINKPHP framework.

Подходит для TP 5.0 и 5.1

Этот инструмент подходит для обеих версий ThinkPHP, TP 5.0 и TP 5.1, поскольку TP 5.1 имеет больше изменений по сравнению с TP 5.0, проект был адаптирован к обеим версиям.

Особенности

  • Чистый статический: сгенерированный сайт представляет собой статическую HTML-страницу, копирование файлов — это развёртывание сайта.
  • Удобство модификации: исходный код разработки TP не нужно изменять, исходные файлы просмотра TP можно продолжать писать как обычно, и шаблоны можно создавать так же, как и раньше.
  • Генерация HTML в процессе разработки: рекомендуется инкапсулировать метод fetch контроллера, чтобы просматривать статические эффекты во время разработки и избегать проблем с отображением после повторного развёртывания. Вы можете следить за изменениями статической страницы, нажимая F5 в каталоге public/dist, или использовать исходный путь TP или маршрут для просмотра шаблонов.

Установка

composer require jkbuildhtml/jkbuildhtml

Конфигурация

Процесс настройки состоит из трёх шагов:

  1. Создайте файл правил статической генерации dist_rules.php в каталоге приложения.
  2. Добавьте параметры конфигурации (имя файла конфигурации для TP5 — config.php, для TP5.1 — app.php):
// Путь размещения статического сайта:
'dist_path' =>  'public/', 
// Имя папки для хранения статических страниц сайта, обычно помещается в public; прямой доступ к этому каталогу приведёт к статическому сайту:
'dist_dir_name' => 'dist', 
// Каталог хранения подстраниц статических страниц, то есть страниц без символа @ в правилах, обратите внимание, что путь в примере будет использоваться в качестве замены для ./ или ../, поэтому рекомендуется сделать имя каталога уникальным в папке проекта:
'dist_sub_dir' => 'site-pages', 
// Название модуля для генерации статических страниц:
'dist_module_name' => 'index', 
// Разделитель параметров в именах файлов статических страниц:
'dist_file_dot' => '_', 
// Статический путь к ресурсам, статический корневой каталог сайта заменит `./` на другие пути, которые будут заменены на `../`:
'dist_src_match' => '/public/static/'
  1. Если требуется генерация статических страниц для определённых модулей, вы можете инкапсулировать метод fetch в контроллере.

Использование

Пример использования

$builder = new \JKBuildHtml\Builder()

Пакетная генерация статических страниц

Поместите следующий код в любой контроллер для пакетной генерации всех статических страниц. Просто поместите его в подходящее место на бэкэнде. Страницы отображаются построчно, если вы хотите использовать AJAX, вам придётся написать код самостоятельно.

$builder->buildAll();

Генерация одной статической страницы

Также можно генерировать отдельные страницы. Обычно это реализуется в виде кнопки «Создать страницу» в каждой строке списка данных.

$builder->buildOne($path, ['id' => 5]);

Обратите внимание, что при генерации отдельной страницы путь должен быть указан в соответствии с правилами статической генерации и должен быть объявлен в файле правил, иначе будет выдана ошибка. Вы также можете инкапсулировать метод fetch в TP-контроллере, чтобы генерировать страницы во время процесса разработки.

protected function fetchHtml()
{
    $builder = new \JKBuildHtml\Builder();
    $builder->buildFromFetch( $html = $this->fetch(), input('get.') );
    return $html;
}

Примечания

  • Все статические ресурсы, такие как JS, CSS и файлы для загрузки, должны быть размещены в папке dist_dir_name, указанной в конфигурации, статическая страница будет обращаться к этим ресурсам. Если они находятся вне этой папки, доступ к ним будет невозможен, за исключением случаев, когда папка сайта не является этой папкой.
  • Все ключи в файлах правил статической генерации должны быть написаны строчными буквами.
  • Пути в правилах статической генерации могут быть любыми путями, доступными для запросов, но рекомендуется не использовать динамические параметры маршрутов TP.
  • Поддерживаются только запросы GET.

О статических путях к ресурсам

В ThinkPHP ресурсы обычно размещаются в общей папке, но с появлением статического генератора ресурсов необходимо следовать определённым правилам:

  • Сначала создайте папку dist в общей папке (dist происходит от build в проектах JavaScript, здесь он используется повторно; вы также можете изменить конфигурацию).
  • Затем поместите все статические ресурсы в эту папку, включая JS, CSS, изображения и т. д.
  • Поместите загруженные файлы в папку dist.
  • После завершения генерации в этой папке будут созданы соответствующие HTML-страницы.

Правила статической генерации

Файл правил статической генерации dist_rules.php

  • Примечание: этот файл не является файлом маршрутизации, он отличается от маршрутизации TP. Ключ-значение описывает:
  • Ключ представляет собой имя файла статической страницы: символ @ обозначает папку dist, @index представляет домашнюю страницу, а остальные страницы без @ будут генерироваться в папке site-pages; все ключи должны быть строчными.
  • Значение представляет собой путь модуля статической страницы (то есть контроллер, метод и параметры), который будет напрямую запрашиваться во время генерации. Путь к ссылке в шаблоне TP записывается в соответствии с ключом, и в нём не должно быть символа @.
<?php
// +----------------------------------------------------------------------
// | 生成静态页的规则文件
// +----------------------------------------------------------------------
return [
     // Это домашняя страница с символом @, которая будет сгенерирована в папке dist; страницы без @ будут сгенерированы в подпапке site-pages
    '@index'        => 'index/index', 
    '@news'         => 'news/index',
    
    // Это страница с параметром db, представляющая собой запрос к таблице article по id, и каждая страница будет генерироваться циклически
    'news_:id'      => ['news/find', 'article'],  
    
    // Эта страница имеет пользовательский метод, который представляет собой выполнение метода getjobis для возврата массива с идентификаторами, и каждая страница будет циклически генерироваться
    'job_:id'       => ['jobs/find', 'func:getjobids'],  
    
    // Этот запрос представляет собой модуль/контроллер/метод TP, возвращающий двумерный массив
    'job_:id_:code' => ['index/index', 'func:dist/index/test'], 
];
  • Ключи с двоеточием обозначают наличие динамических параметров, и страницы будут генерироваться в папке site-pages.

  • Параметры должны соответствовать именам столбцов таблицы базы данных.

  • Чтобы избежать ошибок генерации, разделите разные параметры знаком подчёркивания (_).

  • Значения могут представлять собой «путь запроса», который может быть записан в формате «контроллер/метод», и система автоматически добавит имя модуля при запросе.

  • Значение также может быть массивом, первый элемент которого является путём запроса, второй — именем таблицы базы данных, а третий — условием запроса. Например, 'id < 100' будет передано в условие where запроса.

  • Если вы хотите добавить условия запроса к параметрам, добавьте их в третий элемент массива. Например: 'id < 100'.

  • Если вы хотите создать функцию для генерации идентификаторов, поместите имя функции во второй элемент массива, например: ['func:admin/index/getJobIds'].

  • Тип func может иметь третий параметр, который будет передан в функцию.

  • При использовании типа func возвращаемое значение функции должно быть двумерным массивом с параметрами в качестве ключей. Например: ['id' => [2,3,4,5]].

  • Функция типа func может принимать третий параметр.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/ryan1981-jk-build-html.git
git@api.gitlife.ru:oschina-mirror/ryan1981-jk-build-html.git
oschina-mirror
ryan1981-jk-build-html
ryan1981-jk-build-html
master