Trả lời từ góc độ phía trước:
Đừng nghe mọi người nói rằng điều đó không thể thực hiện được, bởi vì một dịch vụ web thử nghiệm của Đại học bang San Francisco mà tôi đã viết vào năm 1996 cuối cùng đã lên thiên đường Internet vài năm trước và không bao giờ cần một bản sửa lỗi tương thích trình duyệt trong thời gian đó ; đó là gần một nửa mục tiêu 40 năm của bạn. Và giao diện người dùng dựa trên JavaScript này tôi đã thực hiện vào năm 1998 cho một dự án của Viện nghiên cứu Stanford đã được thay thế bằng một thứ gì đó chớp nhoáng hơn một vài năm sau đó, nhưng không có lý do gì mà giao diện người dùng ban đầu vẫn không thể chạy được với các bản sửa lỗi tương thích nhỏ.
Mẹo nhỏ là đảm bảo ứng dụng của bạn chỉ sử dụng các tiêu chuẩn W3C / ECMA được hỗ trợ rộng rãi và có thiết kế rõ ràng dưới sự kiểm soát của bạn. Mặc dù rất nhiều ứng dụng web được viết cho công nghệ thời thượng của thập niên 90 sẽ không hoạt động tốt hoặc hoàn toàn không có ngày nay, các ứng dụng web có từ thời 90 được viết theo các tiêu chuẩn chính vẫn còn. Họ có thể trông bị động, nhưng họ làm việc.
Mục tiêu ở đây không phải là viết một ứng dụng web sẽ xuất hiện trên máy chủ của họ và tồn tại ở đó trong 40 năm mà không có ai chạm vào nó nữa. Đó là để xây dựng một nền tảng vẫn có thể được sử dụng trong nhiều thập kỷ, có thể phát triển để hỗ trợ các tính năng mới mà không phải xây dựng lại từ đầu.
Trước hết, bạn phải viết mã theo tiêu chuẩn chính thức và chỉ theo tiêu chuẩn chính thức. Không có tính năng JavaScript nào không phải là một phần của tiêu chuẩn ECMAScript đã được phê chuẩn; ES5.1 là phiên bản hiện tại và thường được hỗ trợ để nhắm mục tiêu an toàn. Tương tự, các phiên bản hiện tại của HTML5, CSS và Unicode đều tốt. Không có tính năng JavaScript, CSS3 hoặc HTML thử nghiệm (những tính năng có tiền tố nhà cung cấp hoặc không có thỏa thuận 100% giữa các trình duyệt). Và không có hack tương thích trình duyệt cụ thể. Bạn có thể bắt đầu sử dụng một tính năng mới một khi nó có trong tiêu chuẩn và mọi người đều hỗ trợ nó mà không cần tiền tố.
Hỗ trợ ES5 có nghĩa là bỏ IE8 hoặc sớm hơn, điều mà tôi đề xuất dù sao đi nữa vì nó yêu cầu các bản hack dành riêng cho trình duyệt sẽ vô dụng trong một vài năm. Tôi đề nghị Chế độ nghiêm ngặt của ES5 để có cơ hội tốt nhất về tuổi thọ, điều này thực sự đặt khả năng tương thích trình duyệt cơ bản của bạn tại IE10 và các phiên bản gần đây của mọi người khác . Các trình duyệt này cũng có hỗ trợ riêng cho nhiều tính năng xác thực mẫu và giữ chỗ của HTML5, sẽ hữu ích trong một thời gian rất dài.
Các phiên bản mới của ECMAScript duy trì khả năng tương thích với các phiên bản cũ hơn, do đó việc áp dụng các tính năng sắp tới sẽ dễ dàng hơn nhiều nếu mã của bạn được viết theo các tiêu chuẩn hiện hành. Ví dụ, các lớp được xác định bằng class
cú pháp sắp tới sẽ có thể hoán đổi hoàn toàn với các lớp được xác định bằng constructor.prototype
cú pháp hiện tại . Vì vậy, trong năm năm, một nhà phát triển có thể viết lại các lớp thành định dạng ES6 trên cơ sở từng tệp mà không vi phạm bất cứ điều gì - tất nhiên, giả sử rằng bạn cũng có các bài kiểm tra đơn vị tốt.
Thứ hai, tránh các khung ứng dụng JavaScript hợp thời trang, đặc biệt nếu chúng thay đổi cách bạn mã hóa ứng dụng của mình. Xương sống là tất cả các cơn thịnh nộ, sau đó SproutCore và Ember, và bây giờ Angular là khuôn khổ mà mọi người yêu thích để thúc đẩy. Chúng có thể hữu ích, nhưng chúng cũng có một điểm chung: chúng thường phá vỡ các ứng dụng và yêu cầu thay đổi mã khi các phiên bản mới xuất hiện và tuổi thọ của chúng là nghi vấn. Gần đây tôi đã cập nhật một ứng dụng Angular 1.1 lên 1.2 và khá nhiều thứ phải viết lại. Tương tự như vậy, đi từ Backbone 2 đến 3 đòi hỏi rất nhiều thay đổi HTML. Các tiêu chuẩn chuyển động chậm vì một lý do, nhưng các khung này di chuyển nhanh và những thứ phá vỡ định kỳ là chi phí.
Thêm vào đó, các tiêu chuẩn chính thức mới thường khiến các khung cũ bị lỗi thời và khi điều đó xảy ra, các khung đó sẽ bị đột biến (với các thay đổi vi phạm) hoặc bị bỏ lại phía sau. Bạn có biết điều gì sẽ xảy ra với tất cả các thư viện hứa hẹn cạnh tranh trên thế giới sau khi ECMAScript 6 được phê chuẩn và tất cả các trình duyệt đều hỗ trợ lớp Promise được tiêu chuẩn hóa của nó không? Họ sẽ trở nên lỗi thời và các nhà phát triển của họ sẽ ngừng cập nhật chúng. Nếu bạn chọn đúng khung, mã của bạn có thể thích nghi đủ tốt và nếu bạn đoán kém, bạn sẽ xem xét một cấu trúc lại chính.
Vì vậy, nếu bạn đang nghĩ đến việc áp dụng thư viện hoặc khung của bên thứ ba, hãy tự hỏi bản thân sẽ khó xóa như thế nào trong tương lai. Nếu đó là một khung như Angular không thể bị xóa mà không xây dựng lại ứng dụng của bạn từ đầu, thì đó là một dấu hiệu tốt, nó không thể được sử dụng trong kiến trúc 40 năm. Nếu đó là tiện ích lịch của bên thứ ba mà bạn đã trừu tượng hóa với một số phần mềm trung gian tùy chỉnh, việc thay thế nó sẽ mất vài giờ.
Thứ ba, cung cấp cho nó một cấu trúc ứng dụng tốt, sạch sẽ. Ngay cả khi bạn không sử dụng khung ứng dụng, bạn vẫn có thể tận dụng các công cụ dành cho nhà phát triển, xây dựng tập lệnh và thiết kế sạch sẽ. Cá nhân tôi là một fan hâm mộ của quản lý phụ thuộc của Bộ công cụ đóng cửa vì nó nhẹ và chi phí hoàn toàn bị loại bỏ khi xây dựng ứng dụng của bạn. LessCSS và SCSS cũng là những công cụ tuyệt vời để tổ chức các bảng định kiểu của bạn và xây dựng các bảng định kiểu CSS dựa trên tiêu chuẩn để phát hành.
Bạn cũng có thể tổ chức mã của riêng mình thành các lớp sử dụng một lần với cấu trúc MVC. Điều đó sẽ giúp việc trở lại tương lai dễ dàng hơn nhiều trong tương lai và biết bạn đang nghĩ gì khi bạn viết một cái gì đó, và chỉ thay thế những phần cần nó.
Bạn cũng nên làm theo lời khuyên của W3C và giữ thông tin trình bày hoàn toàn khỏi HTML của bạn. . đến các nền tảng mới trong tương lai. Cũng sẽ dễ dàng hơn để thêm hỗ trợ cho các trình duyệt chuyên dụng cho người mù hoặc người khuyết tật.
Thứ tư, tự động hóa các bài kiểm tra của bạn và đảm bảo bạn có phạm vi bảo hiểm gần đầy. Viết các bài kiểm tra đơn vị cho mọi lớp, cho dù phía máy chủ hoặc bằng JavaScript. Ở mặt trước, đảm bảo mỗi lớp thực hiện theo thông số kỹ thuật của nó trong mọi trình duyệt được hỗ trợ. Tự động hóa các thử nghiệm này từ bot xây dựng của bạn cho mỗi cam kết. Điều này rất quan trọng đối với cả tuổi thọ và độ tin cậy, vì bạn có thể bắt lỗi sớm ngay cả khi các trình duyệt hiện tại che khuất chúng. Cả hai khung thử nghiệm dựa trên JSUnit của Jasmine và Google Clos đều tốt.
Bạn cũng sẽ muốn chạy các bài kiểm tra chức năng UI đầy đủ, mà Selenium / WebDriver rất giỏi. Về cơ bản, bạn viết một chương trình bước qua UI của bạn và sử dụng nó như thể một người đang thử nghiệm nó. Dây những người lên đến bot xây dựng là tốt.
Cuối cùng, như những người khác đã đề cập dữ liệu của bạn là vua. Hãy suy nghĩ thông qua mô hình lưu trữ dữ liệu của bạn và đảm bảo rằng nó được xây dựng để tồn tại. Đảm bảo rằng lược đồ dữ liệu của bạn là vững chắc và đảm bảo rằng nó đã được kiểm tra kỹ lưỡng trên mỗi cam kết. Và chắc chắn rằng kiến trúc máy chủ của bạn có thể mở rộng. Điều này thậm chí còn quan trọng hơn bất cứ điều gì bạn làm ở mặt trước.