Chưa bao giờ JavaScript lại phát triển mạnh mẽ như thời gian gần đây. Hầu như mỗi năm JS lại được cập nhật lên phiên bản mới, kèm theo những tính năng hay ho hấp dẫn giúp cuộc đời lập trình viên chúng ta “dễ thở” (hoặc ngược lại ^^’). Thêm vào đó, sự phát triển của Babel hay cuộc chạy đua vũ trang của các trình duyệt giúp cho những tính năng mới trong JS dễ dàng sử dụng hơn, nhưng cũng đòi hỏi lập trình viên phải cập nhật liên tục để tận dụng triệt để khả năng của ngôn ngữ.
Hệ quả là, những tài liệu JavaScript có sẵn bỗng nhanh chóng trở nên lỗi thời. Nhưng không sao, bôi cao sẽ khỏi. Đã có Ehkoo ở đây cào nát Internet và những-trang-mà-ai-cũng-biết-là-trang-gì-đó, để chọn ra 10+ tài liệu JavaScript đáng đồng tiền bát gạo nhất dành cho bạn, từ cơ bản đến nâng cao, và hoàn toàn MIỄN PHÍ.
Tài Liệu JavaScript Cơ Bản
JavaScript Guide của MDN
“Hướng dẫn JavaScript” của Mạng lập trình viên Mozilla (Mozilla Developer Network - MDN) là tài liệu đầu tiên bạn cần tham khảo - cực kì đầy đủ và luôn được cập nhật mỗi khi JS phát hành phiên bản mới. Tài liệu được chia ra làm ba phần:
- Sơ cấp: giới thiệu những khái niệm căn bản của JavaScript, cách khai báo biến, giá trị, các cấu trúc điều khiển và vòng lặp if/else/for/while/switch, cách khai báo hàm và biểu thức, các lớp căn bản như Date hay RegExp v.v…
- Trung cấp: giới thiệu về lập trình hướng đối tượng trong JavaScript, làm việc với các APIs của trình duyệt, khái niệm closure, v.v…
- Cao cấp: phần này tập trung vào những khái niệm nâng cao như các liên kết prototype, cách thao tác trực tiếp lên dữ liệu dạng nhị phân, quản lý bộ nhớ và cách thức EventLoop hoạt động, v.v…
Bên cạnh đó, tài liệu này cũng nhắc đến những vấn đề không liên quan đến kỹ thuật, chẳng hạn như sự liên hệ giữa JavaScript và Java (bật mí: không có liên quan gì hết ^^’), hay JavaScript và ECMAScript có dây mơ rễ má ra sao.
Nếu bạn còn “mới tinh” về JavaScript, lời khuyên của Ehkoo là: chỉ cần đọc hết 8 chương đầu tiên, cùng với phần ”Working with objects”, bạn đã có thể nắm căn bản về ngôn ngữ rồi. Tiếp đến, hãy bắt tay vào làm một ứng dụng nhỏ để củng cố kiến thức. Sau này, khi đã quen với JavaScript, bạn hãy quay lại và xem những chủ đề trung hoặc cao cấp hơn.
Tài liệu được cung cấp miễn phí tại https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide
Eloquent JavaScript, 3rd Edition
Tác giả: Marijn Haverbeke Số trang: 456 Năm xuất bản: 2018 Nhà xuất bản: No Starch Press
Eloquent JavaScript là một quyển sách đặc biệt, vì nó không chỉ giới thiệu về JS. Đối tượng độc giả mà sách hướng đến là những bạn đang chập chững làm quen với lập trình, do đó tác giả Haverbeke chú trọng giải thích những nguyên tắc của việc lập trình, mối quan hệ giữa ngôn ngữ lập trình và máy tính, v.v… Sách được chia làm ba phần:
- Phần 1: giới thiệu về ngôn ngữ JavaScript — biến, kiểu dữ liệu, cấu trúc chương trình, hàm, object và array, regex, v.v…
- Phần 2: hướng dẫn lập trình trên trình duyệt — DOM, xử lý sự kiện, v.v…
- Phần 3: NodeJS căn bản
Bằng cách tiếp cận “học đi đôi với hành”, người đọc sẽ được hướng dẫn thực hiện vài ứng dụng nho nhỏ, từ xây dựng một robot giao hàng, cài đặt một ngôn ngữ lập trình đơn giản, đến thực hiện một website. Nhờ áp dụng ngay những kiến thức học được vào thực tế, độc giả có thể ghi nhớ nhanh chóng hơn.
Bạn có thể đọc quyển sách này miễn phí tại https://eloquentjavascript.net/
Có thể bạn chưa biết: Marijn Haverbeke là tác giả của thư viện CodeMirror — một chương trình soạn thảo nền web được sử dụng rất rộng rãi.
You Don’t Know JS
Tác giả: Kyle Simpson Năm xuất bản: 2015 Nhà xuất bản: O’Reilly
You Don’t Know JS là loạt sách gồm 6 quyển chuyên về JavaScript.
- Phần 1: Up & Going — cung cấp những kiến thức cơ bản về lập trình nói chung và JavaScript nói riêng
- Phần 2: Scope & Closures — giới thiệu về khái niệm tầm vực, phân biệt giữa tầm vực trong khối và hàm, v.v…
- Phần 3: this & Object Prototypes — đề cập đến lập trình hướng đối tượng trong JavaScript, giới thiệu về lớp và prototype
- Phần 4: Types & Grammar — kiểu dữ liệu trong JavaScript
- Phần 5: Async & Performance — thực thi các thao tác bất đồng bộ và hiệu năng của ứng dụng JavaScript
- Phần 6: ES6 & Beyond — phiên bản ES6 của JS và những khái niệm liên quan
Bạn có thể đọc sách miễn phí tại https://github.com/getify/You-Dont-Know-JS
Tài Liệu JavaScript Nâng Cao
Exploring ES6
Tác giả: Axel Rauschmayer Số trang: 641 Năm xuất bản: 2015 - 2018
Khi nói đến ES6, có lẽ không quyển sách nào qua được Exploring ES6 của Dr. Axel Rauschmayer - tác giả blog 2ality. Sách dày hơn 600 trang, mô tả chi tiết từng tính năng của ES6, từ let với const là gì, hàm mũi tên, modules, v.v… đến những chuyện bên lề như tại sao có khi lại gọi ES5 là ES2015. Sách dành cho những bạn đã có kiến thức về JavaScript.
Bạn có thể đọc miễn phí ở đây http://exploringjs.com/es6. Ngoài ra, tác giả còn hai quyển sách “chị em” cùng chủ đề: Exploring ES2016 and ES2017 và Exploring ES2018 and ES2019.
Understanding ECMAScript 6
Tác giả: Nicholas Zakas Số trang: 322 Nhà xuất bản: LeanPub
Một quyển sách khác về ES6. So với Exploring ES6 thì cuốn này mỏng hơn nhưng cũng bao hàm đầy đủ những tính năng quan trọng của ES6. Bạn có thể đọc sách miễn phí tại https://leanpub.com/understandinges6.
Có thể bạn chưa biết: Nicholas Zakas là tác giả của ESLint — công cụ phân tích và kiểm tra mã nguồn JavaScript được sử dụng rộng rãi trong hầu hết các dự án hiện nay. Anh cũng là tác giả của khá nhiều quyển sách hay ho khác về JS mà Ehkoo sẽ giới thiệu tiếp theo đây.
The Principles of Object-Oriented JavaScript
Tác giả: Nicholas Zakas Số trang: 120 Năm xuất bản: 2014 Nhà xuất bản: No Starch Press
Lập trình hướng đối tượng (object-oriented programming — OOP) trong JavaScript có thể hơi khác lạ nếu bạn đến từ những ngôn ngữ thuần OOP như Java hay C#. Nhưng cách thực hiện hướng đối tượng dựa vào bản mẫu (prototype-based) của JS lại làm cho ngôn ngữ này trở nên thú vị, vì cách tiếp cận này vẫn bảo toàn 4 nguyên tắc căn bản của OOP: tính khái quát (Abstraction), tính bao đóng (Encapsulation), tính kế thừa (Inheritance), và tính đa hình (Polymorphism).
Sách mỏng, dễ đọc, giúp bạn hiểu rõ hơn về cách thức objects được tổ chức và lưu trữ trong JavaScript. Dù cho sách vẫn dùng những khái niệm cũ của ES5, khi JavaScript chưa chính thức hỗ trợ class, bạn vẫn có thể dễ dàng liên hệ những gì đọc được với ES6 class.
Rediscovering JavaScript - Master ES6, ES7, and ES8
Tác giả: Venkat Subramaniam Số trang: 257 Năm xuất bản: 2018 Nhà xuất bản: The Pragmatic Programmers
Rediscovering JavaScript là quyển sách dành cho những bạn đã tìm hiểu về ES6/7/8. Sách giới thiệu những kinh nghiệm thực tế khi làm việc với JS phiên bản mới, chẳng hạn như cách phân rã biến và sử dụng giá trị mặc định khi khai báo hàm, để đảm bảo chữ ký hàm vẫn rõ ràng và dễ sử dụng; hay lời khuyên không nên lạm dụng hàm mũi tên; hoặc những ví dụ về siêu lập trình (metaprogramming) trong JS. Mỗi chương đều có đi kèm bài tập, giúp bạn kiểm tra lại kiến thức của mình.
Chuyên Đề: Lập Trình Hàm
Professor Frisby’s Mostly Adequate Guide to Functional Programming
Tác giả: Brian Lonsdorf
Lập trình hàm ngày càng được nhiều người quan tâm bởi những lợi ích mà nó mang lại. Nhưng trong quá trình tìm hiểu, có thể bạn sẽ bắt gặp những khái niệm “lạ hoắc lạ huơ” như Functor, IO hay (don’t you dare) Monad. Đừng tìm đâu xa, Mostly Adequate là quyển sách bạn muốn đọc ngay. Bằng giọng văn hài hước, cách hành văn dễ hiểu, “Giáo sư Frisby” Brian Lonsdorf sẽ dẫn bạn qua những ví dụ đơn giản nhất, kết hợp với nhau cho đến khi bạn vỗ đùi “hóa ra Monad là rứa”.
Sách có 12 chương, và bạn có thể đọc miễn phí ở https://mostly-adequate.gitbooks.io/mostly-adequate-guide/.
JavaScript Allongé, the “Six” Edition
Tác giả: Reg “raganwald” Braithwaite Nhà xuất bản: LeanPub
JavaScript Allongé là quyển sách về lập trình với hàm, “vô tình” lại được thể hiện bằng JavaScript. Phiên bản mới của sách sử dụng ES6, ngoài dùng class (de, lập trình hàm mà dùng class) còn đề cập đến mixin, generators, v.v… Bạn nhất định phải đọc quyển sách này cùng với quyển Mostly Adequate ở trên, nếu bạn hứng thú với lập trình hàm!
Sách có thể đọc miễn phí tại https://leanpub.com/javascriptallongesix/read.
Functional-Light JavaScript: Balanced, Pragmatic FP in JavaScript
Tác giả: Kyle Simpson Nhà xuất bản: LeanPub
So với hai quyển sách ở trên, Functional-Light JavaScript nhẹ nhàng hơn và không sử dụng những thuật ngữ chuyên sâu trong lập trình hàm. Thay vào đó, sách chỉ ra cách áp dụng những khái niệm của FP vào thực tế. Lời đề tựa của sách được viết bởi Giáo sư Frisby.
Đọc miễn phí tại https://github.com/getify/functional-light-js
Chuyên Đề: Refactoring
Refactoring JavaScript - Turning Bad Code into Good Code
Tác giả: Evan Burchard Số trang: 499 Năm xuất bản: 2017 Nhà xuất bản: O’Reilly Media
Mặc dù mỗi dự án sẽ có những tính chất đặc thù, dẫn đến những chiến lược refactoring khác nhau, nhưng quyển sách này có thể cung cấp cho bạn một cái nhìn khái quát khi bắt tay vào sửa chữa code JavaScript. Sách bắt đầu bằng cách đặt câu hỏi mục tiêu refactoring là gì, mục tiêu bạn hướng đến khi refactor, sau đó gợi ý những chiến lược riêng để xử lý chuỗi, hàm, mã chết, hay những tác vụ bất đồng bộ.
Ehkoo khuyên đọc nếu bạn đang có ý định “đập đi xây lại” với dự án hiện tại. Thường thì phá dễ hơn sửa, và đôi khi chưa hẳn là giải pháp tốt. Bạn có thể download quyển sách này MIỄN PHÍ tại http://refactoringjs.com/.
Simplifying JavaScript - Writing Modern JavaScript with ES5, ES6, and Beyond
Tác giả: Joe Morgan Số trang: 255 Năm xuất bản: 2018 Nhà xuất bản: The Pragmatic Programmers
Nhìn tựa có vẻ như nói về JS thế hệ mới, nhưng nội dung chính của quyển sách này là những mẹo/ lời khuyên để bạn có thể viết JavaScript rõ ràng hơn. Do đó, nếu bạn là người “hốt rác” chuyên nghiệp, đừng bỏ qua quyển sách này.
Chuyên Đề: (Có Thể) Cũ Mà Hay
Even Faster Web Sites: Performance Best Practices for Web Developers
Tác giả: Steve Souders
High Performance JavaScript
Tác giả: Nicholas Zakas
Maintainable JavaScript
Tác giả: Nicholas Zakas
Điểm chung của 3 quyển sách trên là gì? Đầu tiên là cũ. Thứ hai là Ehkoo chưa đọc :p, nhưng được một blogger nhiều tên ít tuổi trong cộng đồng giới thiệu. Nếu bạn đọc thấy không hay thì tìm @huytd ở WeBuildVN mà mắng vốn nhé.
Kết
Với tốc độ thay đổi nhanh còn hơn cả triều cường Sài Gòn sau mưa của JS, thì Ehkoo không chắc danh sách tài liệu JavaScript nêu ở trên sẽ còn “hợp thời” đến chừng nào. Tuy nhiên, Ehkoo sẽ cố gắng cập nhật thường xuyên.
Và, vẫn một lời đã cũ, nếu bạn biết tài liệu/sách JavaScript hay ho thú vị nào khác, đừng quên chia sẻ cho Ehkoo và đồng bọn thông qua phần bình luận phía dưới nhé!