talesoft/tale-pug

一个干净、轻量级且易于使用的基于 Pug(前身为 Jade)的 PHP 模板引擎

1.5.2 2018-02-20 14:50 UTC

README

GitHub release Travis Packagist HHVM License

终于,一个完全功能、完整且干净的 Pug/Jade 语言的 PHP 版本

—— 亚伯拉罕·林肯

Tale Pug 模板引擎将流行的强大模板语言 PugJS(前身为 Jade)带到 PHP!

Tale Pug 是目前 PHP 中第一个完整且功能最强大的 Pug 实现。

内容

什么是 Tale Pug

这是一个不关注抽象 PHP,而专注于抽象 HTML 的模板引擎。

为什么还需要另一个模板引擎?,你可能会问。

像 Twig 或 Blade 这样的模板引擎很酷且功能强大,但它们都缺少一个共同点:HTML 抽象

您仍然需要编写所有那些标签、括号和引号,您需要关闭标签并确保您的结构一致。这很冗长,在大型的网站上很快就会占用大量的空间。

类似于 HAML,但更简洁,Tale Pug 结合了这两种方法,它既抽象了 PHP,也抽象了 HTML。它基于缩进来创建尽可能干净和快速的 HTML,并使用简单的 CSS 选择器。它还涉及许多动态特性,您不再需要任何 HTML 或 PHP 代码来编写模板。只需 Tale Pug 即可。

此外,Tale Pug 可以通过其语法处理不同的输出格式。这样,您可以通过更改 doctype 来使用 Tale Pug 为 HTML5、XHTML 或 XML 模板,它将自动确保始终渲染有效的标记。

以下是一些示例、功能链接、文档链接和一个沙盒,您可以在其中玩耍。检查它们!

不要害怕语法。让我强调这一点,因为我看到很多人 害怕 Jade 语法。它基本上是基于缩进的 CSS 选择器和一些控制您输出的字符。一旦您使用它编写了一些模板,我保证,您会喜欢它的

入门

使用 Composer 安装

下载 Composer

Tale Pug 的 composer 包名为 talesoft/tale-pug

如果您想立即开始,请连接 composer 并运行

$ composer require "talesoft/tale-pug:*"

或者自行将其添加到 composer.json

{
    "require": {
        "talesoft/tale-pug": "^1.5.0"
    }
}

注意:如果您不使用 composer,请确保还包括 Compiler/functions.php 文件

渲染 Pug 模板

在您的 PHP 脚本中包含 composer 的 vendor/autoload.php 文件,并开始使用 Tale Pug!

use Tale\Pug;

//Include the vendor/autoload.php if you're using composer!
include('vendor/autoload.php');

$renderer = new Pug\Renderer();

echo $renderer->render('your-pug-file');

这样,渲染器将在您的 get_include_path()-路径中搜索 your-pug-file.pug。请注意,传递给 render 的路径应该是相对的。您也可以提供绝对路径,但这会使缓存更难。

我们将在下面的 基本配置 部分中展示如何添加其他搜索路径。

当 Jade 文件被渲染时,会自动创建一个 ./cache/views 目录,编译后的 PHTML 将存储在该目录中。

要更改此目录,请使用 cache_path 选项

$renderer = new Pug\Renderer([
    'cache_path' => '/your/absolute/cache/path'
]);

每次调用时,Pug 文件将被渲染到该目录。

要启用不会在每次调用时渲染文件的缓存,请使用 file-适配器的 ttl 选项。

$renderer = new Pug\Renderer([
    'ttl' => 3600 //Will cache the file for 3600 seconds (one hour)
]);

基本配置

要启用 PHTML 输出的格式化,请使用 pretty 选项。

$renderer = new Pug\Renderer([
    'pretty' => true
]);

如果您不想使用 get_include_path() 路径(这实际上可能在某些情况下存在安全风险),请向 Renderer 传递您自己的搜索路径。渲染和包含的 Pug 文件将在这些路径中搜索,而不是在 get_include_path() 路径中。

//Either with
$renderer = new Pug\Renderer([
    'paths' => [__DIR__.'/views']
]);

//or with
$renderer->addPath(__DIR__.'/views');

一旦您传递了 任何 路径,将禁用从 get_include_path() 路径的加载,并且您始终从传递的目录/目录加载。

要向 Pug 文件传递变量,请使用 render 方法的第二个参数。

