CodeIgniter'daki jQuery, görünümü iç veya dış js dosyasında?

3 Cevap php

Ben CodeIgniter kullanarak web uygulama geliştiriyorum. Bütün bu zaman, ben görünüm dosyası içinde fantezi maddeleri yapmak için özel js kodu koymak. Bunu yaparak, ben site_url() kullanabilir ve CodeIgniter tarafından sağlanan base_url() function.

Bugün bir dış js dosyasına görünümü dosyadaki tüm gümrük js kodunu ayırmak istiyorum. Sonra, ben dış js dosyasındaki site_url() ve base_url() kullanamazsınız bana vurdu. Yani, geri görünüm dosyasına js kodu taşımak zorunda kaldı.

Ben sorunların bu tür görüş, örnek ve en iyi uygulamaları sormak istiyorum. Eğer görünüm içinde gümrük js kodu koymak, ya da harici js dosyası mı? Eğer harici bir dosyada koyarsanız, nasıl site_url() ve base_url() (tabii yanında Bunu engellemek istiyorum mutlak url koymak) için ihtiyaçlarını etrafında olsun.

3 Cevap

Ben genellikle harici bir dosyada mayın tutmak, ancak daha sonra benim dış javascript kullanılan "baseurl" adında bir javascript değişkeni bildirir benim şablon içinde tek bir satır (görünüm) yerleştirin.

<script type="text/javascript">
  var baseurl = "<?php print base_url(); ?>";
</script>
<script type="text/javascript" src="/js/scripts.js"></script>

Şimdi benim scripts.js dosya kendi baseurl değişkeni ile base_url() değerine erişimi vardır.

Js açıkçası, harici olmalı, ama neden mükemmel javascript sihirli tüm işlemek için uygun oluyor bir MVC framework olduğu gerçeğini tam olarak yararlanmak değil - Ben farklı bir şekilde bunu yapmak istiyorsunuz?

Here's my recipe for Javscript (and CSS) goodness with CI:

  1. Zaten bunu bilmiyorsanız, hayatınızı daha iyi olacak - bir Minify bir kopyasını alın. Değil bir "Love at first sight / I just discovered jQuery / xkcd / unit testing" bir şekilde tür, ama en azından arada bir "Dude, prepared statements eradicate SQL injection" tür içinde.

  2. İkincisi, Minify (çok sert olmamalı, sadece doğru HTTP başlığını ayarlamak ve üzerinde parametreleri geçirmek unutmayın) kapsüller bir CI denetleyicisi oluşturmak

  3. İsteğe bağlı (Minify inşa önbelleğe sahip, ama zaten CI içeriği önbelleğe iseniz, siz de burada aynı yöntemi kullanıyor olabilir her şey cayır cayır yanan hızlı çalışmasını sağlamak için önbelleğe almayı etkinleştirmek.

  4. İsteğe bağlı komut dosyası yükleme bile daha güzel yapmak için, küçültmek için bazı gruplar tanımlamak

  5. İsteğe bağlı javascript çıktı baseurl ve siteurl değişkenleri (ve diğer her türlü değerler gerekebilir) eklemek

  6. Ve saygınlık, şimdi Minify-sarıcı arayarak komut yüklemek mümkün olmalıdır:

    <script type="text/javascript" src="/min/g=js"></script>

O, bu gzip'lenmiş oluyor, hızlı deli değil çok daha fazla, bu size komut üzerinde tam kontrol verir CI sadece tek bir isteği alır, ve hatta kaynak kodu temizleyici yapar.


Eğer kaynak kodu-gözetleme ziyaretçiler için ekstra güzel olmak istiyorsanız Oh, ve, otomatik çıkış için böyle bir şey ekleyebilirsiniz:

// Javascript compressed using Minify by Ryan Grove and Steve Clay
// (http://code.google.com/p/minify/)
// Human-readable source files:

// http://www.yourdomain.com/js/core_functions.js
// http://www.yourdomain.com/js/interface.js
// http://www.yourdomain.com/js/newsticker.js
// http://www.yourdomain.com/js/more_magic.js

(...)

En azından ben öyle yaparım.

Her URL geçerek başlarsanız Donny, ayrı ayrı kendine bir top ağrıyor verecek. Neden sadece (base_url geçmesine) ve ucunda kontrolörü / yöntemini contcat değil?

Sen index_page ve url_suffix ayarlar etrafında takas yeteneğini kaybeder ama onlar gerçekten zaten bu genellikle tüm değiştirmeniz gerekir.