Tự học Node.js thì bắt đầu từ đâu? Học Node.js có khó không?

Tự học Node.js thì bắt đầu từ đâu? Học Node.js có khó không?

Những mẩu tin ngắn hàng ngày dành cho bạn
  • Mọi người đã nghe nói đến Jujutsu - jj - một dạng quản lý phiên bản cho mã nguồn (version control system) chưa? Có vẻ như nó đang nhận được nhiều sự quan tâm.

    Chờ xíu! Chẳng phải git đã quá tốt rồi sao? Thế thì chế ra thằng jj để làm gì nữa? Cũng hơi khó trả lời nhỉ? Mỗi công cụ sinh ra chắc chắn phải cải thiện hoặc khắc phục được nhược điểm của cái trước. Cho nên jj ắt hẳn phải làm được điều gì đó mà git chưa làm được nên mới nổi lên như vậy.

    Thật ra mình đã nghe nói đến jj từ vài tháng trước rồi, nhưng vào đọc thì toàn kiến thức cao siêu. Hoặc là đang mang nặng cái lối suy nghĩ của git vào trong đầu rồi nên chưa lĩnh hội ra được điều gì cả.

    Mình hay có kiểu cái gì đọc lần 1 mà không hiểu thì đọc tiếp lần 2, lần 2 không hiểu thì đọc tiếp lần 3... đến lần thứ n mà vẫn không hiểu thì bỏ. Cơ mà không phải là từ bỏ mà một thời gian sau đó quay lại đọc tiếp. Đến một lúc nào đó khả năng mình sẽ hiểu ra một ít vấn đề, thế mới tài 😆.

    Thì cái jj này có vẻ như nó đang mở ra được tính linh hoạt trong việc "cam kết" mã. Tưởng tượng bạn đang làm việc trên một dự án, đang ở nhánh này, muốn sang nhánh khác để sửa, nhưng mà lại đang viết dở ở nhánh này, thế là phải stash, rồi checkout, rồi commit, rồi merge hoặc rebase lại vào nhánh cũ... nhìn chung quá trình làm việc với git nghiêm ngặt đến mức cứng nhắc, cần nhiều thao tác để giải quyết một vấn đề, chưa kể cái cây commit (commit-tree) nữa thì ôi thôi, khỏi xem cho đỡ nhức mắt. Thế nên ông jj này đang làm cách nào đó để bạn khỏi cần phải quan tâm đến các nhánh luôn, sửa trực tiếp vào commit. Nghe ảo nhỉ 😂.

    Đấy mới lĩnh hội được đến đấy, hy vọng sau n lần đọc lại nữa mình sẽ viết được một bài chi tiết hơn về công cụ này.

    » Xem thêm
  • Gòi gòi tới công chiện gòi 🤤🤤🤤

    » Xem thêm
  • Không biết blog được dẫn nguồn từ trang cà phê nào hay sao mà vài ba hôm trở lại đây thấy nhiều người tìm kiếm cà phê thế không biết 🤔.

    Tìm cả cách pha với tìm cả loại hạt, khổ nỗi họ tìm lại không ra bài viết nào vì mình chưa có viết đến mấy trường hợp đó. Phải chăng là ý trời 😀🙏

    » Xem thêm

Vấn đề

Node.js hiện nay đang là một nền tảng thực sự hấp dẫn chính vì thế ngày càng có nhiều người theo học nó. Thống kê của Stackoverflow cho thấy năm 2021 Javascript (JS) dẫn đầu trong bảng xếp hạng công nghệ phổ biến trên nền tảng của họ và Node.js đứng ở vị trí thứ 6 xếp sau Java. Điều này cho thấy sức nóng của Javascript cũng như Node.js chưa hề dừng lại.

Độ phổ biến của các ngôn ngữ lập trình

