Trong giới lập trình, việc tìm tòi vẻ đẹp tận cùng của sự giản đơn cũng đồng nghĩa với việc chúng ta muốn tái sử dụng lại tool/ngôn ngữ bất cứ khi nào có thể và tránh các đoạn boilerplate code nhiều nhất. Nếu bạn là web developer, hẳn là bạn cũng ngầm hiểu được JavaScript có thể dùng cho cả frond-end và back-end. Nếu thế thì bạn đang dần dần trở thành một full-stack JavaScript hoặc chắc là một kỳ cựu.

Dù bạn đang ở vị thế nào thì đây là danh sách 10 thứ phải trang bị nếu muốn trở thành một full-stack JavaScript developer “tận răng”.

Full-stack developer có nghĩa là có thể code được server (back-end) chạy trên nền điều hành để khai thác dữ liệu từ cơ sở dữ liệu và hiển thị nó trên trang web (front-end).

Nội dung gồm 10 phần chia thành 3 bài viết

1. Có nền tảng lập trình và hiểu biết về JavaScript

Một điều hiển nhiên là bạn không thể full-stack JavaScript (hoặc full-stack những thứ khác xoay quanh phát triển web) mà không học JavaScript. Bạn không cần phải là bậc thầy hoặc một tay kỳ cựu nhưng nên có một sự hiểu biết cơ bản về paradigm (mô hình cấu trúc) và control flow (điều khiển luồng). Có thể khác với những gì bạn được nghe nhưng JavaScript không phải là một ngôn ngữ khó học.

Tuy JavaScript có kha khá “mẹo” và “bẫy” nhưng một khi quen bạn sẽ thấy JavaScript có phần vui và thú vị khi code. Bạn sẽ gặp nhiều đoạn code mẫu trông có vẻ tầm thường, nhưng khi dùng đúng chỗ thì sẽ rất tốt.

JavaScript vừa là ngôn ngữ kiểu động (dynamic) vừa là ngôn ngữ dựa trên nguyên mẫu (prototype-based language) sẽ gây chút phiền toái với những người đã quen với các ngôn ngữ hướng đối tượng truyền thống, sau đây là một số mẹo để bắt đầu.

JavaScript về cơ bản chia làm 2 loại: đối tượng (object) và kiểu dữ liệu (primitive). Có 5 kiểu dữ liệu là boolean, number, string, null và undefined; ngoài 5 cái này ra thì những thứ còn lại đều là object. Các hàm (function), lớp (class) trong ES6 (ECMAScript 6) và mảng (array) đều chỉ là các đối tượng.

Boolean, number và string đều có một phiên bản object riêng (object counterpart), JavaScript sẽ tự động thao tác các phiên bản này trong một số trường hợp. Ví dụ, “Giấc mơ full-stack”.length sẽ gói gọn object String xung quanh một kiểu dữ liệu String. Các object khi ở một cấp độ cơ bản có thể được xem là cặp khoá/giá trị với các khoá luôn luôn là String và giá trị có thể là bất cứ kiểu gì bạn muốn: một kiểu dữ liệu, một object khác, một hàm, một mảng, …

Chắc chắn rằng khía cạnh quan trọng nhất của JavaScript nhấn mạnh việc lập trình bất đồng bộ (asynchronous programming), cho phép luồng thực thi chính của chương trình liên tục làm việc trong khi chờ đợi các phương thức khác hoàn thành. Hai phương pháp chính cho việc này là callback và promise.

2. Nắm vững 1 Front-end framework

Single page applications - SPA (ứng dụng trang đơn) là thứ được quan tâm rộng rãi hầu hết ngày nay nhờ vào ưu thế vận hành. Học một framework về front-end là cách thực tế nhất để làm một SPA. Ba “lão đại” Angular, React.js và Vue.js, đương nhiên là còn nhiều lựa chọn khác nữa. Vì thế, có một “xíu” xung đột trong thế giới JavaScript để chọn ra “kẻ mạnh nhất”. Nếu bạn tìm kiếm từ khóa “Angular vs React.js” sẽ có rất nhiều bài viết đập vào mắt bạn về việc so nhau điểm mạnh và điểm yếu của cả hai.

Tôi thì nghiêng về phía Angular một chút nhưng cũng phải thừa nhận rằng một số trường hợp thì React.js hay Vue.js đảm nhiệm tốt hơn.

Lời khuyên là đọc một số bài viết và cố gắng tiến đệ một mức độ hiểu biết sâu rộng về sự khác biệt của các framework và lựa chọn đúng thứ mình cần.

3. Sử dụng được Bootstrap

Ngày nay, gần như tất cả các web-app (ứng dụng web) đều khá là bắt mắt khi mở trên một màn hình desktop bình thường hoặc trên các thiết bị di động, đương nhiên bạn sẽ không bao giờ có đủ thời gian (hoặc kiên nhẫn) để code hết đống code CSS để được như mấy web-app ấy. Có rất nhiều tính năng trong việc phát triển front-end để cải thiện trải nghiệm người dùng như popovers, popups, navigation bars, alerts, … Nếu bạn cố gắng thực hiện mấy thứ này một mình, không có gì tốt ngoại trừ một số lượng khổng lồ boilerplate code và việc phát triển với bảo trì sẽ mất cả đời để hoàn thành.

Bootstrap “vị cứu tinh” là một thư viện front-end được viết bởi Twitter, cung cấp một lượng lớn các tiện ích trải dài từ thiết kế cho đến tương tác và nhờ vậy mà bạn không còn phải code từ con số 0 nữa.

Tuy nhiên, nếu bạn đang trong quá trình học tập, rèn luyện bản thân bạn cũng nên học các xây dựng mọi thứ từ số 0, điều này sẽ giúp bạn tự chủ hơn khi những hỗ trợ không có sẵn mà yêu cầu từ khác hàng Bootstrap không đáp ứng đủ.

Chắc chắn rằng bạn không cần phải thông thạo hết các tính năng của Bootstrap nhưng tôi thành thật khuyên bạn nên làm quen với grid layout và navigation bar trước khi làm một cái web-app thường thấy trong các trang web và cũng chiếm vị trí quan trọng trong việc làm giao diện web mobile của bạn trông thân thiện hơn. Hai framework front-end chính được đề cập lúc nãy (Angular và React.js) có các thư viện tích hợp với Bootstrap, vì vậy bạn không cần lo về việc liệu tính năng này có tương thích với framework này hay không?