JavaScript cho người "không mới"
Introduction
Đây là series lập trình JavaScript (JS) dành cho người "không mới", nghĩa là các bạn đã từng code trong những ngôn ngữ khác, hoặc đã học JS nhưng muốn củng cố lại kiến thức.
Hiện nay có rất nhiều tutorial, series JavaScript dạng như "javascript dành cho người mới bắt đầu", và chúng làm tớ phát ngán nên tớ đã tự mình viết nên series này.
Tớ là một người đã code được nhiều năm, mới chuyển qua học JS gần đây và hiểu được sự khó chịu khi phải học lại những cú pháp cơ bản. Cơ bản ở đây là cơ bản quá mức, kiểu như viết ra chỉ dành cho những bạn mới học lập trình. Những lệnh như if else
, for loop
, function
,... cũng phải viết code ra, rồi giải thích lằng nhằng trong khi nhiều bạn đã biết rồi. Không rõ các bạn thế nào nhưng riêng đối với tớ thì khó chịu cực kì.
Thêm một vấn đề nữa là các chương sắp xếp chưa hợp lý (theo ý tớ), ngay cả trang W3Schools khá nổi tiếng vẫn khá khó để học và tổng hợp kiến thức (hôm bữa lên google gõ thử "Why W3Schools is ..." gõ thử thì biết). Và khi muốn ôn lại thì phải xem hết các bài viết, và nó luôn mang cho tớ cảm giác "sợ bỏ lỡ thứ gì đấy" (hiệu ứng FOMO). Chính vì thế, tớ muốn tạo nên một series cho riêng mình.
Tớ đã viết nhiều bài trên e-portfolio cá nhân (Google Sites), nhưng khá khó viết, format không đẹp và dạo gần đây hay bị lỗi khi save làm tớ rất khó chịu. Những site khác như blogger hay wordpress đã thử qua nhưng không ưng ý lắm. Và rồi tớ tìm đến Viblo, và thực sự tuyệt vời, tớ ngay lập tức viết nên series đầu tiên của mình ở đây. Viblo có code highlighter tốt, format post bằng markdown thuận tiện, SEO tốt và trên hết là có cộng đồng tuyệt vời, sẽ giúp tớ hoàn thiện kiến thức của mình hơn.
Table of content
Series này gồm những phần sau (những phần có link là xong):
- JavaScript căn bản
- Kiểu dữ liệu trong JavaScript
- JavaScript function
- JavaScript object
- JavaScript DOM
- JavaScript BOM & WebAPIs
- JavaScript và AJAX
- Bất đồng bộ trong JavaScript
- Vụn vặt trong JavaScript 1
- Vụn vặt trong JavaScript 2
- Chrome DevTools
- JavaScript versions
- Hack não JavaScript
Thời hạn ra bài thì thường rảnh lúc nào viết lúc đó, nếu nhanh thì ba bốn ngày, chậm thì tuần hơn. Dạo này tớ hơi rảnh nên sẽ viết nhiều hơn.
Tớ viết dựa trên kinh nghiệm tự học, nên có thể có thiếu sót hoặc nhầm lẫn chỗ nào đấy. Và tớ luôn hi vọng nhận được nhiều comment góp ý về bài viết để cải thiện nó hơn (dạo này ít comment nên khá buồn ).
Khi học thêm được kiến thức mới có liên quan, tớ sẽ cố gắng update lại nó vào bài viết phù hợp.
The best way to learn?
Đảm bảo rằng bạn không phải newbie
Series này được viết ra dành cho các bạn đã biết lập trình với các ngôn ngữ khác (C++, Java,...) muốn học JavaScript, hoặc các bạn đã học JS nhưng muốn ôn lại và củng cố kiến thức.
Series không thích hợp cho newbie, là những bạn mới bắt đầu học lập trình. Tất nhiên, mình không cấm, và cũng không kì thị newbie, nhưng thực sự sẽ gây khó hiểu và mất hứng thú khi cố gắng học. Ngoài kia có rất nhiều tutorial dành cho newbie dành cho các bạn.
HTML, CSS là cần thiết
Trước khi học JS thì biết cơ bản về HTML, CSS là điều hiển nhiên. Không cần phải là những khái niệm quá cao siêu, chỉ cần bạn nắm cơ bản như cú pháp HTML, CSS, tag là gì, event là gì, một số tag cơ bản,... là đủ để có thể học JS rồi.
English & keyword
Tớ hay viết tiêu đề, đề mục bằng tiếng Anh. Và trong nội dung bài viết, các bạn cũng gặp rất nhiều từ khóa (keyword) bằng tiếng Anh.
Điều này cung cấp cho bạn các từ khóa chuẩn của khái niệm, từ đó các bạn có thể tìm hiểu sâu hơn bằng những từ khóa đó. Và kết quả tìm được phần nhiều sẽ là những trang tiếng Anh, vì theo ý riêng của tớ, những bài viết tiếng Anh có chất lượng tốt hơn nhiều.
Các keyword tớ viết dưới dạng song ngữ (thực ra không biết gọi làm sao), vừa có keyword English vừa chứa bản dịch ra tiếng Việt. Ví dụ như.
Function (hàm) là một nhóm các câu lệnh....
Và học lập trình nên nhớ phải biết keyword chuẩn nha, nhiều bạn học chung tớ hay hỏi "argument là gì" là ngáo luôn.
We need more salt
Well tớ tự nhận bản thân là một deveveloper thiếu muối, nên những post tớ viết ra có thể hơi khô khan và nhạt nhẽo. Từ trên xuống dưới chỉ toàn text và code, lâu lâu vui vui cho thêm mỗi một cái hình hoặc emoji vào (thường thì không). Cộng với cách viết hơi bị "gãy" của tớ nên cũng gây khó chịu cho nhiều người khi chưa quen.
Bù lại cho phần ngôn từ thì tớ sẽ cố gắng format post thật đẹp và rõ ràng hơn. Các đề mục được phân chia hợp lý, code được highlight đúng ngôn ngữ để tăng hứng thú.
Code đẹp
Series này tớ cố gắng viết code thật rõ ràng và đẹp, tất nhiên "code đẹp" của tớ chưa đến mức của "clean code", nhưng tớ hi vọng các bạn sẽ học hỏi được gì đó từ những dòng code của tớ. Ví dụ như cách thêm space trong dòng code thế nào cho đẹp, cách thụt lề, cách mở đóng ngoặc {},...
Thực sự tớ đã thấy nhiều bạn cùng trang lứa viết code cực xấu, thụt lề, tab lung tung, có trường hợp đóng ngoặc như sau.
<div>
<div></div>
</div> <!-- Câu 1 -->
<div>
</div> <!-- Câu 2 -->
???
WTF cái gì đang diễn ra đấy? Tại sao div đóng lại ngang hàng với các div con thế này? Div thứ hai cùng cấp với div đầu sao lại bị thụt vào? Và rồi tại sao comment chia từng phần ra lại để ở cuối phần làm??? Thực sự bối rối.
Có lẽ tớ là một người khá nguyên tắc và cứng nhắc, thích viết code đẹp nên nhìn code trên hơi bị ngứa mắt.
References
Kiến thức JS trong series được tổng hợp từ một số nguồn như bên dưới, và do chính tớ viết ra theo cách hiểu của bản thân chứ không copy hoàn toàn (tuy nhiên đôi lúc những khái niệm chuẩn thì mình sẽ dùng dẫn chứng).
- W3Schools - trang tutorial siêu nổi tiếng: Nổi quá rồi nên không cần nói nhiều, thích hợp để học HTML, CSS
- Mozilla Developer Network (MDN): trang cực tốt và chi tiết về lập trình web. Đọc hết trang này là nắm cơ bản khá vững rồi.
- FreeCodeCamp: không nên dùng để học mà để thực hành web. Bạn sẽ được thực hành các bài tập nhỏ, và có thể bạn sẽ tìm ra mình hổng kiến thức nào mà bổ sung.
Và bên cạnh đó, tớ cũng tham khảo một số kiến thức từ những article trên Viblo và vài site lập trình trong nước.