Đây là cuộc chiến của người bảo vệ cái cũ và người mới nổi nhưng được yêu mến trên máy chủ web ngăn xếp đứng lên chống lại nhau.

Lập trình PHP hay Nodejs

Trong một cốt truyện Hollywood cổ điển: có một trận chiến giữa hai người bạn cũ, là  những người đi trên các con đường riêng của mình. Va chạm thường xuyên bắt đầu phát sinh một vài tia lửa khi người bạn này quan tâm đến những gì vẫn thường xảy ra ở người bạn kia không cùng vùng. Trong các phiên bản ngôn ngữ lập trình trong bộ phim này, là giới thiệu của Node.js mà biến từ cái chạm nhẹ vào vai của người những bạn thân trở thành cặp đấu đầy hận thù: PHP và JavaScript, hai đối tác đều đã là những người từng cai trị Internet cùng nhau nhưng giờ nó đã ra vượt ra ngoài tâm trí của lập trình viên.

Ngày xưa, khi đó quan hệ đối tác của họ với nhau thì đơn giản. JavaScript nắm giữ giải quyết những việc lặt vặt trên trình duyệt, còn PHP quản lý các tác vụ trên máy chủ với cổng 80 và MySQL. Nó là một liên minh vui vẻ điều đó vẫn tiếp tục được hỗ trợ bởi nhiều bộ phận quan trọng của Internet.  Bên trong WordPress, Drupal, và Facebook, vẫn là PHP mà mọi người có thể gặp khó khăn khi lên mạng mà không chạy dựa vào PHP.

Nhưng sau đó những nhóc thông minh khám phá ra là họ có thể chạy JavaScript trên máy chủ. Đột nhiên, điều đó không cần dùng PHP để tạo thế hệ tiếp theo của máy chủ. Một ngôn ngữ được dùng trên máy chủ tạo bởi Node.js và một framework chạy trên máy client. “JavaScript ở mọi nơi.” trở thành câu thần chú với một số người.

Tất nhiên, kết thúc của phim vẫn chưa được viết ra. Đối với tiếng vang về sự thuần khiết của Node.js và sợ đơn giản của JavaScript ở mọi nơi, nó có khác với những đang người vui vẻ với những kho code cơ sở và ổn định từ lâu của PHP. Và người cũ sẽ đáp trả kẻ mới nổi? Hay JavaScript sẽ lật đổ người bạn cũ để thống trị thế giới? Nào chúng ta cùng đặt bỏng ngô vào trong là nướng và ngồi lại xem.

Khi nào PHP thắng: Trộn code với nội dung.

Bạn có thể gõ đoạn văn dài, đang đổ suy nghĩ vào trong đoạn văn cho trang web, và bạn lại muốn thêm nhánh vào một quá trình, chỉ cần chỉ dẫn if-then nhỏ là đã có thể làm nó trông đẹp đẽ, và nói khác tuỳ thuộc vào vài tham số trong URL. Hoặc bạn có thể trộn lẫn văn bản và dữ liệu từ cơ sở dữ liệu. Với PHP, bạn có thể mở thẻ PHP đầy ma thuật và bắt đầu viết code chỉ với vài giây. Không cần đến mẫu – bởi vì tất cả đều là mẫu. Không cần phải mở rộng tệp hoặc kiến trúc xây dựng. Chỉ cần sức mạnh hiển nhiên của các ngón tay kỳ diệu của bạn.

Khi nào Node thắng: Chia tách mối quan tâm.

Trộn lẫn code với nội dung là một vật chống đỡ bạn nhưng nó có thể làm bạn tê liệt. Chắc chắn, nhưng nói vui là trong một đoạn HTML có đôi ba lần bạn đã làm điều đó. Nhưng sẽ sớm thôi đoạn code của bạn sẽ trở thành một đám mớ bòng bong lôgíc. Thực tế lập trình viên thường cấu trúc lại và tách riêng ra ở lớp làm mượt mà từ lớp lôgic. Code sẽ trong sáng với lập trình viên mới để hiểu và dễ dàng duy trì. Framework chạy trên Node.js được tạo ra bởi những lập trình viên hiểu cuộc sống sẽ tốt đẹp hơn khi model, view và controller được chia tách rõ ràng.

