Zend框架 - 如何在标题中只添加一次CSS和JS而不重复?

时间:2016-09-15 10:55:27

标签: php zend-framework zend-framework2

在ZF2中,我只尝试加载CSS和JS文件一次。

但是当我渲染页面时,它们会加载两次或三次,导致网站速度极慢。

在实际页面中我有bootstrap.css 2次,style.css 2次,JS文件也有2,3次。

<!doctype html>
<html>
<head>
  <meta charset="utf-8" />

  <?= $this->headTitle(); ?>  
  <?= $this->headMeta(); ?>

  <!-- CSS -->
  <?= $this->headLink()->prependStylesheet('/v2/css/bootstrap.css'); ?>  
  <?= $this->headLink()->prependStylesheet('/v2/css/style.css'); ?>  

  <!-- JS -->
  <?= $this->headScript()->prependFile('/v2/js/jquery-3.1.0.min.js') ?>
  <?= $this->headScript()->prependFile('/v2/js/global.js') ?>

</head>

2 个答案:

答案 0 :(得分:1)

你正在呼应每条线上的物体;删除所有<?=,只需一次调用echo即可替换。

<head>
  <meta charset="utf-8" />

  <?= $this->headTitle(); ?>  
  <?= $this->headMeta(); ?>

  <!-- CSS -->
  <?php 
    $headLink = $this-headLink();
    $headScript = $this->headScript();

    $headLink->prependStylesheet('/v2/css/bootstrap.css');
    $headLink->prependStylesheet('/v2/css/style.css');

    $headScript->prependFile('/v2/js/jquery-3.1.0.min.js');
    $headScript->prependFile('/v2/js/global.js');

    echo $headLink;
    echo $headScript;
  ?>
</head>

答案 1 :(得分:1)

最简单的方法是,如下所示:

<!doctype html>
<html>
<head>
  <meta charset="utf-8" />

  <?= $this->headTitle(); ?>  
  <?= $this->headMeta(); ?>

  <!-- CSS -->
  <?= $this->headLink()->prependStylesheet('/v2/css/bootstrap.css')
        ->prependStylesheet('/v2/css/style.css'); ?>  

  <!-- JS -->
  <?= $this->headScript()->prependFile('/v2/js/jquery-3.1.0.min.js')
        ->prependFile('/v2/js/global.js'); ?>
</head>

这是在ZendSkeleton layout中完成的方式。