Tôi sẽ thêm một bản cập nhật cho điều này bởi vì tôi nghĩ rằng sự xuất hiện của JS trên web phía máy khách đã bị hiểu nhầm ở một vài điểm chính trong những năm qua.
Đó không phải là Ajax
Tôi không nói rằng Ajax không quan trọng đối với sự phát triển của sự hiểu biết về ngôn ngữ của JS như một ngôn ngữ nhưng cuộc chiến giành quyền thống trị trình duyệt phía máy khách đã kết thúc rất lâu trước khi thuật ngữ Ajax được đặt ra.
Không phải vì đó là trò chơi duy nhất trong thị trấn
Có các ứng dụng Java, Flash và VBScript. Tôi đã nghe nói thậm chí còn có các tùy chọn kịch bản khác trong thập niên 90 (nhưng IIRC bổ trợ bắt buộc). Java rất phổ biến nhưng các applet là một thất bại nặng nề. Chúng xấu xí và thường là phô mai bảo mật nhưng quan trọng hơn là tôi không nghĩ Java phù hợp với lý do tôi sẽ đi vào sau. Flash rất phổ biến và có chỗ đứng vững chắc trong một số năm, nhưng ngay cả khi Flash cuối cùng cũng có các tùy chọn SEO, chúng vẫn không được sử dụng, khiến các trang web Flash rất khó để khám phá. Ngay cả bây giờ, hầu hết chúng ta thường xuyên cập nhật Flash để chúng ta có thể xem phim nhưng đó là gót chân Achilles thực sự. Công nghệ độc quyền trong trình duyệt là gây phiền nhiễu. Và dĩ nhiên VB, vốn chỉ hoạt động với IE, nên không.
Đúng nơi đúng lúc có liên quan nhưng không phải là toàn bộ câu trả lời
Có, không có sóng web để chạy, chúng tôi có thể chưa bao giờ thấy JavaScript hoặc ngôn ngữ được sử dụng phổ biến như nó ngay khi chúng tôi làm. Hoặc có lẽ chúng ta sẽ có ...
Nó đã trở thành công cụ hoàn hảo cho miền vấn đề
Tôi muốn nói khoảng năm 2000, chúng tôi đã có những vấn đề sau:
- IE và Netscape chỉ đồng ý bắt đầu chơi tốt bằng cách tham dự cùng các tiêu chuẩn DOM API và CSS và chúng tôi đã phải đối phó với các vấn đề về trình duyệt chéo JS cũ mà chỉ mới bắt đầu có thể quản lý được không có sự trợ giúp của các công cụ chuẩn hóa JS DOM như jQuery post IE8
- Có một thế hệ hoàn toàn mới của các nhà phát triển / thiết kế web, những người không nhất thiết phải là những người nặng ký khi các lập trình viên tìm cách cải thiện trò chơi sau vụ nổ bong bóng sau khi họ ngừng đưa cho bạn một mức lương xứng đáng để hiển thị ở cửa mà không có gì hơn hơn kiến thức HTML cơ bản và một số kỹ năng photoshop.
- Có một đứa trẻ CSS mới trong thị trấn cung cấp các khả năng hấp dẫn cho cái cuối cùng được gọi là DHTML, (Script thích hợp hơn), Scripting (bây giờ không phù hợp) HTML5 (zomghtml5!).
Vì vậy, chúng tôi cần một ngôn ngữ vừa sâu, cung cấp khả năng thực sự cấu trúc và kiến trúc sư một ứng dụng tiên tiến hơn với các thành phần di động / có thể sử dụng lại ở phía khách hàng nhưng cũng có thể truy cập được cho những người không biết nhiều và chỉ cần những thứ cần thiết xuất hiện / xuất hiện lại khi bạn nhấp vào nút.
Hơn nữa, MS là con thú vô dụng / không đủ năng lực và / hoặc thống trị thông qua chống cạnh tranh, thực thi mà đôi khi họ không thể thực sự chạm vào việc triển khai API DOM không tuân thủ của họ trong một thập kỷ vững chắc, mặc dù họ đã xoay sở để thêm điều không thường xuyên như đối tượng XHR gốc và querySelector trong IE8.
Điều quan trọng cần lưu ý là vào khoảng năm 2005, chúng tôi đã cố gắng chôn vùi hoàn toàn sự phức tạp liên quan đến việc xử lý các vấn đề trên trình duyệt chéo mà nó không thực sự là vấn đề nghiêm trọng nữa trên mặt trận JavaScript. Việc không hỗ trợ CSS2 đúng cách miễn là chúng gây ra nhiều đau đớn hơn. Để biết ý tưởng về khối lượng và độ sâu của vấn đề, tôi khuyên bạn nên kiểm tra quirksmode.org . Tôi không nghĩ rằng đây là một kỳ tích có thể đạt được một cách suôn sẻ và trong nhiều thư viện trong Java, chắc chắn không phải trong VB và chắc chắn không phải với bất kỳ chiến lược bổ trợ nào có mục tiêu là vượt qua toàn bộ vấn đề bằng cách trở thành một vấn đề hoàn toàn mới loại phiền toái.
Các tính năng ngôn ngữ khác mang lại nhiều ý nghĩa cho giao diện người dùng:
Các chức năng hạng nhất: Theo kinh nghiệm của tôi, không có gì cho vay tốt hơn để xử lý không đồng bộ và các mô hình hướng sự kiện hơn là một ngôn ngữ làm cho các chức năng của nó trở thành hạng nhất. Cả hai mối quan tâm thường xuyên được giải quyết trong công việc UI.
Các kiểu động: Đúc và kiểm tra kiểu là một nhu cầu rất hiếm trong JavaScript, giúp giữ cho mã ngắn gọn và gọn gàng. Các mối quan tâm về UI có thể trở nên phức tạp và lộn xộn rất nhanh. Giữ mã chặt chẽ và hoàn toàn rõ ràng về luồng dữ liệu là rất quan trọng để hiểu và sửa đổi / duy trì nó.
Đó không phải là người bảo vệ: Trong nhiều năm, ai đó đã rao giảng rằng bạn cần tự bảo vệ mình khỏi những sai lầm của chính mình và những điều ngu ngốc mà anh chàng kia có thể làm với mã của bạn bằng cách xây dựng mã rất cứng nhắc và không linh hoạt và không thể can thiệp vào mục đích ban đầu. tác giả với và rất nhiều người đã lắng nghe. Tôi sẽ không nói rằng họ luôn luôn sai (có thể nghĩ vậy) nhưng tôi sẽ nói rằng đó là cách tiếp cận sai đối với giao diện người dùng web và tôi tin rằng đó là một hiện tượng mà chúng tôi đã xử lý, duy trì và sửa đổi khách hàng- GUI bên với tốc độ nhanh hơn nhiều và dễ dàng hơn công việc như vậy thường được thực hiện bằng các ngôn ngữ hạn chế hơn trong quá khứ. Việc có thể thay đổi mọi thứ một cách nhanh chóng và dễ dàng giúp dễ dàng hơn nhiều khi có các sơ đồ kiến trúc động / lỏng mà không yêu cầu số lượng lớn của sự gián tiếp và trừu tượng trên đầu, điều này giúp dễ dàng nhận ra điều gì đang xảy ra trong mã của bạn và pre-empt hoặc xử lý các ngoại lệ sạch sẽ hơn nhiều. Dễ dàng hơn để duy trì đơn giản thông qua đức tính tuyệt đối của việc làm cho nó có thể trở nên trực tiếp hơn trong mọi việc bạn làm và với ít mã hơn nhiều so với triết lý khác.
Làm thế nào mà JS trở nên phổ biến? Nó đã chứng tỏ là một công cụ tuyệt vời cho công việc hết lần này đến lần khác. Đó không phải là ngôn ngữ mà chúng ta "mắc kẹt" Đó là ngôn ngữ có thể đã truyền cảm hứng cho rất nhiều sự tiến hóa trong các ngôn ngữ phổ biến nói chung. Và vì điều đó, bạn có thể cảm ơn Brendan Eich và bất kỳ người đương thời nào đã giúp đưa ý tưởng này vào đầu mình, vì thích Scheme như một cảm hứng thiết kế phù hợp với vấn đề trong tay hơn là anh ta thích Java.