Codeigniter - 正确导入JS / CSS / IMG

时间:2014-03-04 11:29:21

标签: javascript php css image codeigniter

我是MVC学习的新手,在搜索基本内容后,我发现了几个关于这个问题/主题的意见,但每个人都有不同的状态和指示...

有谁知道在Codeigniter中放置资产(js / css / img)文件的最佳位置是什么?

我发现有些人说要把它放在视图文件夹中,有人在webroot中(在创建资产文件夹之后),有人在应用程序文件夹中等等所以我真的很困惑..这真的取决于用户是谁开发应用程序(所以每个人都把它放在不同的地方)或者是否有一个基本的“遵循规则”?

Codeigniter的任何专家都能发布正确的答案,并解释包含这些资产的最佳方式是什么以及为什么这样做?

4 个答案:

答案 0 :(得分:1)

我已将它们添加到与incapplicationsystem相同的目录中名为user_guide的文件中(尽管我将user_guide删除为它一上升到服务器上。)

确保您已设置base_url,以便您可以更轻松地调用它(并自动加载url加载程序!)。

然后当我打电话时,我使用<?=base_url();?>inc/css/styles.css

<link rel="stylesheet" href="<?=base_url();?>inc/css/styles.css

<link rel="stylesheet" href="<?php echo base_url(); ?>inc/css/styles.css

我的模板将如下所示:

--application
--system
--inc
  -- css
      -- style.css
  -- js
      -- scripts.ks
  -- images
      -- logo.png

答案 1 :(得分:1)

通常,当我启动一个新的CodeIgniter项目时,我会创建一个名为public的文件夹,然后将index.php文件移到那里。通过这样做,这意味着应用程序和系统文件夹不在同一级别。

在我的application / config / config.php文件中,我添加了base_url

$config['base_url'] = 'http://exmaple.com/codeigniter/public/";

public文件夹中,我创建了名为jscssimages的文件夹。所以我的结构看起来像

 -- application
 -- system
 -- public
    -- css
    -- js
    -- images
    -- index.php

然后在我的模板中,我可以通过

来包含它们
<link rel="stylesheet" href="<?php echo base_url() ?>css/main.css" />
<script type="text/javascript" src="<?php echo base_url() ?>js/main.js"></script>

您绝对不应该将任何可公开访问的文件(样式表,图片等)放入应用程序或系统文件夹

答案 2 :(得分:1)

除了上面的答案之外,我喜欢做的一件事是使用“帮助器”函数来加载js,css。这样,如果您更改静态内容的位置,则只需在代码中的一个位置更改它。

function css($filename) {
        return '<link rel="stylesheet" type="text/css" href="' . config_item('base_url') .
                'public/' . $filename . '.css">';
}
function js($filename) {
    return '<script type="text/javascript" src="' . config_item('base_url') .
            'public/' . $filename . '.js "></script>';
}

答案 3 :(得分:0)

归结为味道,在某种程度上,但我的谦虚建议是使用基本的引导模式,其后是许多框架,而不仅仅是codeigniter。看看如何根据主题(https://github.com/twbs/bootstrap)布置您的网站。

我并不认为自己是专家,但我建议一个团队非常简单易懂的事情:

文件夹结构

/
/css
/js
/application
/bower_components
... 

主题布局

使用页面时,我不想考虑加载各种库和页面内容,我只想简单地使用页面。为此,我拆分内容,以便我可以使用以下调用加载它:

$this->load->view('site/header'); //Load the header and all the appropriate libs

$this->load->view('/users/edit', array('
   'record' => $this->User->get($userid);   //Work with the actual page
'));

$this->load->view('/site/footer'); //Close all the tags

通常,我将库放在根目录中,然后使用绝对路径将它们加载到视图中:

/application/views/site/header.php:

<html>
....
<head>
 <script src="/js/bootstrap.min.js"></script>
 <link href="/css/bootstrap.css" rel="stylesheet">
 </head>
...
<body>
 <navbar>
  ...
 </navbar>
<div id="content">

/application/view/site/footer.php

 </content>
 ... closing tags
 </html>

回购示例

在此处查看带有免费主题的空白回购设置:https://github.com/DesertLynx/blank_CI