Có, bạn có thể thao tác DOM và kết nối với các sự kiện trong javascript và đó là tất cả những gì bạn thực sự cần để xây dựng một ứng dụng web. Điều đó nói rằng, bạn có thể sẽ gặp phải các vấn đề sau khi mức độ phức tạp của dự án của bạn tăng lên:
- Phụ thuộc: Khi các tệp mã của bạn bắt đầu lớn lên quá nhiều, bạn nên tách chúng thành các tệp nhỏ hơn, một cách tốt để bắt đầu là tạo các lớp ES6 (hoặc kế thừa nguyên mẫu ES5 trong trường hợp bạn quan tâm đến các trình duyệt cũ hơn) cho các và có một tệp chính khởi động ứng dụng của bạn và khởi tạo các lớp / đối tượng kế thừa đó.
Làm thế nào bạn làm điều đó? tốt, bạn phải đưa từng tệp bạn tạo vào HTML của mình theo đúng thứ tự, vì vậy tất cả các tệp phụ thuộc được chọn một cách chính xác, điều đó khá lộn xộn và cũng khiến trình soạn thảo mã của bạn rất khó cung cấp intellisense. Ngoài ra, số lượng tệp mà trình duyệt phải tải xuống sẽ nhanh chóng tăng lên và điều đó có nghĩa là một hình phạt về hiệu suất cho ứng dụng của bạn. - Khả năng tương thích: Một số trình duyệt hỗ trợ một số hoạt động nhất định và một số thì không, vì vậy bạn phải chắc chắn mình muốn hỗ trợ trình duyệt nào. Ví dụ: nếu bạn muốn sử dụng, chẳng hạn như từ khóa “const”, ứng dụng của bạn sẽ không hoạt động trên IE10, Firefox 35 hoặc chrome 20. Có hàng tá điều cần cân nhắc đối với từng tính năng của ES6.
- Khả năng tái sử dụng: Ok, bạn nhận ra rằng bạn đã tạo biểu mẫu đó 5 lần, vì vậy đã đến lúc cấu trúc lại. Bạn phải nghĩ ra một cách để đóng gói đoạn mã HTML đó, cùng với hành vi, xác nhận, đầu vào và đầu ra của nó theo cách ngăn bạn sao chép, dán và sửa đổi một chút cùng một đoạn mã lặp đi lặp lại. Đó là một nhiệm vụ phức tạp, nhưng vẫn có thể làm được.
- Tối ưu hóa: Mã của bạn nằm trên hàng nghìn dòng mã, do đó, có rất nhiều thứ để gửi qua kết nối internet hạn chế của khách hàng, bạn cần nghĩ cách giảm kích thước ứng dụng của mình. Một cách hiệu quả là giảm thiểu mã của bạn, sử dụng một công cụ bạn vừa tải xuống từ internet, vì vậy, trước khi tải mã lên, bạn phải thu nhỏ từng tệp của mình bằng công cụ đó và đảm bảo không có gì bị hỏng khi bạn làm điều đó.
- Quản lý Nhà nước: OK, các quy tắc kinh doanh của bạn bắt đầu phức tạp khi các yêu cầu phát triển. “Biểu mẫu mặt hàng mới” sẽ hiển thị tùy chọn để gửi thông báo đến quản trị viên hệ thống nếu trang trước của biểu mẫu là biểu mẫu “mặt hàng dễ hỏng”, ngoại trừ khi biểu mẫu cuối cùng do chính quản trị viên hệ thống gửi, trong trường hợp đó thông báo sẽ chuyển trực tiếp đến khách hàng đã đặt hàng. OK gì? Làm thế nào để chúng tôi quản lý điều đó, và làm thế nào để chúng tôi gỡ lỗi nó?
- Khả năng duy trì: Mã của bạn cần thực hiện một cuộc gọi AJAX, sau khi bạn có kết quả của cuộc gọi đó, bạn cần thực hiện một cuộc gọi AJAX khác. Nếu trong lần gọi ajax thứ hai này, người dùng nhấp vào nút A, bạn phải hủy cuộc gọi đó và bắt đầu lại quá trình. Bây giờ có một yêu cầu mới nói rằng cuộc gọi AJAX cuối cùng không nên bị gián đoạn mà thay vào đó là đưa vào hàng đợi, với kết quả được nối vào một hộp văn bản. Mã mà bây giờ bạn phải thay đổi trông như thế này:
- makeAjaxCall ('api / order /' + txtOrderNumber.value, function (result) {
- makeAjaxCall ('api / khách hàng' ...........
- Ngoài ra, tại sao bạn lại xử lý lỗi trong hàm makeAjaxCall của mình? Bạn sẽ phải sửa điều đó vào một ngày nào đó
Vì vậy, tại một số thời điểm, bạn chỉ cần nói f ** k nó! Phải có một cách tốt hơn để xử lý các phụ thuộc !!! và do đó bạn khám phá ra Grunt / Gulp / Webpack, cũng giải quyết các vấn đề tối ưu hóa của bạn.
Tôi không thể tin rằng tôi không thể sử dụng giống như một nửa các tính năng của ngôn ngữ mà tôi phải lập trình trên đó !! và bạn khám phá Babel và Typescript.
Tôi không thể là người duy nhất cần sử dụng lại các thành phần, có lẽ ai đó đã tìm ra điều này trước đây? và bạn khám phá JQuery / React / Angular / Vue.
Trạng thái ứng dụng của tôi là một mớ hỗn độn, tôi nên tìm cách quản lý nó hiệu quả hơn! Redux.
Tôi bị mắc kẹt trong địa ngục gọi lại, bạn có thể thoát ra khỏi nó không? RxJx
Tôi nghĩ cách tốt nhất để học là xây dựng dự án của bạn không có khuôn khổ và khi nhu cầu của bạn ngày càng phức tạp, hãy bao gồm các công cụ và khuôn khổ đó dần dần. Khi bạn có thể sử dụng tất cả chúng, các dự án tiếp theo của bạn có thể bao gồm tất cả các công cụ