Tổng hợp sách hay về JavaScript – Từ nhập môn đến nâng cao

Ở bài trước, khi nói về top 5 ngôn ngữ nên học, mình có bảo rằng JavaScript hiện tại đang là một ngôn ngữ hot và rất đáng học. Vì vậy, hôm nay mình sẽ chia sẻ những sách hay về JavaScript, với mức độ từ cơ bản đến nâng cao nhé!

Bản thân tài liệu về JS tiếng Việt khá ít, chắc từ thời jQuery rồi, cũng không cập nhật mấy. Vì minh vẫn hay khuyên các bạn nên học lập trình bằng tiếng Anh,  do đó nên những sách mình giới thiệu trong bài chỉ toàn là tiếng Anh thôi nhé.

Cấp độ nhập môn – Kiến thức nền tảng

Ở cấp độ này, các bạn mới tìm hiểu JavaScript cũng như tìm hiểu về lập trình nói chung. Do vậy mình chọn sách đi sâu vào kiến thức nền tảng, trình bày dễ đọc dễ hiểu.

Head First JavaScript Programming: Đây là dòng sách hồi xưa mình dùng để học JavaScript. Thời của mình là bản 2007, các bạn nên tìm bản 2014 đọc vì nó nhiều thay đổi hay hơn.

Dòng sách HeadFirst có ưu điểm là dễ đọc, nhiều hình minh hoạ, dễ nhớ nhưng hơi dài dòng tí. Cuốn này các bạn đọc tới chương 9 là ngừng được rồi, từ chương 10 về sau cũng khá nhiều khái niệm nâng cao, từ từ quay lại đọc sau.

JavaScript and JQuery: Interactive Front-End Web Development: Cuốn sách này mới nổi trong thời gian gần đây. Nội dung cũng khá ok. Sách màu 100% và có rất nhiều hình minh hoạ nên dễ đọc dễ làm theo. Dân tình đánh giá rất cao trên Amazon.

Ở giai đoạn này các bạn chỉ cần làm quen với syntax của JavaScript và hiểu rõ cách dùng variable, method, if/else, loop, array v…v là tạm ok rồi nhé.

Cấp độ trung bình – Sau khoảng 2,3 tháng

Sau khi đã vững JavaScript cơ bản thì bạn có thể tìm hiểu thêm về AJAX, DOM và các khái niệm “cao siêu” hơn như closure, prototype, OOP, …

Eloquent JavaScript, Second Edition: Cuốn sách này bao quát những kiến thức từ cơ bản đến nâng cao trong JavaScript, bao gồm cả DOM, Canvas, Ajax, NodeJS.

Một điểm hay của sách là tác giả không chỉ nói về JavaScript mà còn cover luôn cả những kiến thức nền bên dưới (giao thức HTTP là gì, browser dùng gì để gửi request v…v).

Sách hơi dài, khoảng 400 trang nhưng có hình minh hoạ, có cả project mẫu cho các bạn làm theo nên các bạn có thể tranh thủ luyện tập luôn.

Professional JavaScript for Web Developers, 4th Edition: Nội dung cũng tương tự như phía trên, sách trình bày toàn bộ những API của JavaScript và DOM. Phiên bản 4th này còn giới thiệu thêm về ES6 nữa.

 

Secret of the JavaScript Ninja, Second Edition: Tác giả của cuốn sách là John Resig, tác giả của thư viện jQuery thần thánh.

Anh chia sẻ và giải thích rất kĩ về các khái niệm scope, closure trong JavaScript, cách viết code test, cách viết code chạy được trên nhiều trình duyệt khác nhau.

Cuốn sách này có nhiều kinh nghiệm, pattern và code mẫu khá hay mà bạn sẽ khó mà tìm được trong những sách khác.

Cấp độ nâng cao – Khi bạn muốn đi sâu đi xa hơn sau 1,2 năm