Khi nào PHP thắng: Số lượng code căn bản có số lượng lớn và sâu sắc.

Hiện tại thì Web đã thoả mãn yêu cầu đối với code PHP. Có rất nhiều nền tảng phổ biến để xây dựng nên trang web( WordPress, Drupal, Joomla) là được viết bởi PHP. Không phải tất cả nền tảng đều là mã nguồn mở, nhưng họ đã có rất nhiều plug-ins. Mọi nơi đều có code PHP và nó luôn chờ đợi bạn tải về, chỉnh sửa và dùng nó cho bạn khi cần.

Khi nào Node thắng: Đoạn code mới có nhiều tính năng hiện đại.

Chắc chắn rồi có hàng nghìn tệp mã nguồn mở của PHP tuyệt vời, nhưng làm gì có ai hy vọng và cầu nguyện ai đó sẽ tải một cái plug-ins của WordPress đã tám năm tuổi. Họ sẽ làm khỉ gì hàng giờ, hàng ngày hay hàng tuần với những đoạn code không còn được cập nhật trong nhiều năm. Plug-ins của Node.js không chỉ mới; mà những người tạo ra nó với đầy hiểu biết về phương pháp tiếp cận kiến trúc mới nhất. Chúng được lập trình bởi những người hiểu về ứng dụng Web hiện đại sẽ đẩy tất cả xử lý thông minh đến client.

Khi nào PHP thắng: Đơn giản( Kiểu dữ liệu)

Chúng không có quá nhiều với PHP: một vài biến và hàm căn bản cho việc tung hứng giữa các chuỗi và các số. Nó là một lớp mảnh mai mà không làm ảnh hưởng quá nhiều ngoài việc đưa dữ liệu từ cổng 80 vào cơ sở dữ liệu và ngược lại. Đó là cái cần phải làm. Cơ sở dữ liệu hiện đại là một công cụ đầy ma thuật, và nó có thể tạo ra các cảm nhận để tự nhân biết cái đưa cho nó đó. PHP thì đúng là hiệu quả với sự phức tạp đối với công việc mà đôi khi không cần phải phức tạp.

Khi nào Node thắng: Hoàn thiện của sự đóng gói và nhiều hơn nữa.

JavaScript có thể có nhiều tật riêng nhỏ dẫn đến việc lái xe điên điên nhưng đối với phần lớn nó là cấu trúc ngôn ngữ hiện đại giống như các môn thể thao là có các cú pháp hiện đại và có vài tính năng quý giá như đóng kín.

Bạn có thể cấu hình và mở rộng lại nó đơn giản, có thể tạo ra các thư viện đầy sức mạnh giống như Jquery. Bạn có thể vượt ra ngoài chức năng xung quanh giống như các đối tượng. Vậy sao bạn bị giới hạn?

Khi nào PHP thắng: Không cần thiết có ứng dụng trên client.

Tất cả những thứ trên là nói về việc cần có cùng một ngôn ngữ trên trình duyệt và trên web thì thật tuyệt đẹp nhưng nếu bạn không cần đến bất cứ ngôn ngữ nào trên trình duyệt? Nếu bạn chỉ gửi dữ liệu từ form HTML? Nếu trình duyệt tự mở nó lên hoặc bạn không phải đau đầu hoặc lo lắng tính ổn định bởi các luồng JavaScript với hai chục tá cuộc gọi đến máy chủ để tạo ra một trang trên trình duyệt. HTML thuần thường xuyên dùng hơn so với cái khác, và PHP thì tối ưu hoá để tạo ra điều đó. Tại sao bận tâm với JavaScript trên trình duyệt? Xây dựng tất cả trên máy chủ và giảm quá tải với trình duyệt nhỏ trên thiết bị nhỏ.