Nhiều công ty tuyển dụng Node, nhiều sản phẩm hay công cụ bằng Node ra đời cũng cho thấy mức độ quan tâm rất lớn của các nhà tuyển dụng đối với nó. Một công nghệ khi càng phổ biến, cộng đồng càng lớn thì độ phủ sóng cũng như mức độ tin cậy sẽ càng cao.

Nếu là một lập trình viên FE và làm việc với JS là một lợi thế rất lớn để chuyển qua vị trí lập trình Node. Bởi suy cho cùng Node là môi trường chạy mã Javascript, chỉ khác ở chỗ thay vì tương tác với DOM trên trình duyệt thì ta dùng JS để tương tác với file, cơ sở dữ liệu... nhiều hơn mà thôi.

Nhưng với những người mới bắt đầu lập trình chưa có nhiều kinh nghiệm lẫn kiến thức, hay lập trình viên FE muốn thử sức với BE thì nên tiếp cận như thế nào? Bài viết ngày hôm nay tôi xin phép chia sẻ kinh nghiệm của tôi cho những ai đang trên đường chinh phục Node, tuy chỉ là quan điểm cá nhân nhưng hy vọng sẽ giúp ích cho mọi người.

Cần hiểu rõ bản chất của Node.js

Node.js không phải là một ngôn ngữ, nó là một môi trường cho phép chạy mã Javascript "bên ngoài trình duyệt" và hơn thế nữa. Thử tưởng tượng nếu trình duyệt cho phép bạn chạy mã JS thì Node.js cho phép bạn chạy mã JS trên máy chủ. Có thể nói Node.js ở đây có vai trò tương đương như trình duyệt. Vì thế để học Node.js tối thiểu bạn cần có kiến thức về JS.

Một điều thuận lợi là tài liệu về JS rất nhiều, cộng đồng phát triển JS cũng rất đông nên bạn không cần phải lo lắng quá nhiều về việc tìm kiếm sự trợ giúp. Đơn giản với một từ khoá "tự học javascript/node.js" đã có rất nhiều những video, bài viết, khoá học... rồi.

Lập trình BE sẽ có phần khác với lập trình FE. Lập trình BE bạn sẽ phải tương tác với file nhiều hơn (đọc/ghi dữ liệu), tương tác với cơ sở dữ liệu (database) và nhiều logic xử lý dữ liệu rất khác với FE. Bạn chỉ có thể biết nhiều hơn bằng cách học và làm. Học đến đâu thì làm đến đó, có thể ngay từ đầu code không được tốt nhưng qua thời gian rèn luyện sẽ dần được cải thiện.

Các cách tiếp cận với Node.js hiện nay

Một người làm Back-end (BE) lâu năm bất kể là ngôn ngữ nào thì đối với họ đó là một điểm cộng rất lớn vì họ đã có sẵn tư duy lập trình, họ tự biết cách để chuyển những điều đó sang làm việc với Node.js. Có chăng khó khăn ban đầu là sự khác biệt giữ cú pháp, vấn đề này hoàn toàn có thể khắc phục được theo thời gian. Ngoài ra mỗi ngôn ngữ luôn có những tính năng đặc trưng nên cần bỏ thêm thời gian để nhuần nhuyễn những điều đó.

Một người làm Front-end (FE) cũng có thể chuyển sang BE bằng cách tiếp xúc với một dự án BE sẵn có. Chỉ cần trình bày cấu trúc dự án rồi giải thích cách hoạt động của dự án thì đã có thể làm theo để tạo những chức năng đơn giản đến phức tạp. Đây là một cách tiếp cận nhanh chóng thế nhưng vẫn cần phải bỏ ra thời gian để nghiên cứu thêm kiến thức về BE, nếu không rất có thể bạn sẽ bị hổng những kiến thức nền tảng quan trọng.

