Стоит ли использовать base_url () для каждого включения на стороне клиента? - PullRequest
4 голосов
/ 28 июня 2011

Я использую CodeIgniter, и мне это нравится, но я не знаю, действительно ли это того стоит:

<link rel="stylesheet" href="<?php echo base_url(); ?>css/main.css" />
<script src="<?php echo base_url(); ?>js/jquery.js"></script>
<script src="<?php echo base_url(); ?>js/functions.js"></script>
...
<img src="<?php echo base_url(); ?>images/dolphin.png" />

Вместо того, чтобы просто:

<link rel="stylesheet" href="/css/main.css" />
<script src="/js/jquery.js"></script>
<script src="/js/functions.js"></script>
...
<img src="/images/dolphin.png" />

Первый метод увеличивает вес страницы, но он надежен, если вы решите использовать одно и то же приложение в подпапке и т. Д.

С кем мне идти?

Ответы [ 4 ]

2 голосов
/ 28 июня 2011

Если вы считаете, что вам может понадобиться переместить приложение в другие подпапки (а не в другие субдомены), вероятно, стоит использовать <?php echo base_url(); ?>, однако, если вы можете предположить, что приложение всегда будет установлено в своем собственном домене или Субдомен определенно покончил с вызовом функции, он добавляет ненужный беспорядок и отправляет больше в браузер пользователей.

Все зависит от того, что, по вашему мнению, потребуется приложению.

1 голос
/ 29 июня 2011

Просто подумал, что я добавлю некоторые важные для меня вещи.

  • Как вы уже упоминали, если вам когда-нибудь понадобится установить Codeigniter в подкаталог, / ведущий слеш, конечно, не будет работать.Вы должны будете включить имя подкаталога в путь.Лично это очень важно, потому что мы будем устанавливать редизайны или прототипы в подкаталогах.Тем не менее, это может быть полезно (если применимо) для перехода на SSL, если вы еще не позволяете CI автоматически определять базовый URL (по состоянию на версии 2.0.2).

  • ИзменениеВаша $config['base_url'] не включать полный домен может быть плохой идеей.Вдобавок ко всему, это сломало бы ссылки и ссылки в электронных письмах, отправленных вашим приложением, использующим функцию base_url(), и в целом может привести к неожиданным результатам.

  • Почтикаждый HTML-тег, в котором вам нужно использовать базовый URL, например <link> <img> и <a>, покрывается функцией Codeigniter.(link_tag(), anchor(), img()).Они позаботятся о базовом URL для вас.(Почему они пропустили <script> - вне меня ...)

Однако я согласен - использование полного базового URL добавляет много ненужного веса страницы, особенно в вашей навигации.Вот что я делаю, чтобы получить путь (в случае установки подкаталога):

// constants.php
$base_uri = $_SERVER['SCRIPT_NAME']; // Always index.php (bootstrap), right?
$base_uri = str_replace('index.php', '', $base_uri);
define('BASE_URI', $base_uri);

Вы можете изменить это на функцию или элемент конфигурации или что угодно, я предпочитаю константу.Затем вы можете использовать:

<script src="<?php echo BASE_URI; ?>js/functions.js"></script>

Обычно это будет скучный способ сказать /, но он решает проблему подкаталога.

Это может показаться пустой тратойвремя, но когда у вас много установок, использующих одну и ту же кодовую базу, лучше меньше конфигурации.

1 голос
/ 28 июня 2011

По моему мнению, вы всегда должны использовать base_url () для определения вашего пути, потому что таким образом вы будете уверены, что ваш путь всегда будет правильным. Если вы считаете, что функция эха слишком грязная, вы всегда можете использовать движки шаблонов, например, встроенный модуль зажигания кода , класс анализатора шаблонов или некоторые внешние, например Smarty .

.
0 голосов
/ 29 июня 2011

В качестве компромисса между удобочитаемостью и гибкостью я бы сделал следующее:

<link rel="stylesheet" href="<?= site_url('css/main.css') ?>" />
<script src="<?= site_url('js/jquery.js); ?>"></script>
<script src="<?= site_url('js/functions.js); ?>"></script>
...
<img src="<?= site_url('images/dolphin.png'); ?>" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...