首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >缩小InlineScript

缩小InlineScript
EN

Stack Overflow用户
提问于 2018-05-24 10:29:12
回答 1查看 532关注 0票数 3

在我的视图脚本中,我使用视图助手inlineScript添加javascript,并在模板的页脚中回显它。现在,我正在尝试使用这个解决方案缩小生成的html。

我的问题是,我在代码中包括了内联注释(例如//this is a comment) (因为我是一名优秀的开发人员),这使得后面的所有代码也被视为注释(因为所有新行都被删除,下面的代码与内联注释放在同一行)。

如何扩展inlineScript以删除注释和/或使用例如泥微化缩小代码

我试过的是:

代码语言:javascript
复制
<?php echo preg_replace('#//.*#', '', $this->inlineScript()) ?>

这会导致在我有代码的页面上出现问题,例如:

代码语言:javascript
复制
jQuery(el).attr('data-toggle', 'popover')
    .attr('data-trigger', 'hover')
    .attr('data-html', 'true')
    .attr('data-content', [
        '<img style="height: 75px; border: 1px solid #000; margin: 5px" src="',
        '//' + location.hostname + '/img/broker-logo/' + el.value,
        '"/>'
    ].join(''))

上面的一个变体,

代码语言:javascript
复制
<?php echo preg_replace('#[\s\t]+//.*#', '', $this->inlineScript()) ?>

它会检查是否有评论在它之前没有任何东西。这就产生了这样的问题:在代码后面加上一行末尾的注释:

代码语言:javascript
复制
var $el = jQuery('table.hover') //only apply effect to hover tables

它产生与原始问题相同的不良结果。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-05 15:49:27

您可以添加https://github.com/mrclay/jsmin-php以删除注释和空白(请参见有关注释的问题https://github.com/mrclay/minify/issues/581 )。

如果您使用的是composer项目,那么下一步可以将jsmin-php添加到您的项目中:

1步骤:在您的composer.json所在的终端上运行composer require mrclay/jsmin-php以安装包。

2步骤:在脚本小型化函数的实现中添加将删除注释的JSMin::minify行:

代码语言:javascript
复制
function removeComments(string $code) {
  // $code is variable that contains JS with comments, could be something like
  // $code = 'var someCode = "blah-blah";/**comment*/';

  $minifiedJs = JSMin::minify($code);

  return $minifiedJs;
}

3步骤:不要忘记在.php文件的顶部添加use JSMin\JSMin;语句。

在您的示例中,如果removeComments($this->inlineScript()) ()确实为您返回字符串,则将其称为inlineScript()。请注意,通常应该像下面这样调用inlineScript助手方法

代码语言:javascript
复制
$jsCodeWithoutComments = removeComments($jsCodeWithComments);
$this->inlineScript()->appendScript($jsCodeWithoutComments);

请参阅从子视图将Javascript文件追加到InlineScript集合的末尾

就是这样。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50507016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档