1

私は CodeIgniter の初心者で、現在いくつかのサイトを開発しています。人々はこれについてさまざまな意見を持っていると思いますが、一般的なコンセンサスとその理由についての説明が役立つでしょう.

CI などのフレームワークを使用せずに開発する場合、従来はさまざまな JS 操作 (リスナー、jQuery 呼び出しなど) をページのフッターに配置していました。

CI では共通のフッターとヘッダーを含めるのが標準ですが、すべてのページのすべての JS をこのフッターに配置すると、各ページで不要なものを呼び出すことになります。

これを回避/設定する最良の方法は何ですか?

4

4 に答える 4

4

経験はありませんが、次のプロジェクトでは、おそらくカラビナを試してみるつもりです。

GitHubプロジェクトから:

CarabinerはjavascriptとCSSアセットを管理します。実稼働環境にあるか開発環境にあるかによって、反応が異なります。本番環境では、アセットを結合、縮小、およびキャッシュします。(ファイルが変更されると、新しいキャッシュファイルが生成されます。)開発環境では、元のアセットへの参照が含まれるだけです。

カラビナはあなたが次のようなことをすることを可能にします

// add a js file
$this->carabiner->js('scripts.js');

// add a css file
$this->carabiner->css('reset.css');

コントローラでcssまたはjsファイルを追加し、それらをヘッダーまたはフッターに出力します。

// display css
$this->carabiner->display('css');

//display js
$this->carabiner->display('js');

私は過去に同様のことを実装しましたが、このライブラリは、自分で作成するよりもはるかに少ない労力で有望に見えます。もし私があなたなら、私は間違いなくそれをチェックするでしょう。

于 2013-03-07T14:31:05.120 に答える
2

アプリケーション フレームワークを使用することは、フロントエンド コードを危険にさらす言い訳にはなりません。「CIでは、共通のフッターとヘッダーを含めるのが標準です」と言った人は、怠惰な開発者です。

私が過去に行ったことは、次のようなものです。

MY_html_helper.php

<?php
function js($js)
{
    $js_base_path = '';

    if(is_array($js))
    {
        foreach($js as $script_src)
        {
            if(strpos($script_src, 'http://') === false && strpos($script_src, 'https://') === false)
            {
                $js_base_path = base_url() . 'js/';
            }

            echo "<script src=\"{$js_base_path}{$script_src}\"></script>";
        }
    }
    else
    {
        if(strpos($js, 'http://') === false && strpos($js, 'https://') === false)
        {
            $js_base_path = base_url() . 'js/';
        }
        echo "<script src=\"{$js_base_path}{$js}\"></script>";
    }
}
?>

コントローラ

// many scripts
$this->load->view('_footer', array('js'=>array('whatever.js', 'plugin.js')));

// or a single script
$this->load->view('_footer', array('js'=>'jquery.cycle.lite.js'));

見る

<?php
if(isset($js))
{
    $this->load->helper('html');
    js($js);
}
?>

<script src="/js/script.js"></script>

言うまでもありませんが、必要に応じて自由にカスタマイズしてください。

于 2013-03-07T14:43:29.983 に答える
1

私が構築する Web サイトの多くはそれほど忙しくなく、優先事項はメンテナンスの容易さです。これらのケースでは、必要なすべてのスクリプトをロードするだけです。通常は、jQuery コアと、イメージ ローテーター用の関連プラグインなどです。

私の見解では、ホームページが読み込まれると、スクリプトがキャッシュされるため、余分な重みがサイトのパフォーマンスにそれほど影響を与えることはありません (特にトラフィックの少ないサイトの場合)。

ただし、より大きな問題は、ページごとに異なる jQuery アクションに関係しています。CodeIgniter では、ページをレンダリングするためのテンプレート タイプのアプローチでネストされたビューを使用します。<script>ページ コンテンツ セクションの後、フッター セクションの前に、ページ固有の jQuery アクションをタグに挿入することがよくあります。最高ではありませんが、少なくとも私の jQuery アクションは、関連するページ要素 (通常はフォーム) に近いものです。理想的には、各ページに固有の JavaScript ファイルを作成し、関連する CodeIgniter コントローラーからロードします。私は通常、ウェブサイト/アプリケーションが安定したら、バージョン 1 から 2 へのリファクタリングの一環としてこれを行います。

余談ですが、私は CSS ファイルを整理してモジュール化することにもっと関心があります。私の CSS は、私の JS ファイルよりもはるかに速く混乱する傾向があります。

要点:サイトが混雑していてパフォーマンスが重要な場合は、ページごとのスクリプトをコントローラーにロードして組み込み、グローバル JS ファイルに加えて (CSS も同様に) 各ページの JS ファイルを維持します。

サイトが混雑していない場合は、必要に応じて、すべてのスクリプトと CSS ファイルをプライマリ ページ テンプレート (または共通のヘッダー ファイルとフッター ファイル) にロードします。

そうは言っても、2 年後に主要なサイトのアップグレードが要求されたときに対処するための大きな混乱を避けるために、物事を正しくコーディングするのに数分を費やすことをお勧めします。

専門家として、私たちはスキル セットと展開戦略の向上に努めていますが、すべての Web サイト プロジェクトが完全に実行されるわけではありません。すべての予算と時間は限られているからです。100% 完璧でなくても、仕事が終われば報酬が支払われます。

于 2013-03-07T14:51:27.273 に答える
0

できることがいくつかあると思います。さまざまなスクリプトにリンクするさまざまなフッターを作成し、コントローラーのフッターリンク(たとえば、footer-home.phpまたはfooter-about.php)を変更することができます。次に、一般的なスクリプトリンクをヘッダーに保持します。

また、特定のページの個人用スクリプトを作成して、ページの本文部分(home.phpまたはヘッダーとフッターの間に挟んでいるもの)に含めることもできます。

スクリプトの重さや使用頻度にもよると思います。

于 2013-03-07T14:23:07.737 に答える