在 Laravel 5.x 中添加带有刀片引擎代码的外部 javascript 文件?

Posted

技术标签:

【中文标题】在 Laravel 5.x 中添加带有刀片引擎代码的外部 javascript 文件?【英文标题】:Add external javascript files with blade engine code in Laravel 5.x? 【发布时间】:2015-10-09 23:31:34 【问题描述】:

我有多个 javascript 文件,其中很多是由 laravel 模板引擎准备的。例如滥用:

@if ($group_id !== 3)
    //do something here
@endif

一切都很好,当生病时,将 javascript 代码直接包含到我的 filename.blade.php 模板中。

但我想加载所有外部:

<script type="text/javascript">
    $.getScript("js/pages/filename.js");
</script>

所以它没有被刀片引擎处理。我为 L4 找到了一些解决方案,但我对它们并不满意。例如,您应该将您的 javascript 文件命名为 javascript.blade.php 并以这种方式包含它 - 但是我的 IDE 认为它是一个 PHP 文件并格式化它完全错误。这里的其他解决方案是在包含之前编写您的(本示例中的组),例如:

<script type="text/javascript">
    var group = !! $group_id !!
    $.getScript("js/pages/filename.js");
</script>

我仍然对那个解决方案不太满意,我希望所有文件都应该被处理,因为它直接包含在我的刀片文件中。

有解决办法吗?

提前致谢。

【问题讨论】:

您想在每个刀片模板上添加不同的文件吗?还是使用刀片中的 IF 通过验证加载 javascript 文件? 感谢您的回答!是的,有几个刀片模板文件。对于每个模板,我都有一个我想添加的 javascript 文件。有很多针对不同组的自定义代码(例如在数据表中),因此为特定组创建一个处理过的 JS 文件会很好。所以“if”直接在JS文件中。 我没有清楚地理解您的想法,但是如果您想根据组加载每个文件,您可以为额外文件创建一个部分,并在此部分管理每个组,并加载特定文件.如果这不是这个想法,请告诉我。 不,这不是一个好主意。例如。您将获得 1 个大型数据表,但每个组的列不同,因此请直接在 javascript 中使用刀片为每个组修改列。我不想在相同内容下创建多个 JS 文件(仅针对每个组) - 我更喜欢刀片引擎处理的 1 个文件。 【参考方案1】:

假设您有以下外部 JS 脚本(还包括一些刀片引擎代码):

first.js

首先要在任何其他刀片文件中使用此脚本,请将上述文件重命名为:

first.blade.php但记得将整个脚本代码放在脚本标签内!!

现在通过以下方式将此文件包含在您的其他刀片文件中:

@include('someViewFolder.first') 假设您已将 first.blade.php 放在“someViewFolder”文件夹中。

我希望这会有所帮助,干杯。

【讨论】:

你好。感谢您的回答,这里的问题是(如上所述)我的 IDE(PHPStorm)没有格式化正确的 javascript,如果它是一个 .php 文件。所以它工作正常,但无用/难以调试。

以上是关于在 Laravel 5.x 中添加带有刀片引擎代码的外部 javascript 文件?的主要内容,如果未能解决你的问题,请参考以下文章

在laravel 7刀片中获取带有if not null条件的URL参数

我可以在 symfony 中使用刀片模板引擎(laravel)吗?

刀片引擎:打印三重花括号

如何在刀片 Laravel 中添加两个数字

Laravel - 带有刀片 compileString 的 php eval

Laravel 刀片模板不使用 slug 渲染