Bắt đầu với NodeJS - Mô hình Client - Server (Phần 2)
=> Node js là nền tảng mã nguồn mở , nó cho phép code javascript chạy phía server hay nói cách khác nó là một công nghệ máy chủ. Để chạy được mã js ở phía server như đã viết ở Phần 1 mã nguồn cần được biên dịch sang mã máy bằng cách sử dụng lại máy ảo V8 của google , hay con được gọi là môi trường thực thi runtime mã javascript trên trình duyệt chrome.
- Vì bức ảnh đã mô tả gần như 90% mô hình này nên mình không nói lại nữa chỉ chú ý những điểm sau đây
+ Request gửi lên server và respones trả về phải được định dạng theo nhưng kiểu nhất định và có auy tắc , nói nôm na ra thì Client và Server giao tiếp với nhau theo một đjnh dạng chuẩn chắc hẳn các bạn cũng biết định dạng này chính là HTTP
+ Code NodeJS chúng ta viết ở phía server giúp xử lý các request gửi lên và trả kết quả về cho client thông qua response.
Đi sâu vào vấn đề hơn bạn thấy rằng chúng ta thường nói về một máy chủ web , nó giống như một máy tính thông thường và được kết nối Internet công việc của nó là tiếp nhận và xử lý các request gửi đến và provide (cung cấp) các response trả về Client mà thông thường là trình duyệt (có thể là bất cứ soft nào) .
=> Như bên trên mình nói rồi thì 2 thằng này giao tiếp với nhau thông qua một định dạng chuẩn trên Internet gọi là HTTP , trong seri này mình chỉ tập trung vào cách bạn tạo ra các chương trình trên phía WEB SERVER mà thôi.
Nếu bạn đã từng tạo ra những chương trình trên trình duyệt thì bạn chắc hẳn sẽ biết đến JavaScript
Bởi vì nó là ngôn ngữ lập trình duy nhất được tích hợp vào tất cả các trình duyệt , trong mỗi trình duyệt nó triển khai các JavaScript Engine để chúng ta có thể viết mã bằng JavaScript ,
rõ ràng hơn nhé ví dụ Google Chrome là một chương trình được viết bằng C++ , Chorme được nhúng V8 (cũng được viết bằng C++) khi nhúng thêm V8 trình duyệt sẽ bổ sung thêm các tính năng cho JS trong trình duyệt , ví dụ để chỉnh sửa các thành phần DOM (là các phần tử HTML sau khi nó được nạp vào trong bộ nhớ) hoặc sử dụng AJAX để gửi request đến server các tính năng này nó không hề xuất hiện trong đặc tả của ECMA Script nhưng chính Chrome khi tích hợp cho JS nhiều tính năng hơn (thông qua V8) , một điều bạn nhớ rằng V8 được nhúng vào trong Chrome sẽ khác với V8 được nhúng vào trong NodeJS , chúng khác biệt về mặt tính năng đó là lý do tại sao
=> Khi bạn chạy code trên NodeJS thì không thể tương tác với DOM và khi bạn chạy code trên client thì không thể tiến hành đọc ghi file , V8 bổ sung cho JS các tính năng phù hợp với môi trường mà bạn dùng nó để phát triển phần mềm.
V8 như mình đã nói nhiều lần JavaScript Engine do google phát triển được customer lại
để tích hợp vào Node , trong thư mục deps chúng ta cũng thấy rất nhiều thư viện khác như htttp_parser , npm , uv (hầu hết được viết bằng C++) một số được tích hợp vào NODE một số được xây dựng riêng cho NODE , nó cung cấp các tính năng mà đặc tả ECMA Script không cung cấp.
Như vậy có thể hiểu rằng có rất nhiều tính năng mà node js cung cấp thêm cho js , bạn nên hiểu rằng NodeJS không phải là Javascript mà JavaScript được tích hợp vào Node và cung cấp cho JS nhiều tính năng hơn để phù hợp với môi trường phát triển phần mềm phía Server.
Lõi Javascirpt
Trong mã nguồn của Node cũng có rất nhiều file được viết bằng javascript nhưng hầu hết chúng khi chạy đều sẽ gọi đến các file C++ .
- Vì bức ảnh đã mô tả gần như 90% mô hình này nên mình không nói lại nữa chỉ chú ý những điểm sau đây
+ Request gửi lên server và respones trả về phải được định dạng theo nhưng kiểu nhất định và có auy tắc , nói nôm na ra thì Client và Server giao tiếp với nhau theo một đjnh dạng chuẩn chắc hẳn các bạn cũng biết định dạng này chính là HTTP
+ Code NodeJS chúng ta viết ở phía server giúp xử lý các request gửi lên và trả kết quả về cho client thông qua response.
Đi sâu vào vấn đề hơn bạn thấy rằng chúng ta thường nói về một máy chủ web , nó giống như một máy tính thông thường và được kết nối Internet công việc của nó là tiếp nhận và xử lý các request gửi đến và provide (cung cấp) các response trả về Client mà thông thường là trình duyệt (có thể là bất cứ soft nào) .
=> Như bên trên mình nói rồi thì 2 thằng này giao tiếp với nhau thông qua một định dạng chuẩn trên Internet gọi là HTTP , trong seri này mình chỉ tập trung vào cách bạn tạo ra các chương trình trên phía WEB SERVER mà thôi.
Nếu bạn đã từng tạo ra những chương trình trên trình duyệt thì bạn chắc hẳn sẽ biết đến JavaScript
Bởi vì nó là ngôn ngữ lập trình duy nhất được tích hợp vào tất cả các trình duyệt , trong mỗi trình duyệt nó triển khai các JavaScript Engine để chúng ta có thể viết mã bằng JavaScript ,
rõ ràng hơn nhé ví dụ Google Chrome là một chương trình được viết bằng C++ , Chorme được nhúng V8 (cũng được viết bằng C++) khi nhúng thêm V8 trình duyệt sẽ bổ sung thêm các tính năng cho JS trong trình duyệt , ví dụ để chỉnh sửa các thành phần DOM (là các phần tử HTML sau khi nó được nạp vào trong bộ nhớ) hoặc sử dụng AJAX để gửi request đến server các tính năng này nó không hề xuất hiện trong đặc tả của ECMA Script nhưng chính Chrome khi tích hợp cho JS nhiều tính năng hơn (thông qua V8) , một điều bạn nhớ rằng V8 được nhúng vào trong Chrome sẽ khác với V8 được nhúng vào trong NodeJS , chúng khác biệt về mặt tính năng đó là lý do tại sao
=> Khi bạn chạy code trên NodeJS thì không thể tương tác với DOM và khi bạn chạy code trên client thì không thể tiến hành đọc ghi file , V8 bổ sung cho JS các tính năng phù hợp với môi trường mà bạn dùng nó để phát triển phần mềm.
Hiểu rõ hơn về NodeJS
Lõi C++
Nếu bạn đọc qua mã nguồn của Node bạn sẽ thấy rằng trong deps (hầu hết được viết bằng C++) trong thư mục này chứa những module được xây dựng bên ngoài node JS , nó là những phần mềm độc lập được tính hợp và NODE một ví dụ điển hình đó là V8 .
V8 như mình đã nói nhiều lần JavaScript Engine do google phát triển được customer lại
để tích hợp vào Node , trong thư mục deps chúng ta cũng thấy rất nhiều thư viện khác như htttp_parser , npm , uv (hầu hết được viết bằng C++) một số được tích hợp vào NODE một số được xây dựng riêng cho NODE , nó cung cấp các tính năng mà đặc tả ECMA Script không cung cấp.
Như vậy có thể hiểu rằng có rất nhiều tính năng mà node js cung cấp thêm cho js , bạn nên hiểu rằng NodeJS không phải là Javascript mà JavaScript được tích hợp vào Node và cung cấp cho JS nhiều tính năng hơn để phù hợp với môi trường phát triển phần mềm phía Server.
Lõi Javascirpt
Trong mã nguồn của Node cũng có rất nhiều file được viết bằng javascript nhưng hầu hết chúng khi chạy đều sẽ gọi đến các file C++ .
Nhận xét
Đăng nhận xét