Còn đối với những người chưa hề có kinh nghiệp lập trình thì sao? Có thể họ sẽ tìm kiếm các khoá học về Node.js. Thời đại bùng nổ công nghệ thông tin việc tìm kiếm các nguồn tài nguyên học tập không mấy khó khăn, các chủ đề nói về node rất là nhiều, miễn phí và trả phí đều có. Nếu tìm được một người "thầy" hỗ trợ thì rất tốt, họ sẽ cho bạn những hướng đi để đến đích nhanh hơn. Khi gặp vấn đề họ cũng là người gỡ rối. Nhưng họ không thể mãi chỉ cho bạn từng li từng tí mà bạn cần phải tự thân vận động thì mới tiến bộ được.

Bằng cách nào đi nữa thì nổ lực học hỏi của bạn vẫn là quan trọng nhất. Nhiều bài viết, bài giảng đi theo một cấu trúc nhất định, nếu chỉ học ở trong đó chưa chắc đã là đủ. Kiến thức của lập trình rất nhiều và chúng móc nối với nhau. Liên tục vượt ra vùng an toàn để học những kiến thức mới, đừng để bị thụ động vấp mới bắt đầu học. Nên nhớ bản thân các công nghệ nói chung hay Node.js nói riêng đều được cập nhật hàng ngày, kiến thức bạn học hôm nay có thể ngày mai đã bị lỗi thời.

Lời khuyên cho lộ trình học tập

Trước tiên hãy đầu tư thời gian để học kiến thức cơ bản về Javascript, đó là cơ sở để học tiếp các kiến thức nâng cao sau này. Có một trang tài liệu về Javascript khá đầy đủ và chi tiết mà không cần phải tìm kiếm đâu xa là Mozila. Có thể nói Mozila là một trong những ông lớn trong làng trình duyệt đời đầu của giới web thế nên việc Mozila cung cấp tài liệu về Javascript là hết sức uy tín. Các bạn có thể đọc thêm bài viết Giải ngố: Mozilla/5.0 là gì? Tại sao trình duyệt nào cũng có chuỗi này trong User-Agent? để thấy tầm ảnh hưởng của Mozila.

Mozila cung cấp đầy đủ và chi tiết các bài viết về Javascript từ cơ bản đến nâng cao. Bạn sẽ được học từ các câu lệnh cơ bản của JS, về Object, bất đồng bộ (asynchronous) đến đi sâu vào các thành phần cấu tạo của Javascript như kiểu dữ liệu, Closure và Event loop... Các tài liệu sẽ có tính tham chiếu (reference) đến nhau nên hãy thận trọng trong khi tìm kiểu cẩn thận bị quá tải. Lời khuyên của tôi là hãy đọc tài liệu tham chiếu nhiều nhất nếu có thể để hiểu rõ hơn về các miền kiến thức liên quan đến nhau.

Có một số người sẽ thắc mắc đọc nhiều làm gì vì chưa chắc đã dùng hết. Đúng vậy, kiến thức về JS rất nhiều chưa chắc chúng ta cần phải áp dụng hết. Tuy nhiên bạn vẫn nên đọc để có góc nhìn bao quát, xem nó có gì để sau này tiện nghiên cứu hoặc gặp một bài viết hay vấn đề nào đó mà có liên quan thì sẽ biết cách tìm kiếm tài liệu.

Sau khi học xong JS, bước tiếp theo là học Node.js. Node.js là môi trường chạy mã JS nên nếu nắm vững JS thì không còn là vấn đề. Nodejs.dev là một trang dạy cách sử dụng Node.js theo phong cách Step-By-Step mà đơn giản để bắt đầu.

Nếu cảm thấy quá khó hãy thử tìm một "starter project". Đó là những khung project được tạo ra cho bạn bắt đầu viết mã. Xây dựng dự án theo khung và dành thời gian tìm hiểu cách hoạt động của nó. Làm đến khi tự dựng được một khung mà không cần dựa vào ai cả.