Khi nào Node thắng: Dữ liệu của các lời gọi lên và trả về sẽ ngắn gọn hơn so với cuộc gọi HTML-PHP kềnh càng

Chừng nào ứng dụng HTML 5 còn say đắm AJAX có thể có nhiều phần biến động, chúng thật tuyệt  – và rất hiệu quả. Một khi code JavaScript lưu trong cache của trình duyệt, chỉ thay đổi duy nhất trong mạng lưới là dữ liệu mới mà thôi. Không tốn hàng tấn thông tin đánh dấu HTML, và nó không phải lặp đi lặp lại trong chuyến đi để tải về toàn thể trang web. Chỉ có dữ liệu là thay đổi. Nếu bạn bỏ ra thời gian để tạo ra một ứng dụng trang web lanh lẹ, thì đó sẽ là một khoản chi tiêu lớn. Node.js thì tối ưu để cung cấp dữ liệu và chỉ dẫn dữ liệu cho dịch vụ web. Nếu trang web của bạn là phức tạp và dữ liệu phong phú thì nó là một nền tảng tốt cho việc phân phối hiệu quả.

Khi nào PHP thắng: SQL

PHP được tạo ra đồng thời với MySQL và nó có nhiều biến thể, như là MariaDB. Nếu MySQL không phải là chính xác thứ bạn cần thì còn có nhiều cơ sở dữ liệu SQL lớn hơn từ Oracle và Microsoft. Code của bạn có thể chuyển đổi chỉ với vài thay đổi trong truy vấn. Thế giới rộng lớn của SQL không hề có biên giới. Một số thì đã ổn định, phát triển tốt sẽ có giao diện giao tiếp với cơ sở dữ liệu SQL, nghĩa là điều đó dễ tích hợp vào trong dự án PHP. Nó có lẽ không phải là một sự hoàn hảo, hạnh phúc trong gia đình nhưng nó là một điều lớn lao.

Khi nào Node.js thắng: JSON.

Nếu bạn muốn truy cập tới SQL, Node.js đã có thư viện để làm điều đó. Nhưng khi nói tới Node.js cũng là nói tới JSON, nó là ngôn từ pha trộn của nhiều cơ sở dữ liệu NoSQL mới nhất. Điều đó không có ý nói với bạn là không có thư viện JSON cho PHP, nhưng một vài thứ mềm dẻo và đơn giản dùng JSON khi dùng JavaScript. Nó là một cú pháp từ trình duyệt tới máy chủ đến cơ sở dữ liệu. Dấu hai chấm “:” và dấu ngoặc nhọn “{}” làm việc ở khắp mọi nơi. Chỉ một mình điều đó cũng giúp giảm bớt cho bạn hàng giờ thất vọng.

Khi nào PHP thắng: Tốc độ viết code.

Với đa số lập trình viên, viết PHP cho ứng dụng Web cảm thấy nhanh hơn: không biên dịch, không triển khai, không tệp JAR hay xử lý trước — chỉ với bộ soạn thảo yêu thích và vài tệp PHP trong thư mục. Việc làm việc hiệu quả sẽ không giống nhau nhưng khi nó gộp vào trong dự án thì đơn giản, PHP là một công cụ tốt để dùng.

Khi nào Node.js thắng: Tốc độ thực thi

Viết code JavaScript  có chút khó khăn khi bạn phải chú ý đến ngoặc và ngoặc đơn, nhưng khi hoàn thành, code Node.js của bạn có thể bay bổng. Cơ chế callback thì rực rỡ nhưng nó sẽ đưa bạn tới đám bòng bong của các luồng. Nhưng phần lõi đã được thiết kế và xây dựng tất cả tốt nhất cho bạn. Đó không phải là cái mọi người muốn sao?

Nguồn: PHP vs. Node.js