Lúc này, khi khả năng JS đã đạt tới một trình độ nhất định, bạn nên tìm hiểu về cách thức hoạt động của ngôn ngữ JavaScript (code được parse thế nào, execution ra sao, scope hoạt động như thế nào). Điều này tạo nên sự khác biệt giữa junior và senior.

JavaScript The Good Parts: Chỉ nên đọc cuốn này khi bạn đã có khoảng 1,2 năm kinh nghiệm code JavaScript. Tác giả chia sẻ những thứ kì quặc, sida của JavaScript; những thói xấu mà JS developer hay mắc phải (eval, global variable, …); cùng với những lời khuyên để ta viết code tốt hơn.

 

You don’t know JS: Đây là một series dài gần 5, 6 cuốn về JavaScript. Tác giả đi sâu giải thích lại những khái niệm JavaScript cơ bản.

Mình nghĩ rằng thay vì cắm đầu cắm cổ học framework này nọ thì nên bỏ thời gian đọc series này, nó sẽ nhiều lần làm bạn ngạc nhiên, WTF… vì “Ồ, hoá ra JavaScript là thế này à!”

JS Patterns + Learning JS Patterns: Đây là 2 cuốn sách viết về những design pattern trong JavaScript và cách áp dụng chúng trong thực tế.

Đọc và nắm vững các design pattern này, khi gặp những vấn đề tương tự lúc code, các bạn sẽ biết cách áp dụng để giải quyết vấn đề một cách hiệu quả.

 

Ngoài ra, nếu junior chỉ viết code sao cho chạy được thì senior phải khác. Đạt đến tầm này thì bạn phải biết cách viết code sao cho dễ đọc, dễ hiểu, dễ bảo trì. Do đó đừng đọc sách JS không mà hãy đọc thêm những cuốn như Clean Code, Code Complete nhé.

Kĩ năng chuyên biệt

Understanding ECMAScript 6: The Definitive Guide for JavaScript Developers + You don’t know JS ES6 & Beyond: Nếu trước giờ bạn đã làm việc với JavaScript, hiện tại đang muốn tìm hiểu thêm về ES6 thì đây là 2 cuốn sách dành cho bạn. 

Một hai năm nữa thì ES6 sẽ trở thành JavaScript căn bản luôn rồi nên nếu học được thì các bạn tranh thủ học luôn đi nhé.

Node – Up & Running + Mastering NodeJS: NodeJS là một runtime của JavaScript, được build dựa trên nền Google v8 Engine, cho phép chạy JavaScript trên server. Hiện tại cũng có rất nhiều Website viết back-end bằng NodeJS.

Nếu bạn làm về back-end, muốn thử sức với NodeJS thì nên đọc 2 cuốn này để hiểu về cơ bản NodeJS runtime, cùng với cách viết code cho phù hợp với mô hình asynchonous của nó nhé.

 

Trong bài này, mình không giới thiệu sách về các JavaScript library/framework như AngularJS, React, VueJS, Express. Vì mỗi library/framework cũng có tận 2,3 cuốn sách nên giới thiệu hết sẽ làm loãng bài viết. Các bạn học vững cơ bản JavaScript thì framework gì cũng chơi được hết nhé.

Lời khuyên cuối cùng

Giai đoạn đầu các bạn nên đọc và làm theo sách, vì nó có những kiến thức nền tảng rất quan trọng mà video hay tutorial không hề có. Tuy nhiên, đọc thì đọc, nhớ phải code theolàm một cái pet project gì đấy.

Nếu bạn có hứng thú thì cứ để lại commnet, nhiều người quan tâm mình sẽ viết một bài về những thứ bạn có thể dùng JavaScipt để build và luyện tập nhé!

Còn các bạn thì sao, có cuốn sách nào hay về JavaScript thì nhớ chia sẻ với mọi người trong phần comment nha.