Học không thể không đi đôi với hành. Trong quá trình học nên tự tạo cho mình một dự án để vừa học vừa làm. Làm nhiều thì sẽ hình thành kinh nghiệm, mà kinh nghiệm càng dày dặn thì chắc chắn bạn sẽ chinh phục Node.js vào một ngày không xa.

Một ngày nào đó bạn sẽ nhận ra học mỗi Node.js là chưa đủ để trở thành một BE Developer. Còn rất nhiều thứ mà bạn cần khám phá và bạn cần có một lộ trình chi tiết. Roadmap.sh Backend là một lộ trình đầy đủ để giúp bạn trở thành một lập trình viên BE chuyên nghiệp.

Backend Roadmap

Tại đây bạn sẽ được cung cấp một lộ trình kiến thức cần phải học để đạt được mục đích cuối cùng là trở thành một BE Developer. Có rất nhiều thứ được nêu ra trong ảnh có thể khiến bạn bị choáng ngợp. Nhưng hãy bình tĩnh, không ai có thể trở thành chuyên gia trong ngày một ngày hai. Hãy từ từ tìm hiểu từng thứ một, như tôi đã nói không chắc là bạn phải biết cách áp dụng hết kiến thức đã học mà cần phải biết đến với thế giới BE thì có những gì. Để sau này gặp phải vấn đề còn biết cách tìm kiếm để giải quyết.

Cuối cùng, sự quyết tâm của bạn là tất cả, thành hay bại là do bạn tự quyết. Con đường học hành không bao giờ là dễ nhưng quyết tâm đủ lớn thì sớm muộn gì bạn cũng gặt hái được thành công.

Kết luận

Nhìn chung Javascript nói chung hay Node.js nói riêng không quá khó để bắt đầu. Những kiến thức cơ bản của chúng rất nhẹ nhàng và bạn có thể làm quen rất nhanh. Đó cũng là nền tảng để bạn tiếp cận với các kiến thức nâng cao sau này. Hãy nhớ muốn nhanh thì học cơ bản còn muốn giỏi thì phải học nâng cao.

Tự học là một quá trình dài và đòi hỏi sự kiên nhẫn. Tìm được một người "thầy" tốt là rất đáng trân trọng, còn không thì đường đi cũng chỉ hơi chông gai một tí. Nhưng bù lại bạn sẽ học cách làm chủ bản thân. Bạn có thể bỏ cuộc bất kì lúc nào nhưng sau những lần đó chỉ làm bạn quyết tâm hơn. Nếu vấp ngã hãy tự biết cách đứng dậy.

Cao cấp
Hello

Tôi & khao khát "chơi chữ"

Bạn đã thử viết? Và rồi thất bại hoặc chưa ưng ý? Tại 2coffee.dev chúng tôi đã có quãng thời gian chật vật với công việc viết. Đừng nản chí, vì giờ đây chúng tôi đã có cách giúp bạn. Hãy bấm vào để trở thành hội viên ngay!

Bạn đã thử viết? Và rồi thất bại hoặc chưa ưng ý? Tại 2coffee.dev chúng tôi đã có quãng thời gian chật vật với công việc viết. Đừng nản chí, vì giờ đây chúng tôi đã có cách giúp bạn. Hãy bấm vào để trở thành hội viên ngay!

Xem tất cả

Đăng ký nhận thông báo bài viết mới

hoặc
* Bản tin tổng hợp được gửi mỗi 1-2 tuần, huỷ bất cứ lúc nào.

Bình luận (1)

Nội dung bình luận...
Avatar
Linh Trịnh Mạnh2 năm trước
Mình cũng tự học node trước m code php tay ngang sang js may vẫn code đc. Để nói biết nhiều thì ko dám nhưng biết cách search. Khuyên mn là nên đọc các bài viết về chủ đề này thường xuyên hơn
Trả lời
Avatar
Xuân Hoài Tống2 năm trước
@gif [BPJmthQ3YRwD6QqcVD] Chúc mừng bạn
Bấm hoặc cuộn mạnh để sang bài mới