Hướng dẫn cho người mới bắt đầu về Node.js (JavaScript phía máy chủ)
Node.js - nói một cách đơn giản - là JavaScript phía máy chủ. Nó đã nhận được rất nhiều tiếng vang trong những ngày này. Nếu bạn đã nghe về nó hoặc bạn quan tâm đến việc học và nắm bắt nó - bài viết này là dành cho bạn.
Vậy chính xác nhu cầu sử dụng JavaScript trong máy chủ là gì? Để làm rõ khái niệm về Node.js, tôi muốn so sánh nó với các ngôn ngữ phía máy chủ thông thường như PHP. Node.js sử dụng một thủ tục thực thi máy chủ dựa trên sự kiện thay vì thực thi đa luồng trong PHP.
Để giải thích thêm, chúng ta sẽ nói về ý tưởng Node.js là gì cùng với một số gợi ý nhà cung cấp dịch vụ lưu trữ và mẹo cài đặt. Cần có kiến thức trung cấp về JavaScript, jQuery và Ajax, nhưng chúng tôi cũng sẽ cung cấp các ví dụ để bạn hiểu toàn bộ điều dễ dàng hơn và thậm chí làm việc với nó, vì vậy hãy tìm hiểu thêm về Node.js!
Hãy xem xét một trường hợp:
Hãy xem xét một trang web mà bạn cần tải động nội dung từ một máy chủ web khác chậm. Trong PHP bạn có thể làm theo 2 cách - mã hóa nó trong một tập tin đơn giản và mã hóa nó như một kịch bản khác, sau đó thực hiện nó theo cách tiếp cận đa luồng.
Trong phương thức đầu tiên mặc dù mã đơn giản việc thực thi tạm dừng một lúc tại điểm mà máy chủ web chậm được truy cập. Phương pháp thứ hai là tối ưu hơn trong trường hợp hiệu suất nhưng thật khó để viết mã và nó có một chi phí quản lý đa luồng. Trường hợp này tương tự với hầu hết các ngôn ngữ lập trình web khác với JavaScript phía máy chủ, tức là, Node.js.
Sự khác biệt trong Node.js là gì? Để hiểu Node.js, bạn phải ghi nhớ Lập trình dựa trên sự kiện của JavaScript trong trình duyệt. Chúng tôi sử dụng công nghệ tương tự ở đây. Thay vì sử dụng một chủ đề riêng biệt, một chức năng được gắn vào sự kiện kết thúc của “truy cập máy chủ web chậm” đã đề cập ở trên, do đó bạn có được đầy đủ chức năng trong tùy chọn thứ hai được tối ưu hóa được đề cập ở trên mà không có bất kỳ chi phí đa luồng nào.
Bắt đầu với Node.js
Node.js là JavaScript. Tại sao chúng ta không thể sử dụng chức năng dựa trên sự kiện của JavaScript trong máy khách đến máy chủ? Suy nghĩ này có thể đã dẫn đến sự phát triển của Node.js.
Điều đó nói rằng, điểm nổi bật chính của Node.js - đó là các hàm không đồng bộ dựa trên sự kiện. Nó sử dụng một vòng lặp sự kiện thay vì chờ các hoạt động I / O (truy cập dịch vụ web bên ngoài, truy cập phần cứng).
Node.js vẫn có thể sử dụng sức mạnh xử lý của nó khi máy chủ đang chờ bất kỳ hoạt động nào khác. Điều này làm cho Node.js khả năng mở rộng đến hàng triệu kết nối đồng thời.
JavaScript chạy trên máy chủ như thế nào?
Node.js hoạt động trên môi trường v8 - đó là một máy ảo hoặc một Công cụ JavaScript chạy mã JavaScript, vì vậy để lưu trữ, bạn không thể sử dụng các máy chủ web thông thường. Bạn sẽ cần những cái có môi trường v8.
Dưới đây là một số đề xuất của nhà cung cấp cho việc lưu trữ Node.js:
- Xưởng đúc mây
- Đám mây
- DotCloud
- Duostack
Cài đặt Node.js
Nút sẽ hoạt động hoàn hảo trên các hệ điều hành Linux, Macintosh và Solaris. Trên Windows, bạn có thể cài đặt nó bằng lớp mô phỏng Cygwin. Không có bản dựng nào trong Windows là thỏa đáng nhưng vẫn có thể chạy được thứ gì đó.
Tùy chọn 1: Xây dựng nút từ nguồn.
Sử dụng chế tạo
để xây dựng và cài đặt node.js (thực hiện như sau trên dòng lệnh). Git là bắt buộc.
git clone --depth 1 git: //github.com/joyent/node.git nút cd git checkout v0.4.11 export JOBS = 2 mkdir ~ / local ./configure --prefix = $ HOME / local / node thực hiện cài đặt echo 'export PATH = $ HOME / local / node / bin: $ PATH' >> ~ / .profile echo 'export NODE_PATH = $ HOME / local / node: $ HOME / local / node / lib / node_modules' >> ~ / .profile nguồn ~ / .profile
Tùy chọn 2: Cài đặt Node.js từ Gói
Đối với người dùng Mac, bạn có thể cài đặt Node.js dưới dạng gói từ https://sites.google.com/site/nodejsmacosx/ khá tự giải thích.
Kiểm tra cài đặt nút
Để kiểm tra cài đặt Node thành công của bạn, chúng tôi có thể thử chương trình "Hello World" rất đơn giản. Tạo một tệp có tên "test.js"và viết đoạn mã sau vào nó.
var sys = Yêu cầu ("sys"); sys.puts ("Xin chào thế giới");
Mã giải thích:
Nó tải hệ thống
lớp thành một biến hệ thống
. Sau đó, nó sử dụng hệ thống
đối tượng để thực hiện các nhiệm vụ giao diện điều khiển. Các sys.puts
là một lệnh tương tự như cout
trong C ++, vì vậy để chạy tập lệnh ở trên, hãy đến dấu nhắc lệnh và chạy nó bằng lệnh bên dưới:
nút test.js
Nếu cài đặt của bạn thành công thì bạn sẽ nhận được đầu ra hello world trong màn hình.
Tạo máy chủ HTTP
Bây giờ là lúc tạo ra một "Hello World" thông qua máy chủ web bằng Node.js. Đây là những gì chúng ta sẽ làm - chúng ta tạo một máy chủ tạo ra một “Chào thế giới” đến localhost trên cổng 8080 bất kể URL là gì, cho bạn ý tưởng gì biến cố Là.
Các mã:
var sys = quiries ("sys"), my_http = quiries ("http"); my_http.createServer (chức năng (yêu cầu, phản hồi) sys.puts ("Tôi đã bị đá"); answer.writeHeader (200, "Kiểu nội dung": "text / plain"); answer.write ("Hello World "); answer.end ();). lắng nghe (8080); sys.puts ("Máy chủ chạy trên 8080");
Mã giải thích:
Phần thú vị nhất trong Node.js là lập trình dựa trên sự kiện. Để tạo một máy chủ HTTP, chúng tôi cần Thư viện HTTP, vì vậy chúng tôi đi về phía trước và thêm nó bằng cách sử dụng my_http
. Chúng tôi tạo máy chủ theo chức năng:
my_http.createServer (chức năng (yêu cầu, phản hồi) ). lắng nghe (8080);
Hàm được đưa ra làm đối số đầu tiên được thực thi mỗi khi một sự kiện được kích hoạt ở cổng 8080, vậy chức năng của chính nó đề nghị nút lắng nghe một sự kiện trong cổng 8080. Để phát hiện điều này, tôi đã thêm một “Tôi bị đá” thông báo sẽ được hiển thị trên màn hình giao diện điều khiển bất cứ khi nào nhận được yêu cầu.
Các yêu cầu
đối tượng chứa tất cả thông tin về yêu cầu đã được gửi đến máy chủ. Ví dụ: nó chứa chuỗi URL. Các phản ứng
đối tượng là đối tượng xử lý phản hồi từ máy chủ. Đầu tiên chúng ta đặt tiêu đề của phản hồi là văn bản / đồng bằng
nội dung, sau đó đầu ra “Chào thế giới“, sau đó kết thúc luồng đầu ra. 200 là phản ứng trạng thái.
Chà, ví dụ trên là một ví dụ rất đơn giản nhưng chúng ta có thể thấy rằng bất kỳ URL nào chúng ta cung cấp trong trình duyệt cho cùng một máy chủ, chúng ta đều nhận được cùng một đầu ra như “Chào thế giới”.
Tạo máy chủ tệp tĩnh đơn giản
Hãy tạo một máy chủ tệp tĩnh đơn giản trong hướng dẫn tiếp theo.
Các mã:
var sys = quiries ("sys"), my_http = quiries ("http"), path = quiries ("path"), url = quiries ("url"), filesys = quiries ("fs"); my_http.createServer (function (request, reply) var my_path = url.parse (request.url) .pathname; var full_path = path.join (process.cwd (), my_path); path.exists (full_path, function (tồn tại ) if (! tồn tại) answer.writeHeader (404, "Kiểu nội dung": "text / plain"); answer.write ("404 Không tìm thấy \ n"); answer.end (); khác filesys.readFile (full_path, "binary", function (err, file) if (err) respons.writeHeader (500, "Kiểu nội dung": "text / plain"); respons.write (err + "\ n"); answer.end (); other answer.writeHeader (200); respons.write (tệp, "binary"); respons.end ();););). lắng nghe (8080); sys.puts ("Máy chủ chạy trên 8080");
Mã giải thích:
Đoạn mã trên khá đơn giản, chúng ta sẽ thảo luận nó dưới dạng các khối.
var sys = quiries ("sys"), my_http = quiries ("http"), path = quiries ("path"), url = quiries ("url"), filesys = quiries ("fs");
Tất cả các thư viện này là cần thiết cho chương trình. Cách sử dụng của nó sẽ rõ ràng trong đoạn mã sau.
var my_path = url.parse (request.url) .pathname; var full_path = path.join (process.cwd (), my_path);
Các yêu cầu
Đối tượng có các chi tiết yêu cầu như chúng ta đã thảo luận trước đó. Chúng tôi sử dụng phân tích
chức năng của lớp URL mà chúng tôi đã đưa vào để có được tên đường dẫn
của URL yêu cầu. Sau khi có được tên đường dẫn, chúng ta nối nó với đường dẫn của thư mục làm việc hiện tại để có được đường dẫn đầy đủ của tệp.
Để tham gia URL, chúng tôi có một chức năng gọi là tham gia
trong thư viện đường dẫn.
path.exists (full_path, hàm (tồn tại)
Sau khi nhận được đường dẫn đầy đủ, chúng tôi kiểm tra xem đường dẫn có tồn tại bởi hàm không tồn tại
. Sau khi kiểm tra xong, hàm gọi lại được gọi và chuyển qua làm đối số thứ hai.
if (! tồn tại) answer.writeHeader (404, "Kiểu nội dung": "text / plain"); answer.write ("Không tìm thấy 404 \ n"); đáp ứng.end (); other filesys.readFile (full_path, "binary", function (err, file) if (err) respons.writeHeader (500, "Kiểu nội dung": "text / plain"); respons.write ( err + "\ n"); answer.end (); other answer.writeHeader (200); respons.write (tệp, "binary"); respons.end (););
Bây giờ trong chức năng gọi lại nếu tệp không tồn tại, chúng tôi gửi một "Lôi 404 Không Tim Được Trang" lỗi.
Nếu trang được tìm thấy thì chúng ta đọc tệp bằng cách Đọc tài liệu
chức năng trong hệ thống tập tin. Chúng ta cũng có thể thấy chức năng gọi lại cho Đọc tài liệu
chức năng tự xác định. Nếu không có lỗi trong việc đọc tệp thì nó sẽ được hiển thị. Nếu có lỗi thì trạng thái 500 được trả về với văn bản lỗi.
Tôi cũng khuyên bạn nên gói mã của hướng dẫn trước vào một hàm để bạn có thể sử dụng nó trong hướng dẫn tiếp theo hoặc để sử dụng trong tương lai.
var sys = quiries ("sys"), my_http = quiries ("http"), path = quiries ("path"), url = quiries ("url"), filesys = quiries ("fs"); my_http.createServer (function (request, reply) var my_path = url.parse (request.url) .pathname; var full_path = path.join (process.cwd (), my_path); path.exists (full_path, function (tồn tại ) if (! tồn tại) answer.writeHeader (404, "Kiểu nội dung": "text / plain"); answer.write ("404 Không tìm thấy \ n"); answer.end (); khác filesys.readFile (full_path, "binary", function (err, file) if (err) respons.writeHeader (500, "Kiểu nội dung": "text / plain"); respons.write (err + "\ n"); answer.end (); other answer.writeHeader (200); respons.write (tệp, "binary"); respons.end (););); my_http. createdServer (function (request, reply) var my_path = url.parse (request.url) .pathname; load_file (my_path, hồi đáp);). lắng nghe (8080); sys.puts ("Máy chủ đang chạy trên 8080");
Hãy theo dõi !
Đó là tất cả. Hy vọng điều này cung cấp cho bạn một ý tưởng tốt về Node.js. Trong bài viết tiếp theo, tôi sẽ chỉ cho bạn cách tải và hiển thị số lượt thích trên Facebook bằng Node.js. Hãy theo dõi!
Ghi chú của biên tập viên: Bài này được viết bởi Địa lý Paul cho Hongkiat.com. Geo là một nhà phát triển Web / iPhone độc lập, thích làm việc với PHP, Codeigniter, WordPress, jQuery và Ajax. Ông có 4 năm kinh nghiệm về PHP và 2 năm kinh nghiệm Phát triển ứng dụng iniPhone.