A. Php dosyasında Javascript koyarak avantajları nelerdir?

7 Cevap php

Ben zaman zaman bazı JavaScript bir PHP dosyası ile dahil sayfalarda rastlamak:

<html>
  <head>
    <script type="text/javascript" src="fake_js.php"></script>
  </head>
  <body onload="handleLoad();">
  </body>
</html>

nerede içeriği fake_js.php Böyle bir şey olabilir:

<?php header('Content-type:  text/javascript') ?>

function handleLoad() {
    alert('I loaded');
}

Böyle Javascript dahil olmak üzere avantaj (veya dezavantajları) nelerdir?

7 Cevap

Bu kolay sunucu tarafında javascript değişkenleri ayarlamak için yapar.

var foo = <?=$foo?>

Ben genellikle javascript kullanılması gereken herhangi bir değişkeni tanımlamak kullanmak benim projelerde bir php / javascript dosyası var. Bu şekilde ben sunucu tarafında (css renk, hassas olmayan sitesi özellikleri, vb) kolayca javascript üzerinde kullanılan sabitleri erişebilirsiniz.

Edit: Örneğin burada ben şu anda üzerinde çalışıyorum proje benim config.js.php dosyasının bir kopyası.

<?php
require_once    "libs/config.php";
if (!function_exists("json_encode")) {
    require_once	"libs/JSON.php";
}
header("Content-type: text/javascript");
echo "var COLORS = ". json_encode($CSS_COLORS) .";\n";
echo "var DEBUG = ". ((DEBUG == true) ? "true" : "false").";";


?>

Eğer ihtiyacınız yoksa, onu kullanmayın:

The first thing you need to keep in mind is YAGNI. You Ain't Gonna Need It. Until a certain feature, principle, or guideline becomes useful and relevant, don't use it.

Disadvantages:

  • Eklenen karmaşıklığı
  • Statik dosyalar daha yavaş.
  • Önbelleğe alma problemleri (sunucu tarafı)
  • Ölçeklenebilirlik sorunları (yük dengeleyici ağır PHP / Apache, vb süreçler statik dosya boşaltma)

Advantages:

  • User specific javascript - HTML <head> </head> bölümünde sağ değişkenler / parametreleri ile başlatılıyor elde edilebilir
  • Page specific javascript - JS de parametreleri kullanmak için genelleştirilmiş
  • Veritabanından oluşturulan JSON (genellikle AJAX yoluyla talep)

Javascript (yani JSON, parametreler / değişkenler) gerçekten benzersiz sürece size çok kazanç yok. Ama her durumda, sunucu tarafında oluşturulan JS miktarını en aza indirmek olmalı ve statik dosyaları kod miktarını en üst düzeye çıkarmak. Dinamik ise, onu ağır bir süreç olması için istedim değil bu yüzden tekrar ve tekrar indirilen / oluşturulmuş olması gerektiğini unutmayın.

Also:

  • Bu da (web sunucusu doğru içerik türü ile file.js hizmet etmezse örneğin) sunucu yapılandırma miktarını en aza indirmek için kullanılan olabilir

(Eğer deli ama duyulmamış değil olurdu. Php dosyalarını değil. Js dosyaları erişimi özgü dağıtım senaryoları ötesinde) yukarıda verdiğim örneğin hiçbir yararı yok.

Dinamik sunucu değişkenleri dayalı JS üretebilir demektir - O dedi, bu yaklaşım php çözücü üzerinden JS geçmesine izin verir.

Tj111 katılıyorum. Apart belirtilen Tj ne, ben de php oluşturulan Javascripts tarayıcının önbellek hileler savaşmak için büyük bir silah bulundu. Değil uzun zaman önce ben onun sürekli tarayıcı tarafından önbelleğe için bütün javascript küfür edildi. Sayfayı yenilemeyi, javascript dosyaları yeniden tarayıcıyı zorlamak için tüm önbelleğini temizlemek zorunda değil bana yardımcı oldu. En kısa sürede benim JavaScripts önünde bir php duvar inşa gibi:

fake_js.php:

<?php 

header('Content-type:  text/javascript') 
include('the_real_javascript.js');

?>

Taze yeni bir javascript her zaman istemci tarafında göstermek istiyorum. O the correct javascript tarayıcıda yüklü olması geliştiriciye oldukça baş ağrısı kaydedebilirsiniz Ancak bu yaklaşım, tabii geliştirme aşamasında sadece iyidir. Localhost bağlanırken tabii ki, tekrar tekrar aynı dosyayı yükleme ceza gibi büyük değildir.

Canlı web uygulaması / sitesinde istemci tarafında önbelleğe alma ağ trafiği ve genel sunucu yükünü azaltmak için açığız.

Advantage (spesifik PHP değil - Ben EmbPerl ve JSP bu tekniği kullanılır) dinamik olarak oluşturmak veya çimdik / sunucu tarafında JavaScript kodu özelleştirmek için yeteneği olacaktır.

An example usage would be population of an array based on the contents of a DB table. Or application of localization techniques.

Ile PHP gibi file.js.php olarak yeniden adlandırıldı veya ayrıştırılması gerekir htaccess: Eğer tam sunucu erişimi yok ve gzip kodlama açamıyorum eğer o (not javascript dosyasında aşağıdaki koymak için oldukça yararlıdır. direktifi):

<?php
ob_start( 'ob_gzhandler' );
header("Content-type: text/javascript");
?>
// put all your regular javascript below...

Ayrıca, sunucu kontrollü çözümler yerine daha iyi önbellek denetim, ziyaretçi takibi, vb için kullanabilirsiniz.

Kesinlikle yok, IMHO. Ben erişimi olması için ne gerekiyorsa, sunucu tarafı değişkenleri ayarını işlemek için yazdığı bir js çerçeve kullanın. Bu aslında JavaScript PHP gömme aynı, ama çok daha az belirsiz. Bu yöntemi kullanarak yapmanıza olanak sağlar, aynı zamanda tamamen ayrı bir sunucu tarafı mantığı ve uzak javascript html. Bu çok temiz, daha organize ve asılıyor birleştiğinde modüler kod sonuçlanır.

Eğer html böyle bir şey yapabilirsiniz:

<script type="text/javascript">

registry = {
    myString : '<?php echo $somePhpString; ?>',
    myInt    : <?php echo $somePhpInteger; ?>
}

</script>

Ve sonra js böyle bir şey yapın:

if (registry.myInt === 1) {
    alert(registry.myString);
}