Tôi đã đến với javascript như thế nào (Phần 1): Javascript thật đáng sợ
Hãy tưởng tượng một hôm nào đó, văn phòng bị cúp điện vào cỡ 7h tối và mọi người đang chờ có điện lại. Mọi người tổ chức kể chuyện...
Hãy tưởng tượng một hôm nào đó, văn phòng bị cúp điện vào cỡ 7h tối và mọi người đang chờ có điện lại. Mọi người tổ chức kể chuyện ma. Và mình bắt đầu với cái giọng thều thào "Ngày nảy, ngày nay, có một ngôn ngữ tên là Javascript"
Tôi sẽ không bao giờ chạm vào frontend
Từ lúc bắt đầu đi làm đến nay mình chưa bao giờ nghĩ mình thích frontend và nhất là javascript. Những đoạn code xử lý hiệu ứng bằng jQuery của mình luôn hết sức rườm rà và tệ hại. Mình nhớ có một lần leader có việc bận và bảo mình có một đoạn code mẫu rồi. Cứ copy và chạy là được. Vậy mà mình vẫn không làm được. Lần đó, mình lại phiền leader trong lúc nghỉ phép vẫn bị sếp gọi điện kêu hỗ trợ mình. Vào thời đó, nodejs đang nổi lên như là một trend trong giới lập trình của chúng mình. Đâu đâu cũng nghe nodejs từ các diễn đàn, tuyển dụng đến tận các khóa học. Riêng mình thì mình không muốn chạm đến nó một tí nào. Đọc sơ một số phần hướng dẫn thì mình quyết định bỏ luôn. Mình về với PHP nơi mình cảm thấy mình an toàn nhất. Mặc dù lúc đó PHP của mình cũng chẳng có gì ngoài lòng vòng vài framework như Phalcon, CI. Thậm chí mình còn chả định nghĩa được dependency management tools là gì. Cứ nghe đến composer là mình sợ. Bạn có thể tưởng tượng là mình là một thằng dev gà mờ đến mức nếu start một project symfony hoặc laravel thì chúng ta có thể generate ra bằng composer. Còn mình thì lòng vòng trên github kiếm một cái project mẫu và clone về code.
Quá nhiều huyền cơ cho một ngôn ngữ
mình có một ông anh làm chung lúc đó làm nodejs ông ta khoe là đang học nodejs. Trong một lần đi nhậu mình nghe nói một mớ từ vựng "anh dùng Express hay Hapi?", "em dùng express vì nó phổ biến...". Đau đầu lắm. Hôm sau ổng cho mình xem demo ổng code lại cái project hiện tại bằng nodejs. Mình mới nghĩ thầm "nodejs code được mấy cái này cơ à?". Các bạn biết vì sao mình lại đặt câu hỏi đó không? Vì đó giờ trong đầu mình cứ nghĩ nodejs chỉ là một ngôn ngữ phục vụ real time thôi. Thật đau lòng cho cái kiến thức hạn hẹp của mình.
Cũng lại là ông anh đó, trong lúc thất nghiệp nghỉ ngơi, lão làm một trang web xem phim và có trang admin để upload video. Mình không nhớ rõ nội dung trang web và công nghệ lắm. Mình chỉ biết nó code bằng nodejs thôi. Lúc đăng lên group ổng mới chat thêm một câu "dùng npm start để chạy nha". Mình nghĩ thầm "chắc ổng rõ sai rồi. Ý nghĩa đúng là Dùng npm để start nha". Mình nghĩ thế một phần vì cha đó văn phong ngày xưa hay lủng củng nên chat dư chử là điều bình thường. Đọc xong mình thầm nghĩ "à, à thì ra để chạy nodejs mình cần cái khởi động npm để chạy". Các bạn có thể tưởng tượng ra được không? Lúc đó mình nghĩ npm là một thứ giống như Apache bên PHP. Vì bên PHP mỗi lần dev mình phải cho start Apache và mình nghiễm nhiên nghĩ mỗi lần muốn dev nodejs thì chúng ta phải cho cái npm đó "start". Tai hại, thật quá tai hại mà...
Cuối cùng là một câu chuyện thời con đi học. Thầy dạy chúng mình môn lập trình web cho chúng mình một số demo về javascript. Khổ cái, thầy lại dùng jQuery. Code gì vừa ngắn, vừa đẹp lại dễ hiểu quá tuyệt vời luôn. Đem cái đó về nhà copy vào giữa hai thẻ script của mình. Bum!!! "$ is not defined" ngạc nhiên chưa? Surprise modafoca? mình chả biết lỗi đó là gì cả. Tìm kiếm google ra một đống kết quả nhưng không biết các giải quyết lỗi đó như thế nào hết. Sau nửa ngày, mình đưa ra quyết định. "đẹp đẽ và sạch sẽ mà xài không được cũng vứt". Vậy là mình xóa hết và quay về javascript thuần với những cú pháp pick dom thần thánh "document.getElementById()". Ơn Chúa là chúng chạy được dù code dài và xấu xí nhưng con quái vật Jormundgan trong thần thoại Bắc Âu. Nhưng quan trọng là nó Chạy! Nó Chạy được! Nó chạy được các bạn à. Đương nhiên, thời điểm khi viết bài này mình đã biết rằng phải gọi jQuery trước khi sử dụng nó.
Một thứ ngôn ngữ manh động và trẻ trâu
Asynchronous. Cái từ khóa đau đớn mà ai cũng từng gặp phải nếu đã tiếp xúc với javascript. Điển hình là mấy cái vụ tải dữ liệu ajax từ cha vào con. Mình nhớ rằng thời điểm đó, mình được giao là một cách form search mà có các selectbox theo cách cấp gồm có hãng xe (Toyota, GM, Lexus...) đến dòng xe và đến đời xe. Khổ nổi là mỗi lần thay đổi giá trị là sẽ phải gọi ajax theo trình tự cha con để tải lại nội dung. Nhưng không hiểu vì sao, vẫn có selectbox bị thiếu dữ liệu. Mình debug đủ kiểu mà vẫn không hiểu sao nó lại bị thế. Code không lỗi, flow đúng vậy thì cái ma thuật gì đang diễn ra thế. Sau nửa ngày đay nghiến cái máy. Mình bất lực vỗ vai leader và gọi "anh ơi, cứu em". Sau khi được thông não hôm đó, mình mới biết về sự đáng sợ của cái thứ ngôn ngữ này. Manh động và không có một tí kỷ luật nào. Muốn bọn phản loạn nghe lời buộc phải mạnh tay. Ban bố thiết quân luật với các loại thư viện. Khi được chuyển giao quyền lực từ người tiền nhiệm ES5 thì nhà cầm quyền mới ES6 cũng đã ban hành một số chế tài để quản lý cái đám này. Dù vậy mình vẫn thường xuyên muốn hét vào mặt bọn nó:
Sao bọn mày lỳ vậy? Nhìn PHP, Ruby các kiểu kìa. Thấy con nhà người ta không?
Bọn nguy hiểm không bao giờ đi một mình
Bọn này chúng đã nguy hiểm rồi mà chúng lại đông đảo nửa. Nếu từng đánh Dota 2 hẳn các bạn sẽ hiểu cảnh khi bọn chỉ là một support 5 yếu ớt bị một bầy Phantom Lancer đầy đủ 6 item hội đồng. Đương nhiên buông chuột và Alt + Tab là giải pháp tối ưu. Nếu bạn đã đọc các bài viết thường niên của chuỗi bài viết How it feels to learn JavaScript in 20xx thì bạn sẽ hiểu cảnh đó. Chúng đông, đông và hung hãn các bạn à. Nhìn cái ảnh chứa cái icon của các framework, thư viện, build tool và đủ thứ cái xây dựng từ các ngôn ngữ đó mà mình muốn F10EQ ngay lập tức. Nhìn nó chả khác gì cái bảng item của Dota 2 ấy. Nhiều đã đành. Để thế chúng còn ghép được với nhau nửa chứ. Để khi bắt đầu mình phải tự hỏi bản thân mình rằng có nên Alt + W ngay không. Nhưng mình bình tâm lại. Nhắm mắt. Lẫm nhẫm câu nói nổi tiếng của Julius Caesar:
Veni Vidi Vici - Julius Caesar
Hít thật sâu thở ra từ từ mở mắt ra nhìn lại lần nửa, cười nhẹ nhàng và nghĩ một điều trong đầu
Tôi đến, tôi thấy và tôi bỏ chạy...
Kết
Trong bài viết này mình có trích dẫn một câu nói của hoàng đế Augustus mà dịch ra nghĩa là "Nếu bạn muốn thấy cầu vòng, bạn phải đối diện với cơn mưa". Cầu vồng của javascript đẹp hay không thì đến nay mình vẫn chưa rõ. Nhưng mà đám mây đen kia to quá. Thôi thì ở nhà chơi với PHP cho vui. Đi thật xa sợ không có cửa để trở về. Nếu vậy thì thật yên bình và tốt đẹp. Nhưng số phận luôn phũ phàng các bạn à. Ở phần tới mình sẽ nói về cái lý do mình bị tống ra khỏi căn nhà kia, trùm áo tơi lên ra lao mình vào cái cơn mưa đen tối đó.
Đôi khi cầu vòng đủ sắc sao trong mắt của mình chỉ có mỗi màu của hoàng hôn - B2C
Câu ở trên chả có liên quan gì đến bài viết đâu. Chỉ là mình đang nghe bài đó khi đang viết thôi.
Note:
Thật ra bài này mình viết từ đời Tám Hoánh và đã hoàn thành hết các phần rồi. Chỉ là không biết đăng gì nên đăng lên thôi. Nếu ai có hứng thú xem một vòng các phần thì có thể vào trang cá nhân của mình tasynguyen3894.github.io

Chuyện trò - Tâm sự
/chuyen-tro-tam-su
Bài viết nổi bật khác
- Hot nhất
- Mới nhất