echo $renderer->render('index', [
    'title' => 'Pug is awesome!',
    'content' => 'Oh yeah, it is.'
]);

这些可以在 Pug 中作为正常变量使用。

h1= $title

+content-block($content)

支持的功能

Tale Pug 支持原始 Pug 实现支持的所有单个功能!这始终是主要目标。

但是,为什么要止步于此?PHP 有它自己的特性,这些特性肯定与 JavaScript 的不同。通过利用这些特性,它旨在将更多兼容的特性引入语言,以实现最快的模板开发!

您可以在我的 sandbox 网站 上尝试每个功能并查看大量示例。

支持官方 PugJS 功能

支持 Tale Pug 功能

其他酷炫特性

  • 使用 ? 标志为简单的变量执行自动 isset 检查以禁用此行为。
  • 内置 Markdown、CoffeeScript、LESS、SCSS/SASS 和 Stylus 支持。
  • 可用于 HTML/-PHP 输出的可转义文本。
  • 通过 PHP 的 mb_* 扩展支持 UTF-8。
  • 检测和任何您喜欢的缩进类型的支持。
  • 可黑客攻击和可定制的渲染器、编译器、解析器和词法分析器。
  • 大量(可选)配置可能性。
  • 宽容的编译器,对许多错误(例如代码周围的空格)都有所宽容。
  • 闪电般快速且干净的编译。
  • 详细的错误处理。
  • 具有不同适配器的渲染器。
  • 基于括号计数的智能表达式解析。
  • 大量可用文档。
  • 经过良好测试且积极维护。

还有更多...

Tale Pug 在许多项目中积极使用和开发,并且不断改进。

它不坚持 Pug 规范,但始终提供与 PugJS 的兼容性,以帮助减少混淆。

计划中的功能

  • 命令行工具
  • 导入属性(include some-file(some-var='some-value')
  • 辅助库(自定义辅助库)
  • 别名(类似于混入,但更小)
  • 用于轻松创建网站的 Tale Pug 工具包
  • Stylus 集成
  • CoffeeScript 集成
  • Markdown 集成
  • 扩展和包管理器

文档资源

Tale Pug Sandbox 一个用于您在浏览器中玩耍的编译器,以及大量示例,以让您了解 Tale Pug 的能力。

Tale Pug API 文档 Tale Pug 源代码的文档。使用 phpDocumentor 生成,但相当有用。

官方 PugJS 文档 真正的东西。这是我所有工作的起点。语法相同,只是代码表达式不同。

Tale Pug Bootstrap 一款快速启动项目,帮助您快速上手。将其分支、下载并尝试使用它。在启动之前,不要忘记运行 composer install下载Composer

开发测试文件 我测试引擎时使用的示例文件。

Tale Pug 单元测试 我使用的单元测试来确保稳定性。将不断添加新的测试,大多数功能都在这里。虽然是PHP代码。

Tale Pug 为您喜欢的框架

您正在使用一个已经拥有模板引擎的框架,但您真的想尝试Pug?无需再寻找。

感谢Tale Pug社区,现有框架中已有一些模块可以轻松使用Tale Pug!

请注意,其中一些需要更新,因为这个库最近被重命名了。在这种情况下,您可以自由使用旧的Jade实现,唯一不同的是,您的文件必须使用 .jade.jd 扩展名。

Laravel 框架

Symfony 2/3

Yii2 框架

SimpleMVCFramework

CakePHP 3

FlightPHP

Symphony XSLT CMS

如果您喜欢的框架中缺少这些,请发送邮件给我们,我们会尽快提供一个桥接器!

非常感谢这些模块的贡献者!

联系我并支持我的工作

如果您发现了一个错误或缺少一个功能,请使用此页面的 问题 告诉我。我会很高兴听取您的意见 :)

如果这个库帮助了您,简化了您的工作,您简直无法没有它,请考虑支持我的工作,并请我喝杯咖啡。谢谢!

如果您想做出贡献,请分支、发送拉取请求,我会仔细查看您所做的工作!Tale Pug是完全 开源 的!只要您遵守我附加的 MIT许可证,您可以随意使用代码。只要在我的名字周围保留一下即可!

您也可以通过电子邮件 torben@talesoft.codes 联系我

感谢您使用Tale Pug。让我们共同传播Pug语言!