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


Why use Phalcon's Assets Manager to apply Filters?

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

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

此外,当开发主题或做大量前端工作时,观察源sass文件的更改是很有用的。这在法尔孔有可能吗?

根据手册,在资产收集中使用->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