Hướng dẫn server-side javascript

Node.js – nói một cách đơn giản – là server-side JavaScript (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 nói về nó hoặc bạn muốn tìm hiểu và bắt tay vào thực hiện – thì bài đăng này là dành cho bạn.

Vậy chính xác thì 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 quy trình 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 ý và mẹo cài đặt của nhà cung cấp dịch vụ lưu trữ . Cần phải có kiến ​​thức trình độ 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ộ vấn đề dễ dàng hơn và thậm chí có thể làm việc trên đó, vì vậy hãy cùng tìm hiểu thêm về Node.js!

  • Hãy xem xét một trường hợp:
  • Bắt đầu với Node.js
  • JavaScript chạy trên máy chủ như thế nào?
  • Cài đặt Node.js
  • Kiểm tra cài đặt Node
  • Tạo máy chủ HTTP
  • Tạo máy chủ tệp tĩnh đơn giản

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 nội dung động từ một máy chủ web khác chậm. Trong PHP, bạn có thể làm điều đó theo 2 cách – mã hóa nó trong một tệp đơn giản và mã hóa nó thành một tập lệnh khác, sau đó thực thi nó theo cách tiếp cận đa luồng.

Trong phương pháp đầu tiên, mặc dù mã đơn giản nhưng 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 được tối ưu hóa hơn trong trường hợp hiệu suất nhưng khó viết mã và nó có chi phí quản lý đa luồng. Trường hợp tương tự đối 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 một công nghệ ở đây. Thay vì sử dụng một chuỗi riêng biệt, một chức năng được đính kèm với sự kiện kết thúc của “truy cập máy chủ web chậm” được đề 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 cho máy chủ? Suy nghĩ này có thể đã dẫn đến sự phát triển của Node.js.

Hướng dẫn server-side javascript

Điều đó nói lên đ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ờ đợi 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 có thể mở rộng cho 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 – nó 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ố gợi ý của nhà cung cấp cho dịch vụ lưu trữ Node.js:

  1. Cloud Foundry
  2. Cloudnode
  3. DotCloud
  4. Duostack

Cài đặt Node.js

Node 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 cách sử dụng lớp mô phỏng Cygwin . Không có bản dựng nào trong Windows đạt yêu cầu nhưng vẫn có thể có thứ gì đó đang chạy.

Phương án 1: Xây dựng Node từ nguồn

Sử dụng make để xây dựng và cài đặt node.js (thực hiện phần sau trên dòng lệnh). Git là bắt buộc

git clone --depth 1 git://github.com/joyent/node.git
cd node
git checkout v0.4.11
export JOBS=2
mkdir ~/local
./configure --prefix=$HOME/local/node
make
make install
echo 'export PATH=$HOME/local/node/bin:$PATH' >> ~/.profile
echo 'export NODE_PATH=$HOME/local/node:$HOME/local/node/lib/node_modules' >> ~/.profile
source ~/.profile

Phương án 2: Cài đặt Node.js từ Package

Đối với người dùng Mac, bạn có thể cài đặt Node.js dưới dạng một gói từ https://sites.google.com/site/nodejsmacosx/, điều này khá dễ hiểu.

Kiểm tra cài đặt Node

Để kiểm tra cài đặt Node thành công của bạn, chúng tôi có thể thử một chương trình bảng điều khiển rất đơn giản “Hello World”. Tạo một tệp có tên “test.js”Và viết đoạn mã sau vào đó.

var sys = require("sys");
sys.puts("Hello World");

Giải thích mã:

Nó tải sys lớp thành một biến sys. Sau đó, nó sử dụng sys để thực hiện các tác vụ trên bảng đ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 đi tới dấu nhắc lệnh và chạy nó bằng lệnh dưới đây:

node 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 trên màn hình.

Hướng dẫn server-side javascript

Tạo máy chủ HTTP

Bây giờ đã đến lúc tạo “Hello World” thông qua máy chủ web bằng Node.js. Đây là những gì chúng tôi sẽ làm – chúng tôi tạo một máy chủ xuất “Hello World” đến localhost trên cổng 8080 bất kể URL là gì, cho bạn biết sự kiện là gì.

Các mã:

var sys = require("sys"),
my_http = require("http");
my_http.createServer(function(request,response){
	sys.puts("I got kicked");
	response.writeHeader(200, {"Content-Type": "text/plain"});
	response.write("Hello World");
	response.end();
}).listen(8080);
sys.puts("Server Running on 8080");	

Giải thích mã:

Phần thú vị nhất trong Node.js là lập trình dựa trên sự kiện của nó. Để tạo một máy chủ HTTP, chúng tôi cần HTTP library vì vậy chúng tôi tiếp tục và thêm nó bằng cách sử dụng my_http. Chúng tôi tạo máy chủ bằng chức năng:

my_http.createServer(function(request,response){}).listen(8080);

Hàm được cung cấp làm đối số đầu tiên được thực thi mỗi khi một sự kiện được kích hoạt trong cổng 8080 , do đó, bản thân hàm đề xuất 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 thông báo “ Tôi bị đá ” sẽ hiển thị trên màn hình bảng điều khiển bất cứ khi nào nhận được yêu cầu.

Đối requesttượng chứa tất cả thông tin về yêu cầu đã được thực hiện đối với máy chủ. Ví dụ: nó chứa chuỗi URL. Đối responsetượng là đối tượng xử lý phản hồi từ máy chủ. Đầu tiên, chúng tôi đặt tiêu đề của phản hồi dưới dạng text/plainnội dung, sau đó xuất ra “ Hello World ”, sau đó kết thúc luồng đầu ra. 200 là phản hồi 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 sẽ nhận được cùng một kết quả như “Hello World”.

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 = require("sys"),
my_http = require("http"),
path = require("path"),
url = require("url"),
filesys = require("fs");
my_http.createServer(function(request,response){
	var my_path = url.parse(request.url).pathname;
	var full_path = path.join(process.cwd(),my_path);
	path.exists(full_path,function(exists){
		if(!exists){
			response.writeHeader(404, {"Content-Type": "text/plain"});  
			response.write("404 Not Foundn");  
			response.end();
		}
		else{
			filesys.readFile(full_path, "binary", function(err, file) {  
			     if(err) {  
			         response.writeHeader(500, {"Content-Type": "text/plain"});  
			         response.write(err + "n");  
			         response.end();  
			   
			     }  
				 else{
					response.writeHeader(200);  
			        response.write(file, "binary");  
			        response.end();
				}
					 
			});
		}
	});
}).listen(8080);
sys.puts("Server Running on 8080");			

Giải thích mã:

Đoạn mã trên khá đơn giản, chúng ta sẽ thảo luận về nó dưới dạng các khối.

var sys = require("sys"),
my_http = require("http"),
path = require("path"),
url = require("url"),
filesys = require("fs");

Tất cả các thư viện này là bắt buộc 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 request 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 parse của lớp URL mà chúng tôi đã đưa vào để có được pathname của URL yêu cầu. Sau khi nhận được tên đường dẫn, chúng tôi 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.

Để kết hợp các URL, chúng tôi có một chức năng được gọi là join trong thư viện đường dẫn.

path.exists(full_path,function(exists){

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 hay không bởi hàm exists. Sau khi kiểm tra xong, hàm gọi lại được gọi và chuyển làm đối số thứ hai.

if(!exists){
	response.writeHeader(404, {"Content-Type": "text/plain"});  
	response.write("404 Not Foundn");  
	response.end();
}
else{
	filesys.readFile(full_path, "binary", function(err, file) {  
		 if(err) {  
			 response.writeHeader(500, {"Content-Type": "text/plain"});  
			 response.write(err + "n");  
			 response.end();  
	   
		 }  
		 else{
			response.writeHeader(200);  
			response.write(file, "binary");  
			response.end();
		}
			 
	});
}

Bây giờ trong hàm gọi lại nếu tệp không tồn tại, chúng tôi gửi “Lôi 404 Không Tim Được Trang” lỗi.

Nếu trang được tìm thấy thì chúng tôi đọc tệp bằng cách readFile trong hệ thống tệp. Chúng ta cũng có thể thấy chức năng gọi lại cho readFile được xác định ở đó chính nó. Nếu không có lỗi khi đọ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.

var sys = require("sys"),
my_http = require("http"),
path = require("path"),
url = require("url"),
filesys = require("fs");
my_http.createServer(function(request,response){
	var my_path = url.parse(request.url).pathname;
	var full_path = path.join(process.cwd(),my_path);
	path.exists(full_path,function(exists){
		if(!exists){
			response.writeHeader(404, {"Content-Type": "text/plain"});  
			response.write("404 Not Foundn");  
			response.end();
		}
		else{
			filesys.readFile(full_path, "binary", function(err, file) {  
			     if(err) {  
			         response.writeHeader(500, {"Content-Type": "text/plain"});  
			         response.write(err + "n");  
			         response.end();  
			   
			     }  
				 else{
					response.writeHeader(200);  
			        response.write(file, "binary");  
			        response.end();
				}
					 
			});
		}
	});
}
my_http.createServer(function(request,response){
	var my_path = url.parse(request.url).pathname;
	load_file(my_path,response);
}).listen(8080);
sys.puts("Server Running on 8080");			

Đó 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. Hãy truy cập website Driveria để nhận được những bài viết hữu ích về các thiết bị công nghệ nhé. Đừng quên Like, Share bài viết và ấn nhận thông báo từ chúng mình nhé