2011-06-28 42 views
4

我用笨,我喜歡它,但我不知道它是否真的值得這樣做:是否值得使用base_url()爲每個客戶端包含?

<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" /> 

第一種方法增加了很多的重量,但當您決定在子文件夾等中使用相同的應用程序時,它是可靠的。

哪一個我應該去的?

回答

2

如果您認爲您可能需要將該應用程序移至其他子文件夾(而不是其他子域),則可能值得使用<?php echo base_url(); ?>,但是如果您可以假定該應用程序將始終安裝在其自己的域或子域名肯定會取消函數調用,它會增加不必要的混亂並向用戶瀏覽器發送更多內容。

這下到你認爲你的應用程序將需要做的。

+0

它沒有發送不必要的混亂。你可以配置'$ config ['base_url']'值爲'/',而不是在你的'/ config/config.php'中包含域名。 – Matt

+0

@Matt:如果您使用'base_url()'或任何其他使用它的函數來發送電子郵件(鏈接,圖像等),這可能是一個非常糟糕的主意。可能還有其他一些缺陷,但我現在無法想到 - 但我認爲這可能會帶來一些意想不到的結果。 –

1

在我看來,你應該總是使用BASE_URL()來定義,因爲這樣你將確保您的路徑將永遠是正確的路徑中。如果你認爲回聲功能實在是太骯髒,你可以隨時使用的模板引擎,如建於template parser class或一些外部像Smarty代碼點火器。

1

只是想我會添加一些東西,已經相關我。

  • 正如你所提到的,如果你需要一個子目錄中安裝笨,該/領先的斜線當然會無法正常工作。您必須在路徑中包含子目錄名稱。就個人而言,這會出現很多,因爲我們將在子目錄中安裝重新設計或原型。但是,如果您尚未讓CI自動檢測您的基本網址(自v2.0.2開始),那麼這可以很好(如果適用)切換到SSL。

  • 將您的$config['base_url']更改爲不包含完整域可能是一個壞主意。在我頭頂,這會破壞應用程序發送的使用base_url()函數的電子郵件中的鏈接和引用,並且通常可能會導致意想不到的結果。

  • 幾乎所有你需要用自己的基本網址中,像<link><img><a>每一個HTML標記,由笨功能覆蓋。 (link_tag()anchor()img())。這些將照顧你的基地網址。 (爲什麼他們離開了<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> 

這通常是一個冗長的方式說/,但處理子目錄的問題。

這看起來好像浪費時間,但是當您使用相同的代碼庫進行大量安裝時,配置越少越好。

0

可讀性和靈活性之間的妥協我會做到以下幾點:

<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'); ?>" /> 
+0

我不認爲OP關注PHP源代碼,但HTML輸出('「爲頁面添加了很多權重」)。這仍然會打印完整的基礎url,事實上,如果你在你的url中使用了'index.php',這將會破壞資源引用(這是'site_url()'和'base_url()' - site url之間的細微區別打印'index.php'部分)。一般來說,短標籤也是不被接受的。 –

相關問題