35 thoughts on “Tổng hợp sách hay về JavaScript – Từ nhập môn đến nâng cao”

  1. Cảm ơn a nhiều, đúng thứ em cần nhưng tiếng anh của em còn kém chắc sẽ mất nhiều thời gian lắm .

    Like

  2. Cảm ơn anh vì chia sẻ nhiều sách hay về JS. Mong anh giới thiệu thêm sách để luyện tập để build 1 project về JS

    Liked by 1 person

  3. bài viết rất hay, trước mình không đọc sách nhưng qua blog này mình đã đọc một số cuốn và thấy rất hay hiệu quả, cảm ơn những gì bạn đóng góp cho cộng đồng

    Like

  4. Cảm ơn anh. Em rất hứng thú với JS. Rất mong được anh chia sẻ tiếp những kiến thức về JS 😀

    Like

  5. Quyển Learning Javascript của O’Reilly cũng rất hay không biết a đã xem chưa

    Like

  6. Anh chia sẻ về C# nữa anh nhé, em đang học C# nhưng vẫn chưa biết lộ trình học như nào, học những framework gì và bên ngoài họ dùng C# để làm những gì. Cảm ơn anh đã chia sẻ.

    Like

  7. Đúng cái đang cần luôn anh Hòang ơi. Cảm ơn anh nhiều (y)

    Sent from Mail for Windows 10

    Like

  8. Anh code dạo ơi, anh dịch sách Javascript đi anh, giúp đỡ cho nhiều bạn nghèo nàn tiếng anh như e. :v

    Like

  9. Trước khi anh viết bài này, em đã tìm đọc và đi mua cuốn Eloquent JavaScript rồi, vậy đọc luôn cuốn này được không ạ ?? Hay phải đọc theo thứ tự trên mà a đã liệt kê

    Like

  10. Anh ơi em đang nghiên cứu về ES6 cũng như viết Algorithm bằng ES6 rồi chuyển qua học Node, những cuốn nào để em nắm chắc được ES6 không anh.

    Like

  11. Cảm ơn Hoàng, rất tuyệt. Bạn là người Thầy lớn của chúng tôi! Mong Hoàng sớm chia sẻ tiếp!

    Like

  12. Thanks bác, e đang bắt đầu cày series You Don’t Know JS. Đặt gạch hóng bài “những thứ bạn có thể dùng JavaScipt để build và luyện tập” của bác

    Like

  13. Hóng bài viết “những thứ bạn có thể dùng JavaScipt để build và luyện tập” của Hoàng quá mà chưa thấy 😦

    Liked by 1 person

      1. Mong bạn sớm ra bài này, mình đang tìm hiểu JavaScript nên cũng khá mơ hồ về cách luyện tập nó.

        Liked by 1 person

  14. a có thể giải thích e ví dụ này với let và var không ạ, e đọc một số chỗ rồi nhưng chưa thông lắm
    var funcs = [];
    for (let i = 0; i < 5; i++) {
    funcs.push( function(){
    console.log( i );
    } );
    }
    funcs[3](); // 3 khi khai báo let i
    funcs[3](); // 5 khi khai báo var i

    Like

    1. Theo mình hiểu thì let khác var ở chỗ let có scope. Bạn khai báo nó ở đâu thì nó CHỈ “có hiệu lực” ở đó – xin lỗi mình cũng không biết dùng từ sao cho đúng.

      Trong vd trên, với var i = 0, kết thúc vòng lặp i = 5. Khi gọi funcs[3]() , do var cái scope không chặt chẽ, nên khi gọi function, log cái i ra, thay vì nó ra 3, nó lại lấy i = 5, do đó là giá trị i cuối cùng, sau khi kết thúc vòng lặp.

      Còn với let, do scope của nó chỉ nằm trong cái function, nên giá trị của nó đươc bảo toàn, không bị thay đổi. Dù khi kết thúc vòng lặp, i = 5, nhưng tại index 03, giá trị của i = 3 và nó không bị thay đổi.

      Mình nghe người ta chuyển qua let thay vì var 1 phần vì tính chặt chẽ của cái scope của nó ^^

      Like

  15. Nhiều sách đắt quá a. A có thể tư vấn mua sách ở đâu nữa không để có thể ok về giá và bản quyền?

    Like

Leave a comment