html5boilerplate - Vị trí Javascript riêng cho từng trang trong HTML5 Boilerplate
Câu hỏi
Nếu bạn sử dụng một tệp javascript duy nhất để chứa tất cả các script, thì bạn đặt các script chỉ dành cho một trang ở đâu?
Nền tảng
Điều này có thể là vấn đề về ý kiến hoặc 'thực hành tốt nhất', nhưng tôi quan tâm đến ý kiến của người khác:
Tôi đang sử dụng html5 Boilerplate trong một dự án. Họ khuyên bạn nên đặt tất cả javascript vào một tệp duy nhất script.js để tăng tốc độ và sự nhất quán. Có vẻ hợp lý.
Tuy nhiên, tôi có một đoạn script định vị địa lý chỉ liên quan đến một trang duy nhất, và không phải các trang khác. Liệu tôi có nên phá vỡ quy ước và chỉ đặt đoạn script này trên trang đó dưới các lệnh gọi tới các thư viện javascript mà nó phụ thuộc không? Chỉ cần gọi tới các hàm liên quan (nằm trong file script.js), bên dưới các liên kết tới các thư viện mà chúng phụ thuộc?
Cảm ơn!
Câu trả lời #1
Những người tốt tại html5 boilerplate khuyên bạn nên đặt tất cả javascript của mình vào script.js để trình duyệt chỉ phải tải tệp đó duy nhất (cùng với những tệp khác mà h5bp sử dụng) và để cho phép lưu trữ tạm thời (caching) của tệp đó.
Ý tưởng là không bị cuốn vào cách 'được khuyên dùng', và hãy suy nghĩ về những điều liên quan đến các ứng dụng của riêng bạn.
- Tệp định vị địa lý này chỉ được sử dụng trên trang này, đúng không? Nó sẽ không bao giờ được sử dụng ở bất kỳ nơi nào khác.
- Tệp script.js sẽ được sử dụng trên nhiều trang.
Vậy thì sẽ không hợp lý nếu đặt một "toàn bộ kịch bản" mà chỉ cần trên một trang vào tệp script.js. Bạn nên tạo tệp đó bên ngoài và gọi nó riêng trên trang mà nó cần thiết. Điều này sẽ giúp bạn tránh làm phình to tệp script.js với các chức năng có thể không bao giờ được người dùng đó sử dụng.
Tuy nhiên, nếu "toàn bộ script" của bạn cho chức năng định vị địa lý khá nhỏ, thì hãy đưa nó vào script.js. Nếu việc đó không làm tăng tốc độ tải file đó, thì việc đưa nó vào đó là hợp lý.
Ý chính của tất cả những điều này là, Điều gì là sự đánh đổi tốt nhất cho ứng dụng của tôi?
Những điều này chúng ta biết là đúng:
- các tệp js đã được lưu trong bộ nhớ cache thì tốt
- ít tập tin để tải xuống là tốt
- các tệp nhỏ hơn để tải về thì tốt
- bảo trì là quan trọng
Khi bạn nghĩ về những điều này dưới góc độ ứng dụng của mình, việc ra quyết định sẽ trở nên dễ dàng hơn một chút. Và hãy nhớ, những quyết định đánh đổi từng mili giây sẽ không tạo ra nhiều khác biệt trong "cảm nhận" của người dùng về tốc độ tải trang của bạn.
Câu trả lời #2
Trình duyệt sẽ chỉ tải xuống các tệp .js một lần (trừ khi có điều gì đó khiến trình duyệt không lưu vào bộ nhớ đệm). Vì vậy, nếu bạn mong tất cả người dùng của mình sẽ truy cập vào một trang sử dụng định vị địa lý vào một thời điểm nào đó trong phiên của họ, thì bạn cũng nên cung cấp cho họ sớm. Nếu bạn nghĩ rằng có thể chỉ một tỉ lệ nhỏ người dùng cuối cùng sẽ truy cập vào trang định vị địa lý, thì có lẽ bạn muốn tách chúng ra.