Với một ứng dụng trang duy nhất, nơi tôi thay đổi băm và tải và chỉ thay đổi nội dung của trang, tôi đang cố gắng quyết định cách quản lý JavaScript mà mỗi " trang "có thể cần.Thực tiễn tốt nhất quản lý JavaScript trên một ứng dụng một trang
Tôi đã có một mô-đun Lịch sử theo dõi băm vị trí có thể trông giống như domain.com/#/company/about
và lớp Trang sẽ sử dụng XHR để lấy nội dung và chèn nó vào khu vực nội dung.
function onHashChange(hash) {
var skipCache = false;
if(hash in noCacheList) {
skipCache = true;
}
new Page(hash, skipCache).insert();
}
// Page.js
var _pageCache = {};
function Page(url, skipCache) {
if(!skipCache && (url in _pageCache)) {
return _pageCache[url];
}
this.url = url;
this.load();
}
Bộ nhớ cache sẽ cho phép các trang đã được tải bỏ qua XHR. Tôi cũng đang lưu trữ nội dung vào một tài liệuFragment, và sau đó kéo nội dung hiện tại ra khỏi tài liệu khi tôi chèn Page
mới, vì vậy tôi trình duyệt sẽ chỉ phải xây dựng DOM cho đoạn một lần.
Bỏ qua bộ nhớ cache có thể được mong muốn nếu trang có dữ liệu nhạy cảm về thời gian.
Đây là những gì tôi cần trợ giúp quyết định: Rất có khả năng bất kỳ trang nào được tải sẽ có một số JavaScript của riêng chúng để kiểm soát trang. Giống như nếu trang sẽ sử dụng Tabs, cần một trình chiếu, có một số loại hoạt hình, có dạng ajax hoặc những gì bạn có.
Cách chính xác nhất để tải JavaScript đó vào trang là gì? Bao gồm các thẻ script trong documentFragment Tôi lấy lại từ XHR? Điều gì sẽ xảy ra nếu tôi cần bỏ qua bộ đệm và tải xuống lại đoạn. Tôi cảm thấy chính xác cùng một JavaScript được gọi là lần thứ hai có thể gây xung đột, như redeclaring các biến tương tự.
Có cách nào tốt hơn để đính kèm tập lệnh vào đầu khi chụp Page
mới? Điều đó sẽ yêu cầu trang gốc biết tất cả các tài sản mà mọi trang khác có thể cần. Ngoài việc biết cách tốt nhất để bao gồm mọi thứ, tôi có cần phải lo lắng về việc quản lý bộ nhớ hay không, và có thể rò rỉ tải rất nhiều các bit JavaScript khác nhau vào một cá thể trang đơn không? Không.
Ứng dụng một trang là gì? –
Nơi bạn tải trong trang đầu tiên từ máy chủ và mọi thứ khác sử dụng XHR, thay vì yêu cầu toàn bộ trang. Facebook là một ví dụ. – seanmonstar
jQuery là bạn của bạn. Mua cho nó một thức uống. –