为什么要使用 Phalcon 的 Assets Manager 应用过滤器?

Why use Phalcon's Assets Manager to apply Filters?

我正在 Phalcon 中创建一个包含主题管理器的应用程序。主题只不过是 .scss.volt 文件的集合。当然,这些 .scss 是在使用之前构建的。

我一直在测试 Phalcon 的资产管理器。除了创建自定义过滤器等的一些困难之外,我开始怀疑:为什么有人会一直构建他们的文件?这会使每个请求慢得多。 Phalcon 是否缓存这些资产?

此外,在开发主题或进行大量前端工作时,查看源 sass 文件的更改很有用。这在 Phalcon 中可行吗?

根据 manual,对资产集合使用 ->setTargetPath() 可以将所有选定的文件保存到一个位置。如果你有一些脚本你总是包含在你的页面中,你可以将它们合并到一个文件中,同时通过过滤器过滤器缩小。代码片段会有点像这样:

$controller->assets->collection('jsGlobal')
    ->addJs('libs/jquery.js', true)
    ->addJs('libs/jquery-ui.js', true)
    ->setTargetPath('js/global.js')
    ->setTargetUri('js/global.js')
    ->join(true)
    ->addFilter(new \Phalcon\Assets\Filters\Jsmin());

您可能需要检查它是否已经在该 js/global.js 位置下构建脚本,以防止在生产环境中一遍又一遍地构建它。这样,在制作部署脚本时,您只需删除生产服务器上的某些文件即可。

我正在从事的项目使用 less。我们安装了 \lessc 库来设法仅在存储库中保留 .less 个文件。

再一次,在开发模式下,我们甚至不检查文件是否被更改——我们假设是,并且一直在重新编译它。出于生产目的,编写 PHP 以检查某些脚本是否确实存在,并且仅当它们不存在时才编译 .less