5 điều Ryan Dahl chia sẻ rằng anh cảm thấy "hối hận" vì đã làm với Node.js

5 điều Ryan Dahl chia sẻ rằng anh cảm thấy "hối hận" vì đã làm với Node.js

Tin ngắn hàng ngày dành cho bạn
  • Hôm nay tình cờ mình biết đến trang web notes.andymatuschak.org có cách ghi chú rất hay. Bấm vào liên kết nó mở ra một thẻ mới bên cạnh. Cứ thế bấm vào thì nó lại tiếp tục mở ra. Giống như các ngăn tài liệu vậy.

    Kiểu trình bày này vừa dễ theo dõi mà còn đúng như kiểu viết theo mạch cảm xúc luôn. Tiếc là không thấy tác giả nguồn mở dự án này. Không biết có cái nào tương tự không ta 🤔

    » Xem thêm
  • Bạn nhận thấy sự khác biệt gì trong bức ảnh này không 😁

    » Xem thêm
  • Instagram hôm nay vừa mới giới thiệu ứng dụng chỉnh sửa video dành cho người sáng tạo nội dung có tên là Edits. Tầm này là cạnh tranh trực tiếp với các ứng dụng phổ biến trên thị trường luôn. Cơ mà chắc phải một thời gian nữa vì ngó qua tính năng vẫn hết sức cơ bản, đủ dùng thôi.

    À nhân tiện khoe luôn mình "chơi" IG cũng hơn 10 năm rồi đấy. Mọi người ai có IG thì để lại tài khoản cho mình xem với nhé 🥳.

    IG của mình là hoaitx_

    » Xem thêm

Vấn đề

Node.js được giới thiệu lần đầu tiên bởi Ryan Dahl vào năm 2009. Và 9 năm sau đó cũng là Ryan Dahl nhưng lần này anh mang đến một nền tảng khác với tên gọi là Deno. Giống như Node, Deno cung cấp một môi trường chạy Javascript trên máy chủ cực kì mạnh mẽ. Trong một video từ năm 2018, Ryan Dahl đã có một bài thuyết trình về "10 điều tôi tiếc nuối về Node.js" ngay trước khi anh công bố Deno.

Vậy tại sao Deno lại ra đời nếu như Node.js đã đủ tốt? Bài viết ngày hôm nay tôi xin phép được trích ra 5 điều mà Ryan Dahl hối hận khi đã làm/không làm với Node.js.

NPM và package.json

NPM & package.json

Trải qua nhiều thăng trầm thì Node.js và npm là bộ đôi luôn đi cùng nhau, npm được mệnh danh là kho lưu trữ những phụ thuộc "depency" cho node. Npm là một kho lưu trữ tập trung và bị kiểm soát.

Chính vì tập trung nên npm nhiều lần trở thành mục tiêu cho các cuộc tấn công nhằm vào các gói để gắn mã độc. Như vụ Popular NPM Package Hijacked to Publish Crypto-mining Malware hay các vụ tấn công nhằm xoá dữ liệu người dùng như Dev Sabotages Popular NPM Package to Protest Russian Invasion.

Npm đã phát minh ra package.json, đó là một tập nhằm ghi lại những thông tin như các package được sử dụng, thông tin giấy phép, repository, description... và hàng tá những thông tin mà có vẻ không phải tất cả đều cần thiết.

node_modules

node_modules black hole

Đã bao giờ bạn nghe đến việc so sánh node_modules với hố đen vũ trụ? Hay nếu bạn có tầm cỡ 10 dự án Node.js trong máy đồng nghĩa với bạn sẵn sàng có thêm 10 hố đen.

node_modules là thư mục được sinh ra để lưu lại tất cả những package cần dùng trong dự án, nó không sử dụng một thứ gọi là NODE_PATH để lưu trữ tập trung mà sẽ lưu vào mỗi dự án. Chính cha đẻ của Node.js cũng thừa nhận node_modules là một sai lầm không thể nào sửa chữa được và xin lỗi về điều đó.

Promise

Javascript Promise

Node.js đã không gắn bó với Promise ngay từ đầu, bằng chứng là có rất nhiều API trong node vẫn sử dụng callback để xử lý bất đồng bộ. Ngày nay Promise phát huy rất nhiều tác dụng cộng với async/await và điều đó làm cho cha đẻ của Node.js hối hận nhưng khó có thể sửa chữa lại được.

Security

Node.js security

Nếu bạn chạy một ứng dụng Node.js nó sẽ có toàn quyền truy cập vào các file/folder, mạng và các biến môi trường. Rõ ràng điều này có thể gây mất an toàn nếu như vô tình chạy một dự án đã bị dính mã độc, hoặc những kẻ tấn công có thể lợi dụng việc này để khai thác các máy chủ Node.js.

The Build System (GYP)

GYP

Cha đẻ của Node.js đã chia sẻ rằng GYP là một công cụ rất khó để xây dựng nhưng vì ban đầu V8 của Chrome sử dụng GYP, sau đó Chrome đã loại bỏ GYP để lại Node.js là người dùng GYP duy nhất.

Để tạo được những công việc xử lý ngoài Event Loop chúng ta phải trực tiếp thao tác với V8 bằng các dựng các Addon C++, nhiều người đã phàn nàn về điều đó và đề nghị chuyển sang một giải pháp giúp chuyển đổi dễ hơn (Foreign Function Interface (FFI)) thế nhưng thật đáng tiếc rằng anh đã bỏ qua chúng.

Anh cũng chia sẻ thêm anh không thích libuv bởi vì nó dùng autotools!?

Tổng kết

Có những sai lầm có thể sửa chữa nhưng có những sai lầm thì không, bài viết là 5 sai lầm mà cha đẻ của Node.js chia sẻ cho chúng ta biết anh hối hận những gì. Nhưng dù sao thì Node.js cũng đã trưởng thành và có chỗ đứng nhất định trong cộng đồng và doanh nghiệp trên thế giới.

Tài liệu tham khảo:

Cao cấp
Hello

Bí mật ngăn xếp của Blog

Là một lập trình viên, bạn có tò mò về bí mật công nghệ hay những khoản nợ kỹ thuật về trang blog này? Tất cả bí mật sẽ được bật mí ngay bài viết dưới đây. Còn chờ đợi gì nữa, hãy bấm vào ngay!

Là một lập trình viên, bạn có tò mò về bí mật công nghệ hay những khoản nợ kỹ thuật về trang blog này? Tất cả bí mật sẽ được bật mí ngay bài viết dưới đây. Còn chờ đợi gì nữa, hãy bấm vào 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 (3)

Nội dung bình luận...
Avatar
Thành Đỗ2 năm trước
Có một sự thật là Ryan đã khắc phục tất cả vấn đề trên với Deno. Mà de-no <=> no-de 😁
Trả lời
Avatar
Long Domi2 năm trước
Cái node gyp kia luôn là ác mộng, lúc build lỗi ấy
Trả lời
Avatar
Vũ Mạnh Đức2 năm trước
Node_modules so sánh với black hole hài hước
Trả lời