Những gì tôi thường làm là:
- đặt càng nhiều càng tốt JS trong một file .js (đối với bộ nhớ đệm trên client-side và tất cả những gì)
- này JS mã sử dụng một Biến JS
- biến JS được khai báo/khởi tạo từ tệp PHP; đây là phần duy nhất mà bạn cần một số mã thực thi trên server-side, trên thực tế
Ví dụ, tôi sẽ có một cái gì đó như thế này, tôi cho rằng:
my-file.php:
var thisIsMyJSVar = '<?php echo $test; ?>';
Vì vậy, trong PHP, chúng tôi khai báo biến tha và đặt giá trị của nó. Đây là phần "động".
và trong my-file.js:
//when the DOM is ready
$(document).ready(function(){
//settings on top
var domain = 'http://davidwalsh.name/';
var initialPosts = thisIsMyJSVar; // Use the JS variable declared in the PHP file
//function that creates posts
var postHandler = function(postsJSON) {
$.each(postsJSON,function(i,post) {
Ở đây, trong các tập tin JS tĩnh, chúng tôi chỉ sử dụng giá trị; không có gì ở đây là động và tệp này có thể được lưu vào bộ nhớ cache bởi ứng dụng khách - để không được tải xuống lại trên mỗi trang.
Vấn đề với ý tưởng đó là file JS phụ thuộc vào một số khởi động thực hiện trong file PHP :-(
Vì vậy, nó có thể là một ý tưởng tốt để có một "giá trị mặc định" trong tập tin JS , chỉ trong trường hợp ...
Ngoài ra, bạn phải có quy ước đặt tên tốt, không có nhiều tệp sử dụng/khai báo/tùy thuộc vào biến JS giống nhau, có thể là một ý tưởng hay, đặt tất cả "biến cấu hình" của bạn bên trong một đối tượng javascript duy nhất, để không gây ô nhiễm không gian tên chung ...
Nguồn
2009-08-22 15:34:50
thats lớn những gì tôi đã suy nghĩ, nó làm cho một differene nếu php đặt var JS trước hoặc sau khi tập tin JS được bao gồm? – JasonDavis
Trong trường hợp này, mã JS sẽ được thực hiện khi trang được tải hoàn toàn (vì $ (tài liệu) .ready); vì vậy nó sẽ thay đổi nhiều ;; nhưng, trong các trường hợp khác, mã JS có thể cần biến ngay khi được tải; vì vậy, như là một precuation, tôi nghĩ rằng nó sẽ là tốt hơn để luôn luôn tuyên bố + khởi tạo biến trước khi bao gồm các kịch bản JS. –
ok cảm ơn, tôi nghĩ yahoo khuyên bạn nên bao gồm tệp JS của bạn ở cuối trang anyways – JasonDavis