Bài viết được dịch từ bài gốc: Yes, You Should Learn Vanilla JavaScript Before Fancy JS Frameworks của tác giả Francois-Xavier P. Darveau. Đó là vào năm 2013. Nhóm phát triển nhỏ chúng tôi đang chuyển giao một dự án ấn tượng ở phía client. Tôi ở chỗ chiếc bàn đứng của mình, đọc lướt qua các email lúc sáng sớm. Đồng nghiệp của tôi đẩy toang cánh cửa văn phòng: "Có gì đó với ứng dụng Angular của chúng ta, anh bạn ạ. Tôi thấy lỗi Nhưng tôi không lo lắng hay căng thẳng gì cả. Tôi biết chính xác nơi bắt đầu để xem xét, vì tôi biết code Javascript của mình. Tôi biết tất cả những điều này vì một con bot nhỏ. Đúng, ban đọc đúng rồi đấy: một con bot. Nhìn lại năm 2011. Tôi vẫn còn là một sinh viên kỹ thuật phần mềm đầy mộng mơ, không bị ảnh hưởng bởi các nghiệp vụ trong thế giới thực. Tôi say mê với việc phát triển phía backend, và không ham thích học Javascript thuần, hay bất cứ thứ gì liên quan. Nhưng bạn tôi và tôi phải xây dựng một con bot hướng tác vụ, thời gian thực cho một trong các lớp học của chúng tôi. Chúng tôi đặt tên con bot là Optimus Prime, và thậm chí còn bán nó cho Michael Bay vì các bộ phim Transformers của ông ấy.Chúng tôi nhanh chóng vấp vào một thứ mới mẻ tuyệt vời gọi là Node.js (đọc qua tài liệu của nó). Không có phụ thuộc, dễ dàng sinh các tiến trình con, bất đồng bộ và hướng sự kiện ... và nhiều người trên mạng nói rằng nó rất tuyệt vời. Chúng tôi không hề có khái niệm gì về Javascript hay V8, nhưng vẫn thấy nó tốt cho dự án của mình. Nhiều người bạn bảo tôi chỉ cần tìm một thư viện thích hợp với trường hợp của mình rồi copy/paste để việc kết nối socket hoàn tất. Và tôi đã có thể làm điều đó. Nhưng tôi đã không làm thế. Dù lúc đó tôi không biết, nhưng đó là một quyết định đúng đắn nhất của tôi trong sự nghiệp của mình. Tôi bắt đầu hăng hái đọc. Về lập trình bất đồng bộ, lịch sử của Javascript, ưu và nhược điểm của nó, mọi thứ. Vì tôi muốn làm chủ các khái niệm cơ bản của ngôn ngữ đang hỗ trợ cho dự án của mình. Và nó tốn khá nhiều thời gian, cà phê, bia và code thử để làm điều đó. Giữa việc chế ngự sự mất kiên nhẫn của các đồng đội và tạo đống code cơ bản không-được-sạch-đẹp-cho-lắm cho con bot, tôi đã học được rất nhiều. Vậy vấn đề ở đây là gì? Đó là việc tôi dành đủ thời gian để hiểu các khái niệm cốt lõi của Javascript trước khi sự dụng các tiện ích cung cấp bởi các framework và thư viện Javascript. Và tại sao điều đó lại quan trọng? Chà, đây là điều mà bài viết này muốn nói: đừng giả vờ. Nguồn: @iamdevloperĐầu tiên, ý tôi là gì khi nói về "các framework" Javascript ở đây?Khi tôi dùng framework, tôi xếp tất cả Angular, React, Backbone, Ember, Knockout, Vue, Ext, jQuery, Meteor, Express, Koa, Total, Socket.io, v..v.., cùng một loại, Phải, tôi biết một số cái khá là khác biệt. Phải, tôi biết một số cái "không thực sự là framework, mà giống như một thư viện hơn và nhân tiện, bạn đã từng thấy thread này trên HN (có thể là Hacker News - ND) chưa"? Nhưng làm ơn, vì ý nghĩa của bài viết này, hay coi chúng tương đương nhau bởi chức năng chính của chúng. Và dành cho những người hỏi "Javascript thuần (vanilla Javascript) là gì?"Cho phép tôi chôm một câu trả lời từ koenpeters trên Stack Overflow:
Hay, như trong trường hợp của chúng ta, là không dùng các framework phụ trợ. Lý do vì sao tôi nghĩ các framework Javascript rất tuyệt vời
Những lý do trên nhanh chóng gợi lên khi chúng ta thảo luận về sự phổ biến của các framework JS. Nhưng với tôi, chúng là các lý do để tiếp thị thì đúng hơn. Nhưng tôi không hề khinh thường các framework. Thực tế tôi đã sử dụng một vài framework trong sự nghiệp của mình (xem danh sách ở phần dưới). Và tôi tin rằng giá trị tuyệt vời nhất có thể tìm thấy ở các framework JS là sự cộng tác. Giao diện thống nhất và các phương thức của chúng cho phép các lập trình viên từ, ví dụ như, Canada, Mỹ và Brazil hiểu và làm việc cùng nhau. Nếu bạn xây dựng một ứng dụng với [viết tên framework ưa thích của bạn vào đây], đến lúc nào đó bạn sẽ có thể tìm một lập trình viên kinh nghiệm để dấn sâu vào codebase của dự án với một sự tự tin. Anh/cô ấy sẽ có thể bắt đầu triển khai các tính năng mà không cần bạn giải thích tất cả các phần kiến trúc trong dự án của bạn. Một lý do quan trọng khác cho việc sử dụng framework là thực hành. Chúng khiến bạn thực hành, lặp đi lặp lại. Và điều đó tốt, thật đấy! Thực hành luôn dẫn đến nắm vững, dù bạn cố gắng làm thứ gì đi nữa. Lý do vì sao tôi tin các framework JS không tuyệt vời ĐẾN VẬYNhững người triển khai các framework đều tài năng - ít nhất là hầu hết trong số họ. Họ thực hiện những công việc to lớn để biến những thứ phúc tạp trở thành những thứ đơn giản (ví dụ cung cấp router vô cùng đơn giản phía client trên IE6). Nhưng tất cả những mức gói gọn này có thể nhanh chóng trở nên không tốt. Trong mọi quá trình phát triển ứng dụng, sẽ có một ngày mà có thứ gì đó không hoạt động như mong muốn, và bạn không thực sự biết tại sao. Đó là lúc bạn phải bắt đầu đào bới. Và khi bạn bắt đầu tìm kiếm qua những đoạn code JS tổng quát, phức tạp, ít tài liệu, bạn phải có một sự hiểu biết sâu về Javascript để hiểu được. Nếu không, tôi đảm bảo là bạn sẽ mất toàn bộ thời gian quý báu của mình mà bạn giữ được khi sử dụng framework. Bạn có thể phải mua một máy pha espresso mới để hoàn thành dealine của mình. Như tôi đã đọc ở đâu đó: "Bạn không phải là một nhà phát triển Angular hay Express. Bạn là một lập trình viên." Chắc chắn các framework hữu ích cho các nhóm nhỏ làm việc trên một ứng dụng duy nhất. Phải, chúng sẽ tiết kiệm chút thời gian cho bạn (trừ khi bạn là một kẻ nghiện tái cấu trúc code). Nhưng nếu bạn làm việc với nhiều nhóm trên nhiều hơn một ứng dụng? Bạn có thực sự nghĩ tất cả các trưởng nhóm sẽ đồng ý sử dụng cùng một framework cho toàn bộ các ứng dụng? Và nếu có một framework hay ho mới xuất hiện trong năm 2017? Vấn đề là: khi bạn chọn một framework, bạn tác động đến từng quyết định kỹ thuật sắp tới. Thêm vào đó, bạn dẫn nhóm của mình đến một công nghệ có thể sớm bị phản đối. Điều đó làm tâm trí tôi rối bời. Làm thế nào mà học Javascript thuần trước khi học các framework JS có thể - và sẽ - giúp bạn.Javascript giờ đây đã trở thành ngôn ngữ lập trình của web. Hiểu các khái niệm cốt lõi của nó là vấn đề tối quan trọng nếu bạn muốn dựng lên cho mình một sự nghiệp làm web thanh nhã. Đặc biệt nếu như bạn nhắm tới phía frontend. Trong 5 năm qua, hơn 10 framework JS mới đã ra đời. Đoán xem sẽ có bao nhiêu framework mới trong 5-10 năm tới? Nếu bạn chỉ đơn giản giả vờ biết Javascript, thứ hỗ trợ cho cuộc cách mạng của web, bạn sẽ bắt kịp như thế nào? Cứ nghĩ về việc mà "các lập trình viên jQuery" đang làm hôm nay: cố gắng bắt kịp Angular. Ngày mai, họ sẽ phải cố gắng bắt kịp React. Và vòng lặp buồn bã cứ thế tiếp tục. .Biết Javascript thuần sẽ khiến bạn thực sự hiểu - hay thậm chí đóng góp cho - các framework JS, và giúp bạn chọn đúng framework khi bạn cần. Với tôi, việc đó đem lại rất nhiều thứ tích cực:
Kết luận: Học Javascript thuần trước khi học các framework JSVà đây là đoạn TL;DR cho mọi người:
Sử dụng một framework JS chắc chắn sẽ giúp bạn đi nhanh ở một chỗ nào đó. Nhưng nó sẽ không đưa bạn đi xa nếu bạn không hiểu các khái niệm cốt lõi đằng sau nó. Cũng như việc học cách chơi Wonderwall trên ghi ta không dạy cho bạn cách soạn nhạc, nhưng nó sẽ giúp bạn có lý do để thực hành. Và tôi cực kỳ tin rằng nguyên tắc "học cơ bản/gốc rễ trước tiên" này áp dụng cho rất nhiều thứ trong cuộc sống. Từ việc học một ngôn ngữ lập trình mới đến việc học một môn thể thao mới. Việc đó yêu cầu thực hành rất nhiều, nhưng một khi bạn làm chủ nó, việc còn lại duy nhất là sáng tạo với nó. Và đó là nơi mà niềm vui thực sự bắt đầu. Một vài lời với việc bắt đầu với JS thuầnTôi hy vọng đã thuyết phục bạn làm bẩn đôi tay mình với Javascript thuần. Vậy nếu bạn muốn bắt đầu phát triển web và chỉ làm việc đó, đây là lời khuyên ở trình độ cao của tôi:
Và một vài lời khuyên cụ thể khác:
Dĩ nhiên, bạn nên đăng ký theo dõi các kênh thông tin hữu ích như Echo JS, JS news và ECMAScript Dayly. Cuối cùng nhưng tuyệt nhiên không kém phần quan trọng, bạn cũng nên đọc về bản thân ngôn ngữ. Các sách cổ điển như Javascript: The Good Parts và sê ri You Don't Know JS có hàng đống thứ giá trị và hiểu biết sâu sắc. |