Hướng dẫn where should i store javascript files? - Tôi nên lưu trữ các tệp javascript ở đâu?
1 Show
Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm. Tôi có một tệp JavaScript có nhiều chức năng được sử dụng bởi các phần khác nhau trên trang web của tôi, mỗi phần đều thuộc tên miền phụ của riêng nó. Sẽ là một ý tưởng tốt nếu tôi đặt tệp vào thư mục gốc và có tất cả các liên kết các tên miền phụ với cái cụ thể đó hoặc tôi nên có một bản sao của tệp JavaScript trong mỗi tên miền phụ và liên kết với từng bản sao? Tệp JavaScript được cập nhật với ngày nghỉ, do đó nó được cập nhật thường xuyên. Nó có nghĩa là cập nhật tất cả chúng nếu lặp đi lặp lại ... Cảm ơn trước :)
Khi được hỏi ngày 13 tháng 5 năm 2019 lúc 19:34May 13, 2019 at 19:34
3 Để tiết kiệm thời gian (cũng như không gian) và để làm cho dự án của bạn sạch sẽ, tốt nhất là đặt tệp trong thư mục chính 9 hoặc 0.Vì vậy, nói cách khác, hãy tạo một thư mục cho tất cả các tập lệnh của bạn trong gốc của dự án chính và đặt tệp trong đó:
Sau khi được thực hiện, liên kết tất cả các tên miền phụ khác với tệp đó. Hy vọng nó giúp :) Đã trả lời ngày 13 tháng 5 năm 2019 lúc 19:51May 13, 2019 at 19:51
Edwin Prattedwin PrattEdwin Pratt 80110 Huy hiệu bạc20 Huy hiệu Đồng10 silver badges20 bronze badges 2 Khi tôi có nhiều lần sử dụng cho tệp JavaScript hoặc CSS, nhưng chỉ muốn cập nhật nó một lần, tôi tạo một liên kết biểu tượng mềm Đây về cơ bản chỉ là một con trỏ hệ điều hành có thể trỏ nhiều "liên kết" vào một tệp. Bằng cách đó, bạn cập nhật tệp JavaScript duy nhất và có vẻ như bạn đã cập nhật nhiều tệp JavaScript trên nhiều trang web. Ví dụ
Dưới đây là một bài viết của Wikipedia giải thích Symlinks là gì.
Đã trả lời ngày 13 tháng 5 năm 2019 lúc 19:59May 13, 2019 at 19:59 Có thể bạn quan tâm
ZakzakZak 6.2852 Huy hiệu vàng25 Huy hiệu bạc46 Huy hiệu đồng2 gold badges25 silver badges46 bronze badges 1 Các trình duyệt web hiện đại hỗ trợ một số cách để các trang web lưu trữ dữ liệu trên máy tính của người dùng - với sự cho phép của người dùng - sau đó lấy lại khi cần thiết. Điều này cho phép bạn tồn tại dữ liệu để lưu trữ dài hạn, lưu các trang web hoặc tài liệu để sử dụng ngoại tuyến, giữ lại các cài đặt dành riêng cho người dùng cho trang web của bạn và hơn thế nữa. Bài viết này giải thích những điều cơ bản về cách thức hoạt động này. Ở những nơi khác trong khu vực học tập MDN, chúng tôi đã nói về sự khác biệt giữa các trang web tĩnh và các trang web động. Hầu hết các trang web hiện đại chính là động-chúng lưu trữ dữ liệu trên máy chủ bằng cách sử dụng một số loại cơ sở dữ liệu (lưu trữ phía máy chủ), sau đó chạy mã phía máy chủ để truy xuất dữ liệu cần thiết, chèn nó vào các mẫu trang tĩnh và phục vụ HTML kết quả để kết quả thành HTML để lấy máy khách được hiển thị bởi trình duyệt của người dùng. Lưu trữ phía máy khách hoạt động theo các nguyên tắc tương tự, nhưng có cách sử dụng khác nhau. Nó bao gồm các API JavaScript cho phép bạn lưu trữ dữ liệu trên máy khách (nghĩa là trên máy của người dùng) và sau đó truy xuất nó khi cần. Điều này có nhiều cách sử dụng khác biệt, chẳng hạn như: Thường thì lưu trữ phía máy khách và phía máy chủ được sử dụng cùng nhau. Ví dụ: bạn có thể tải xuống một loạt các tệp nhạc (có thể được sử dụng bởi một ứng dụng trò chơi web hoặc máy nghe nhạc), lưu trữ chúng bên trong cơ sở dữ liệu phía máy khách và chơi chúng khi cần thiết. Người dùng sẽ chỉ phải tải xuống các tệp nhạc một lần - trên các lượt truy cập tiếp theo, họ sẽ được truy xuất từ cơ sở dữ liệu. Lưu ý: Có giới hạn về lượng dữ liệu bạn có thể lưu trữ bằng API lưu trữ phía máy khách (có thể cả trên mỗi API riêng lẻ và tích lũy); Giới hạn chính xác khác nhau tùy thuộc vào trình duyệt và có thể dựa trên cài đặt người dùng. Xem giới hạn lưu trữ trình duyệt và tiêu chí trục xuất để biết thêm thông tin. There are limits to the amount of data you can store using client-side storage APIs (possibly both per individual API and cumulatively); the exact limit varies depending on the browser and possibly based on user settings. See
Browser storage limits and eviction criteria for more information. Khái niệm lưu trữ phía khách hàng đã tồn tại trong một thời gian dài. Kể từ những ngày đầu của web, các trang web đã sử dụng cookie để lưu trữ thông tin để cá nhân hóa trải nghiệm người dùng trên các trang web. Chúng là hình thức lưu trữ phía máy khách sớm nhất thường được sử dụng trên web. Ngày nay, có những cơ chế dễ dàng hơn để lưu trữ dữ liệu phía khách hàng, do đó chúng tôi sẽ không dạy bạn cách sử dụng cookie trong bài viết này. Tuy nhiên, điều này không có nghĩa là cookie hoàn toàn vô dụng trên web hiện đại-chúng vẫn được sử dụng phổ biến để lưu trữ dữ liệu liên quan đến cá nhân hóa và trạng thái của người dùng, ví dụ: ID phiên và mã thông báo truy cập. Để biết thêm thông tin về cookie, hãy xem bài viết của chúng tôi bằng cách sử dụng bài viết của HTTP Cookies. Các tính năng "dễ dàng hơn" mà chúng tôi đã đề cập ở trên như sau: Bạn sẽ tìm hiểu thêm về các API dưới đây. API Việc sử dụng bộ đệm và nhân viên dịch vụ là một chủ đề nâng cao và chúng tôi sẽ không bao gồm nó rất chi tiết trong bài viết này, mặc dù chúng tôi sẽ hiển thị một ví dụ trong phần lưu trữ tài sản ngoại tuyến bên dưới. Lưu trữ dữ liệu đơn giản - Lưu trữ webAPI lưu trữ web rất dễ sử dụng - bạn lưu trữ các cặp dữ liệu tên/giá trị đơn giản (giới hạn ở chuỗi, số, v.v.) và truy xuất các giá trị này khi cần thiết. Cú pháp cơ bảnHãy chỉ cho bạn cách:
Dữ liệu vẫn tồn tại!Một tính năng chính của lưu trữ web là dữ liệu vẫn tồn tại giữa các tải trang (và ngay cả khi trình duyệt bị tắt, trong trường hợp 3). Hãy xem xét điều này trong hành động.
Lưu trữ riêng cho từng miềnCó một kho lưu trữ dữ liệu riêng cho mỗi miền (mỗi địa chỉ web riêng biệt được tải trong trình duyệt). Bạn sẽ thấy rằng nếu bạn tải hai trang web (giả sử Google.com và Amazon.com) và thử lưu trữ một mục trên một trang web, nó sẽ không có sẵn cho trang web khác. Điều này có ý nghĩa - bạn có thể tưởng tượng các vấn đề bảo mật sẽ phát sinh nếu các trang web có thể nhìn thấy dữ liệu của nhau! Một ví dụ liên quan hơnHãy áp dụng kiến thức mới được tìm thấy này bằng cách viết một ví dụ làm việc để cung cấp cho bạn ý tưởng về cách sử dụng lưu trữ web. Ví dụ của chúng tôi sẽ cho phép bạn nhập tên, sau đó trang sẽ cập nhật để cung cấp cho bạn một lời chào được cá nhân hóa. Trạng thái này cũng sẽ tồn tại trên các trang tải lại trang/trình duyệt, vì tên được lưu trữ trong lưu trữ web. Bạn có thể tìm thấy ví dụ HTML tại Personal-Leting.html-Điều này chứa một trang web có tiêu đề, nội dung và chân trang và biểu mẫu để nhập tên của bạn.
Hãy xây dựng ví dụ, để bạn có thể hiểu cách thức hoạt động của nó.
Ví dụ của bạn đã hoàn thành - hoàn thành tốt! Tất cả những gì còn lại bây giờ là lưu mã của bạn và kiểm tra trang HTML của bạn trong trình duyệt. Bạn có thể thấy phiên bản đã hoàn thành của chúng tôi chạy trực tiếp ở đây. Lưu ý: Trong dòng 3 of the source for our finished version, the 8 attribute specifies that the contents of the 9 element will not execute until the page has finished
loading.Lưu trữ dữ liệu phức tạp - IndexedDBAPI IndexEdDB (đôi khi viết tắt IDB) là một hệ thống cơ sở dữ liệu hoàn chỉnh có sẵn trong trình duyệt trong đó bạn có thể lưu trữ dữ liệu liên quan phức tạp, các loại không giới hạn ở các giá trị đơn giản như chuỗi hoặc số. Bạn có thể lưu trữ video, hình ảnh và khá nhiều thứ khác trong một thể hiện lập chỉ mục. API lập chỉ mục cho phép bạn tạo cơ sở dữ liệu, sau đó tạo các lưu trữ đối tượng trong cơ sở dữ liệu đó. Các cửa hàng đối tượng giống như các bảng trong cơ sở dữ liệu quan hệ và mỗi cửa hàng đối tượng có thể chứa một số đối tượng. Để tìm hiểu thêm về API đã lập chỉ mục, hãy xem bằng cách sử dụng IndexedDB. Tuy nhiên, điều này có chi phí: IndexEdDB phức tạp hơn nhiều so với API lưu trữ web. Trong phần này, chúng tôi thực sự chỉ làm trầy xước bề mặt của những gì nó có khả năng, nhưng chúng tôi sẽ cho bạn đủ để bắt đầu. Làm việc thông qua một ví dụ lưu trữ ghi chúỞ đây, chúng tôi sẽ chạy cho bạn một ví dụ cho phép bạn lưu trữ ghi chú trong trình duyệt của bạn và xem và xóa chúng bất cứ khi nào bạn muốn, giúp bạn tự xây dựng nó và giải thích các phần cơ bản nhất của IDB khi chúng tôi đi cùng. Ứng dụng trông giống như thế này:
Mỗi ghi chú có một tiêu đề và một số văn bản cơ thể, mỗi chữ cái có thể chỉnh sửa riêng lẻ. Mã JavaScript chúng tôi sẽ trải qua dưới đây có các nhận xét chi tiết để giúp bạn hiểu những gì đang diễn ra. Bắt đầu
Cơ sở dữ liệu được thiết lập ban đầuBây giờ chúng ta hãy xem xét những gì chúng ta phải làm ở nơi đầu tiên, để thực sự thiết lập một cơ sở dữ liệu.
Vì vậy, với lược đồ cơ sở dữ liệu này được thiết lập, khi chúng tôi bắt đầu thêm các bản ghi vào cơ sở dữ liệu, mỗi bản đồ sẽ được biểu diễn dưới dạng một đối tượng dọc theo các dòng sau: 6Thêm dữ liệu vào cơ sở dữ liệuBây giờ chúng ta hãy xem cách chúng ta có thể thêm bản ghi vào cơ sở dữ liệu. Điều này sẽ được thực hiện bằng cách sử dụng biểu mẫu trên trang của chúng tôi. Bên dưới trình xử lý sự kiện trước đây của bạn, hãy thêm dòng sau, thiết lập trình xử lý sự kiện 7 chạy chức năng gọi là 8 khi biểu mẫu được gửi (khi gửi 6 được nhấn dẫn đến gửi biểu mẫu thành công): 7Bây giờ chúng ta hãy xác định chức năng 8. Thêm điều này bên dưới dòng trước của bạn: 8
Điều này khá phức tạp; Phá vỡ nó, chúng tôi:
Hiển thị dữ liệuChúng tôi đã tham khảo 7 hai lần trong mã của chúng tôi, vì vậy chúng tôi có thể xác định tốt hơn. Thêm điều này vào mã của bạn, bên dưới định nghĩa chức năng trước đó: 9Một lần nữa, hãy phá vỡ điều này:
Xóa một ghi chúNhư đã nêu ở trên, khi nhấn nút xóa của một ghi chú, ghi chú sẽ bị xóa. Điều này đạt được bằng hàm 24, trông như vậy: 0
À chính nó đấy! Ví dụ của bạn bây giờ sẽ hoạt động. Nếu bạn gặp rắc rối với nó, hãy kiểm tra nó so với ví dụ trực tiếp của chúng tôi (xem mã nguồn). Lưu trữ dữ liệu phức tạp qua IndexedDBNhư chúng tôi đã đề cập ở trên, IndexEdDB có thể được sử dụng để lưu trữ nhiều hơn chỉ là các chuỗi văn bản. Bạn có thể lưu trữ bất cứ thứ gì bạn muốn, bao gồm các đối tượng phức tạp như video hoặc hình ảnh. Và việc đạt được không khó hơn nhiều so với bất kỳ loại dữ liệu nào khác. Để chứng minh cách thực hiện, chúng tôi đã viết một ví dụ khác có tên là IndexedDB Video Store (xem nó cũng đang chạy trực tiếp ở đây). Khi bạn lần đầu tiên chạy ví dụ, nó sẽ tải xuống tất cả các video từ mạng, lưu trữ chúng trong cơ sở dữ liệu IndexedDB và sau đó hiển thị các video trong UI bên trong các phần tử 42. Lần thứ hai bạn chạy nó, nó tìm thấy các video trong cơ sở dữ liệu và nhận chúng từ đó trước khi hiển thị chúng-điều này làm cho tải tiếp theo nhanh hơn và ít đói băng thông hơn.Hãy đi qua những phần thú vị nhất của ví dụ. Chúng tôi sẽ không nhìn vào tất cả-rất nhiều trong số đó tương tự như ví dụ trước đó và mã được đưa ra tốt.
Lưu trữ tài sản ngoại tuyếnVí dụ trên đã cho thấy cách tạo một ứng dụng sẽ lưu trữ các tài sản lớn trong cơ sở dữ liệu IndexedDB, tránh cần phải tải chúng nhiều lần. Đây đã là một cải tiến tuyệt vời cho trải nghiệm người dùng, nhưng vẫn còn một điều còn thiếu - các tệp HTML, CSS và JavaScript chính vẫn cần được tải xuống mỗi khi trang web được truy cập, nghĩa là nó sẽ không hoạt động khi có không có kết nối mạng.
Đây là nơi nhân viên dịch vụ và API bộ đệm liên quan chặt chẽ đến. Nhân viên dịch vụ là một tệp JavaScript được đăng ký theo một nguồn gốc cụ thể (trang web hoặc một phần của trang web tại một tên miền nhất định) khi nó được truy cập bởi trình duyệt. Khi được đăng ký, nó có thể kiểm soát các trang có sẵn ở nguồn gốc đó. Nó thực hiện điều này bằng cách ngồi giữa một trang được tải và mạng và các yêu cầu chặn mạng nhắm vào nguồn gốc đó. Khi nó chặn một yêu cầu, nó có thể làm bất cứ điều gì bạn muốn đối với nó (xem sử dụng ý tưởng trường hợp), nhưng ví dụ cổ điển là lưu các phản hồi mạng ngoại tuyến và sau đó cung cấp những người đó để đáp ứng yêu cầu thay vì các phản hồi từ mạng. Trên thực tế, nó cho phép bạn làm cho một trang web hoạt động hoàn toàn ngoại tuyến. API bộ đệm là một cơ chế lưu trữ phía máy khách khác, với một chút khác biệt-nó được thiết kế để lưu các phản hồi HTTP và do đó hoạt động rất tốt với nhân viên dịch vụ. Một ví dụ về nhân viên dịch vụChúng ta hãy xem một ví dụ, để cung cấp cho bạn một chút ý tưởng về điều này có thể trông như thế nào. Chúng tôi đã tạo một phiên bản khác của ví dụ Store Store mà chúng tôi đã thấy trong phần trước - các chức năng này giống hệt nhau, ngoại trừ việc nó cũng lưu HTML, CSS và JavaScript trong API bộ đệm thông qua nhân viên dịch vụ, cho phép ví dụ chạy ngoại tuyến! Xem IndexedDB Store Store với nhân viên dịch vụ đang chạy trực tiếp và cũng xem mã nguồn. Đăng ký nhân viên dịch vụĐiều đầu tiên cần lưu ý là có thêm một chút mã được đặt trong tệp JavaScript chính (xem index.js). Đầu tiên, chúng tôi thực hiện kiểm tra phát hiện tính năng để xem liệu thành viên 66 có sẵn trong đối tượng 67 không. Nếu điều này trả về đúng, thì chúng ta biết rằng ít nhất những điều cơ bản của nhân viên dịch vụ được hỗ trợ. Bên trong đây, chúng tôi sử dụng phương thức 68 để đăng ký một nhân viên dịch vụ có trong tệp 69 so với nguồn gốc mà nó nằm ở, để nó có thể kiểm soát các trang trong cùng thư mục với nó hoặc thư mục con. Khi lời hứa của nó đáp ứng, nhân viên dịch vụ được coi là đã đăng ký. 6Lưu ý: Đường dẫn đã cho đến tệp 69 file is relative to the site origin, not the JavaScript file that contains the code. The service worker is at 71. The origin is 72, and therefore the given path has to be 73. If you wanted to host this example on your own server, you'd have to change this accordingly. This is rather confusing, but it has to work this
way for security reasons.Cài đặt nhân viên dịch vụLần tiếp theo, bất kỳ trang nào trong sự kiểm soát của nhân viên dịch vụ được truy cập (ví dụ: khi ví dụ được tải lại), nhân viên dịch vụ được cài đặt so với trang đó, có nghĩa là nó sẽ bắt đầu kiểm soát nó. Khi điều này xảy ra, một sự kiện 74 được bắn vào nhân viên dịch vụ; Bạn có thể viết mã bên trong chính nhân viên dịch vụ sẽ trả lời cài đặt.Chúng ta hãy xem một ví dụ, trong tệp SW.JS (nhân viên dịch vụ). Bạn sẽ thấy rằng trình nghe cài đặt được đăng ký so với 75. Từ khóa 75 này là một cách để tham khảo phạm vi toàn cầu của nhân viên dịch vụ từ bên trong tệp nhân viên dịch vụ.Bên trong trình xử lý 74, chúng tôi sử dụng phương thức 78, có sẵn trên đối tượng sự kiện, để báo hiệu rằng trình duyệt không nên hoàn thành việc cài đặt nhân viên dịch vụ cho đến khi lời hứa bên trong nó hoàn thành thành công.Đây là nơi chúng tôi thấy API Cache hoạt động. Chúng tôi sử dụng phương thức 79 để mở một đối tượng bộ đệm mới trong đó các phản hồi có thể được lưu trữ (tương tự như lưu trữ đối tượng IndexedDB). Lời hứa này đáp ứng với một đối tượng 1 đại diện cho bộ đệm 81. Sau đó, chúng tôi sử dụng phương thức 82 để tìm nạp một loạt tài sản và thêm phản hồi của họ vào bộ đệm. 7Đó là bây giờ, cài đặt đã hoàn thành. Trả lời các yêu cầu tiếp theoVới nhân viên dịch vụ đã đăng ký và cài đặt so với trang HTML của chúng tôi và tất cả các tài sản có liên quan được thêm vào bộ đệm của chúng tôi, chúng tôi gần như đã sẵn sàng để đi. Chỉ có một điều nữa để làm: Viết một số mã để trả lời các yêu cầu mạng tiếp theo. Đây là những gì mã thứ hai của mã trong 69 làm. Chúng tôi thêm một người nghe khác vào phạm vi toàn cầu của nhân viên dịch vụ, điều hành chức năng xử lý khi sự kiện 84 được nâng lên. Điều này xảy ra bất cứ khi nào trình duyệt đưa ra yêu cầu cho một tài sản trong thư mục mà nhân viên dịch vụ được đăng ký chống lại.Bên trong trình xử lý, trước tiên chúng tôi đăng nhập URL của tài sản được yêu cầu. Sau đó, chúng tôi cung cấp một phản hồi tùy chỉnh cho yêu cầu, sử dụng phương thức 85.Bên trong khối này, chúng tôi sử dụng 86 để kiểm tra xem có thể tìm thấy yêu cầu phù hợp hay không (nghĩa là khớp URL) có thể được tìm thấy trong bất kỳ bộ đệm nào không. Lời hứa này đáp ứng với phản hồi phù hợp nếu tìm thấy một trận đấu hoặc 30 nếu không.Nếu một trận đấu được tìm thấy, chúng tôi trả lại nó dưới dạng phản hồi tùy chỉnh. Nếu không, chúng tôi sẽ tìm kiếm () phản hồi từ mạng và thay vào đó trả về. 8Và đó là nó cho nhân viên dịch vụ của chúng tôi. Có toàn bộ tải nhiều hơn bạn có thể làm với họ - để biết thêm chi tiết hơn, hãy xem Sách nấu ăn nhân viên dịch vụ. Rất cám ơn Paul Kinlan vì bài viết của anh ấy thêm một nhân viên dịch vụ và ngoại tuyến vào ứng dụng web của bạn, đã truyền cảm hứng cho ví dụ này. Kiểm tra ví dụ ngoại tuyếnĐể kiểm tra ví dụ nhân viên dịch vụ của chúng tôi, bạn sẽ cần tải nó một vài lần để đảm bảo nó được cài đặt. Một khi điều này được thực hiện, bạn có thể:
Nếu bạn làm mới trang ví dụ của mình một lần nữa, bạn vẫn sẽ thấy nó tải tốt. Mọi thứ đều được lưu trữ ngoại tuyến - tài sản trang trong bộ đệm và các video trong cơ sở dữ liệu IndexedDB. Bản tóm tắtĐó là nó bây giờ. Chúng tôi hy vọng bạn đã thấy các công nghệ lưu trữ phía máy khách của chúng tôi hữu ích. Xem thêmTrong mô -đun nàyJavaScript được lưu trữ ở đâu?Các biến JavaScript được lưu trữ trong bộ nhớ của quy trình trình duyệt.Các cách sau có thể hoạt động để lưu trữ các biến: các biến mà bạn khai báo trong mã JavaScript của bạn sẽ được lưu trong bộ nhớ của quy trình trình duyệt.
Tôi có nên đặt tất cả JavaScript của mình trong một tệp không?Để tránh nhiều yêu cầu máy chủ, hãy nhóm các tệp JavaScript của bạn thành một.Bất cứ điều gì bạn sử dụng cho hiệu suất, hãy cố gắng thu nhỏ JavaScript để cải thiện thời gian tải của trang web.Nếu bạn đang sử dụng ứng dụng một trang, thì hãy nhóm tất cả các tập lệnh trong một tệp.. Whatever you use for performance, try to minify JavaScript to improve the load time of the web page. If you are using single page application, then group all the scripts in a single file. |