Trong bài này chúng ta sẽ tìm hiểu hàm join trong javascript, đây là hàm dùng để nối các phần tử của mảng lại với nhau thành một chuỗi
Bài viết này đã được đăng tại freetuts. net , không được sao chép dưới mọi hình thức.
Hàm tham gia sẽ nối các phần tử của mảng thành một chuỗi, các phần tử được ngăn cách nhau bởi ký tự do người dùng quy định. Nếu không truyền vào ngăn chặn tự động truyền thì giá trị mặc định là dấu phẩy ","
Nếu bạn chỉ đơn thuần muốn chuyển mảng thành chuỗi và ngăn cách bởi dấu phẩy thì hãy sử dụng mảng hàm. toString[] nhé
1. Cú pháp hàm join trong javascript
Hàm tham gia có cú pháp như sau
Bài viết này đã được đăng tại [free tuts. mạng lưới]
array.join[separator]
in which
5 là ký tự sẽ ngăn cách các phần tử với nhau, mặc định mang giá trị là dấu ","const server = http.createServer[]; server.on['request', [request, response] => { // the same kind of magic happens here! }];
- Hàm sẽ trả về một chuỗi và mảng cũ không ảnh hưởng gì cả
Hàm này rất ít khi sử dụng, do thao tác chuyển đổi chuỗi thành chuỗi trong các ứng dụng thực tế rất mới
Ví dụ. Đây là bản demo mình lấy từ trang chủ của mozilla
var a = ['Wind', 'Water', 'Fire']; a.join[]; // 'Wind,Water,Fire' a.join[', ']; // 'Wind, Water, Fire' a.join[' + ']; // 'Wind + Water + Fire' a.join['']; // 'WindWaterFire'
2. Một ví dụ khác về hàm nối trong javascript
Hãy viết chương trình khi nhấp vào một nút, sau đó chuyển tất cả các phần tử của mảng chủ đề thành một chuỗi, sau đó vào màn hình
Mã CHẠY
Học lập trình miễn phí tại freetuts.net
Try itfunction myFunction[] { var subject = ["PHP", "HTML", "CSS", "JS"]; var x = document.getElementById["demo"]; x.innerHTML = subject.join[]; }
3. So sánh hàm nối với mảng. toString
Cả hai hàm đều là các phương thức của mảng đối tượng, và công cụ chuyển đổi mảng thành chuỗi. Tuy nhiên, họ sẽ có một chút khác biệt như sau
Mục đích của hướng dẫn này là truyền đạt sự hiểu biết vững chắc về quy trình của Node. xử lý HTTP js. Chúng tôi sẽ cho rằng bạn biết, theo nghĩa chung, cách thức hoạt động của các yêu cầu HTTP, bất kể ngôn ngữ hoặc môi trường lập trình. Chúng tôi cũng sẽ giả sử một chút quen thuộc với Node. js
const server = http.createServer[];
server.on['request', [request, response] => {
// the same kind of magic happens here!
}];
7 và const server = http.createServer[];
server.on['request', [request, response] => {
// the same kind of magic happens here!
}];
8. Nếu bạn không hoàn toàn quen thuộc với chúng, bạn nên đọc nhanh tài liệu API cho từng tài liệu đóTạo máy chủ
Bất kỳ ứng dụng máy chủ web nút nào cũng sẽ phải tạo một đối tượng máy chủ web. Điều này được thực hiện bằng cách sử dụng
const server = http.createServer[];
server.on['request', [request, response] => {
// the same kind of magic happens here!
}];
9const http = require['http'];
const server = http.createServer[[request, response] => {
// magic happens here!
}];
Hàm được chuyển đến
const server = http.createServer[];
server.on['request', [request, response] => {
// the same kind of magic happens here!
}];
9 được gọi một lần cho mọi yêu cầu HTTP được thực hiện đối với máy chủ đó, vì vậy, nó được gọi là trình xử lý yêu cầu. Trên thực tế, đối tượng const { method, url } = request;
1 được trả về bởi const server = http.createServer[];
server.on['request', [request, response] => {
// the same kind of magic happens here!
}];
9 là một const { method, url } = request;
3 và những gì chúng ta có ở đây chỉ là cách viết tắt để tạo một đối tượng const { method, url } = request;
4 và sau đó thêm đối tượng nghe vào sauconst server = http.createServer[];
server.on['request', [request, response] => {
// the same kind of magic happens here!
}];
Khi một yêu cầu HTTP đến máy chủ, nút gọi chức năng xử lý yêu cầu với một vài đối tượng tiện dụng để xử lý giao dịch,
const { method, url } = request;
5 và const { method, url } = request;
6. Chúng tôi sẽ đến với những người trong thời gian ngắnĐể thực sự phục vụ các yêu cầu, phương thức
const { method, url } = request;
7 cần được gọi trên đối tượng const { method, url } = request;
4. Trong hầu hết các trường hợp, tất cả những gì bạn cần chuyển đến const { method, url } = request;
7 là số cổng mà bạn muốn máy chủ lắng nghe. Ngoài ra còn có một số tùy chọn khác, vì vậy hãy tham khảo tài liệu tham khảo APIPhương thức, URL và Tiêu đề
Khi xử lý một yêu cầu, điều đầu tiên bạn có thể muốn làm là xem xét phương thức và URL để có thể thực hiện các hành động thích hợp. Nút. js làm cho điều này tương đối dễ dàng bằng cách đặt các thuộc tính tiện dụng vào đối tượng
const { method, url } = request;
5________số 8Đối tượng
5 là một thể hiện củaconst { method, url } = request;
12Học lập trình miễn phí tại freetuts.net
Try it function myFunction[] { var subject = ["PHP", "HTML", "CSS", "JS"]; var x = document.getElementById["demo"]; x.innerHTML = subject.join[]; }
13 ở đây sẽ luôn là một phương thức/động từ HTTP bình thường.Học lập trình miễn phí tại freetuts.net
Try it function myFunction[] { var subject = ["PHP", "HTML", "CSS", "JS"]; var x = document.getElementById["demo"]; x.innerHTML = subject.join[]; }
14 là URL đầy đủ không có máy chủ, giao thức hoặc cổng. Đối với một URL điển hình, điều này có nghĩa là mọi thứ sau và bao gồm dấu gạch chéo thứ ba về phía trướcHọc lập trình miễn phí tại freetuts.net
Try it function myFunction[] { var subject = ["PHP", "HTML", "CSS", "JS"]; var x = document.getElementById["demo"]; x.innerHTML = subject.join[]; }
Tiêu đề cũng không xa. Họ đang ở trong đối tượng của riêng họ trên
const { method, url } = request;
5 được gọi là 16Học lập trình miễn phí tại freetuts.net
Try it function myFunction[] { var subject = ["PHP", "HTML", "CSS", "JS"]; var x = document.getElementById["demo"]; x.innerHTML = subject.join[]; }
1Học lập trình miễn phí tại freetuts.net
Try it function myFunction[] { var subject = ["PHP", "HTML", "CSS", "JS"]; var x = document.getElementById["demo"]; x.innerHTML = subject.join[]; }
Điều quan trọng cần lưu ý ở đây là tất cả các tiêu đề chỉ được thể hiện bằng chữ thường, bất kể khách hàng thực sự đã gửi chúng như thế nào. Điều này đơn giản hóa nhiệm vụ phân tích tiêu đề cho bất kỳ mục đích nào
Nếu một số tiêu đề được lặp lại, thì các giá trị của chúng sẽ bị ghi đè hoặc nối với nhau dưới dạng các chuỗi được phân tách bằng dấu phẩy, tùy thuộc vào tiêu đề. Trong một số trường hợp, điều này có thể gây rắc rối, vì vậy cũng có sẵn
17Học lập trình miễn phí tại freetuts.net
Try it function myFunction[] { var subject = ["PHP", "HTML", "CSS", "JS"]; var x = document.getElementById["demo"]; x.innerHTML = subject.join[]; }
Nội dung yêu cầu
Khi nhận được yêu cầu
18 hoặcHọc lập trình miễn phí tại freetuts.net
Try it function myFunction[] { var subject = ["PHP", "HTML", "CSS", "JS"]; var x = document.getElementById["demo"]; x.innerHTML = subject.join[]; }
19, cơ quan yêu cầu có thể quan trọng đối với ứng dụng của bạn. Lấy dữ liệu cơ thể liên quan nhiều hơn một chút so với truy cập các tiêu đề yêu cầu. Đối tượngHọc lập trình miễn phí tại freetuts.net
Try it function myFunction[] { var subject = ["PHP", "HTML", "CSS", "JS"]; var x = document.getElementById["demo"]; x.innerHTML = subject.join[]; }
const { method, url } = request;
5 được chuyển vào trình xử lý thực hiện giao diện const server = http.createServer[];
server.on['request', [request, response] => {
// the same kind of magic happens here!
}];
11. Luồng này có thể được nghe hoặc chuyển đến nơi khác giống như bất kỳ luồng nào khác. Chúng tôi có thể lấy dữ liệu ngay từ luồng bằng cách lắng nghe các sự kiện ________ 312 và ________ 313 của luồngĐoạn phát ra trong mỗi sự kiện
const server = http.createServer[];
server.on['request', [request, response] => {
// the same kind of magic happens here!
}];
12 là một const server = http.createServer[];
server.on['request', [request, response] => {
// the same kind of magic happens here!
}];
15. Nếu bạn biết đó sẽ là dữ liệu chuỗi, điều tốt nhất nên làm là thu thập dữ liệu trong một mảng, sau đó tại const server = http.createServer[];
server.on['request', [request, response] => {
// the same kind of magic happens here!
}];
13, nối và xâu chuỗi nóconst server = http.createServer[];
server.on['request', [request, response] => {
// the same kind of magic happens here!
}];
1Điều này có vẻ hơi tẻ nhạt, và trong nhiều trường hợp, nó là. May mắn thay, có các mô-đun như
17 vàconst server = http.createServer[]; server.on['request', [request, response] => { // the same kind of magic happens here! }];
18 trênconst server = http.createServer[]; server.on['request', [request, response] => { // the same kind of magic happens here! }];
19 có thể giúp che đi một số logic này. Điều quan trọng là phải hiểu rõ về những gì đang diễn ra trước khi đi vào con đường đó, và đó là lý do tại sao bạn ở đâyconst server = http.createServer[]; server.on['request', [request, response] => { // the same kind of magic happens here! }];
Đôi nét về lỗi
Vì đối tượng
const { method, url } = request;
5 là một const server = http.createServer[];
server.on['request', [request, response] => {
// the same kind of magic happens here!
}];
11, nên nó cũng là một const { method, url } = request;
3 và hoạt động như một đối tượng khi xảy ra lỗiLỗi trong luồng
const { method, url } = request;
5 xuất hiện bằng cách phát ra sự kiện const server = http.createServer[];
server.on['request', [request, response] => {
// the same kind of magic happens here!
}];
54 trên luồng. Nếu bạn không có bộ lắng nghe cho sự kiện đó, lỗi sẽ được đưa ra, điều này có thể làm hỏng Nút của bạn. chương trình js. Do đó, bạn nên thêm trình nghe const server = http.createServer[];
server.on['request', [request, response] => {
// the same kind of magic happens here!
}];
54 vào các luồng yêu cầu của mình, ngay cả khi bạn chỉ đăng nhập và tiếp tục theo cách của mình. [Mặc dù có lẽ tốt nhất là gửi một số loại phản hồi lỗi HTTP. Thêm về điều đó sau. ]const server = http.createServer[];
server.on['request', [request, response] => {
// the same kind of magic happens here!
}];
5Có nhiều cách khác để xử lý các lỗi này, chẳng hạn như các công cụ và công cụ trừu tượng khác, nhưng hãy luôn lưu ý rằng các lỗi có thể xảy ra và bạn sẽ phải xử lý chúng.
Những gì chúng ta đã có cho đến nay
Tại thời điểm này, chúng ta đã hoàn thành việc tạo một máy chủ và lấy phương thức, URL, tiêu đề và nội dung từ các yêu cầu. Khi chúng ta kết hợp tất cả lại với nhau, nó có thể trông giống như thế này
const server = http.createServer[];
server.on['request', [request, response] => {
// the same kind of magic happens here!
}];
8Nếu chúng tôi chạy ví dụ này, chúng tôi sẽ có thể nhận được yêu cầu, nhưng không trả lời chúng. Trên thực tế, nếu bạn nhấn ví dụ này trong trình duyệt web, yêu cầu của bạn sẽ hết thời gian vì không có gì được gửi lại cho khách hàng
Cho đến giờ chúng ta vẫn chưa chạm vào đối tượng
const { method, url } = request;
6, là một thể hiện của ________ 457, là một ________ 458. Nó chứa nhiều phương thức hữu ích để gửi dữ liệu trở lại máy khách. Chúng tôi sẽ đề cập đến điều đó tiếp theoMã trạng thái HTTP
Nếu bạn không cần thiết lập nó, mã trạng thái HTTP trên phản hồi sẽ luôn là 200. Tất nhiên, không phải mọi phản hồi HTTP đều đảm bảo điều này và đến một lúc nào đó, bạn chắc chắn sẽ muốn gửi một mã trạng thái khác. Để làm điều đó, bạn có thể đặt thuộc tính
const server = http.createServer[];
server.on['request', [request, response] => {
// the same kind of magic happens here!
}];
59const server = http.createServer[];
server.on['request', [request, response] => {
// the same kind of magic happens here!
}];
3Có một số lối tắt khác cho điều này, như chúng ta sẽ sớm thấy
Đặt tiêu đề phản hồi
Các tiêu đề được đặt thông qua một phương thức thuận tiện có tên là
const server = http.createServer[];
server.on['request', [request, response] => {
// the same kind of magic happens here!
}];
80const server = http.createServer[];
server.on['request', [request, response] => {
// the same kind of magic happens here!
}];
5Khi đặt tiêu đề trên phản hồi, trường hợp không nhạy cảm với tên của chúng. Nếu bạn đặt tiêu đề nhiều lần, giá trị cuối cùng bạn đặt là giá trị được gửi
Rõ ràng gửi dữ liệu tiêu đề
Các phương pháp đặt tiêu đề và mã trạng thái mà chúng ta đã thảo luận giả định rằng bạn đang sử dụng "tiêu đề ẩn". Điều này có nghĩa là bạn đang trông cậy vào nút gửi tiêu đề cho bạn vào đúng thời điểm trước khi bạn bắt đầu gửi dữ liệu nội dung
Nếu muốn, bạn có thể ghi tiêu đề vào luồng phản hồi một cách rõ ràng. Để làm điều này, có một phương thức gọi là
const server = http.createServer[];
server.on['request', [request, response] => {
// the same kind of magic happens here!
}];
81, viết mã trạng thái và tiêu đề vào luồngconst server = http.createServer[];
server.on['request', [request, response] => {
// the same kind of magic happens here!
}];
7Khi bạn đã đặt tiêu đề [ngầm hoặc rõ ràng], bạn đã sẵn sàng để bắt đầu gửi dữ liệu phản hồi
Gửi nội dung phản hồi
Vì đối tượng
const { method, url } = request;
6 là một const server = http.createServer[];
server.on['request', [request, response] => {
// the same kind of magic happens here!
}];
58, nên việc viết nội dung phản hồi cho khách hàng chỉ là vấn đề sử dụng các phương thức truyền phát thông thườngconst server = http.createServer[];
server.on['request', [request, response] => {
// the same kind of magic happens here!
}];
0Hàm
const server = http.createServer[];
server.on['request', [request, response] => {
// the same kind of magic happens here!
}];
84 trên luồng cũng có thể nhận một số dữ liệu tùy chọn để gửi dưới dạng bit dữ liệu cuối cùng trên luồng, vì vậy chúng tôi có thể đơn giản hóa ví dụ trên như sauconst server = http.createServer[];
server.on['request', [request, response] => {
// the same kind of magic happens here!
}];
1Điều quan trọng là đặt trạng thái và tiêu đề trước khi bạn bắt đầu ghi các khối dữ liệu vào nội dung. Điều này có ý nghĩa, vì các tiêu đề xuất hiện trước phần thân trong các phản hồi HTTP
Một điều nhanh chóng khác về lỗi
Luồng
const { method, url } = request;
6 cũng có thể phát ra các sự kiện const server = http.createServer[];
server.on['request', [request, response] => {
// the same kind of magic happens here!
}];
54 và đến một lúc nào đó bạn cũng sẽ phải xử lý điều đó. Tất cả lời khuyên về lỗi phát trực tuyến const { method, url } = request;
5 vẫn được áp dụng tại đâyĐặt nó tất cả cùng nhau
Bây giờ chúng ta đã học về cách tạo phản hồi HTTP, hãy kết hợp tất cả lại với nhau. Dựa trên ví dụ trước đó, chúng tôi sẽ tạo một máy chủ gửi lại tất cả dữ liệu mà người dùng đã gửi cho chúng tôi. Chúng tôi sẽ định dạng dữ liệu đó dưới dạng JSON bằng cách sử dụng
const server = http.createServer[];
server.on['request', [request, response] => {
// the same kind of magic happens here!
}];
88const server = http.createServer[];
server.on['request', [request, response] => {
// the same kind of magic happens here!
}];
2Ví dụ máy chủ Echo
Hãy đơn giản hóa ví dụ trước để tạo một máy chủ echo đơn giản, chỉ gửi bất kỳ dữ liệu nào nhận được trong yêu cầu ngay trong phản hồi. Tất cả những gì chúng ta cần làm là lấy dữ liệu từ luồng yêu cầu và ghi dữ liệu đó vào luồng phản hồi, tương tự như những gì chúng ta đã làm trước đây
const server = http.createServer[];
server.on['request', [request, response] => {
// the same kind of magic happens here!
}];
3Bây giờ hãy tinh chỉnh cái này. Chúng tôi chỉ muốn gửi một tiếng vang trong các điều kiện sau
- Phương thức yêu cầu là POST
- URL là
89const server = http.createServer[]; server.on['request', [request, response] => { // the same kind of magic happens here! }];
Trong bất kỳ trường hợp nào khác, chúng tôi chỉ muốn trả lời bằng 404
const server = http.createServer[];
server.on['request', [request, response] => {
// the same kind of magic happens here!
}];
4Bằng cách kiểm tra URL theo cách này, chúng tôi đang thực hiện một hình thức "định tuyến". Các hình thức định tuyến khác có thể đơn giản như câu lệnh
30 hoặc phức tạp như toàn bộ khung nhưconst server = http.createServer[]; server.on['request', [request, response] => { // the same kind of magic happens here! }];
31. Nếu bạn đang tìm kiếm thứ gì đó định tuyến và không có gì khác, hãy thửconst server = http.createServer[]; server.on['request', [request, response] => { // the same kind of magic happens here! }];
32const server = http.createServer[]; server.on['request', [request, response] => { // the same kind of magic happens here! }];
Tuyệt quá. Bây giờ chúng ta hãy cố gắng đơn giản hóa điều này. Hãy nhớ rằng, đối tượng
const { method, url } = request;
5 là một const server = http.createServer[];
server.on['request', [request, response] => {
// the same kind of magic happens here!
}];
11 và đối tượng const { method, url } = request;
6 là một const server = http.createServer[];
server.on['request', [request, response] => {
// the same kind of magic happens here!
}];
58. Điều đó có nghĩa là chúng ta có thể sử dụng const server = http.createServer[];
server.on['request', [request, response] => {
// the same kind of magic happens here!
}];
37 để chuyển dữ liệu từ cái này sang cái khác. Đó chính xác là những gì chúng tôi muốn cho một máy chủ tiếng vangconst server = http.createServer[];
server.on['request', [request, response] => {
// the same kind of magic happens here!
}];
5suối Yay
Mặc dù vậy, chúng tôi vẫn chưa hoàn thành. Như đã đề cập nhiều lần trong hướng dẫn này, lỗi có thể xảy ra và chúng ta cần xử lý chúng
Để xử lý lỗi trên luồng yêu cầu, chúng tôi sẽ ghi lỗi vào
const server = http.createServer[];
server.on['request', [request, response] => {
// the same kind of magic happens here!
}];
38 và gửi mã trạng thái 400 để biểu thị const server = http.createServer[];
server.on['request', [request, response] => {
// the same kind of magic happens here!
}];
39. Tuy nhiên, trong một ứng dụng trong thế giới thực, chúng tôi muốn kiểm tra lỗi để tìm ra mã trạng thái và thông báo chính xác sẽ là gì. Như thường lệ với lỗi, bạn nên tham khảo tài liệu const server = http.createServer[];
server.on['request', [request, response] => {
// the same kind of magic happens here!
}];
50Về phản hồi, chúng tôi sẽ chỉ ghi lỗi vào
const server = http.createServer[];
server.on['request', [request, response] => {
// the same kind of magic happens here!
}];
38const server = http.createServer[];
server.on['request', [request, response] => {
// the same kind of magic happens here!
}];
6Bây giờ chúng tôi đã đề cập đến hầu hết các khái niệm cơ bản về xử lý các yêu cầu HTTP. Tại thời điểm này, bạn sẽ có thể
- Khởi tạo một máy chủ HTTP với chức năng xử lý yêu cầu và yêu cầu nó lắng nghe trên một cổng
- Nhận tiêu đề, URL, phương thức và dữ liệu nội dung từ các đối tượng
5const { method, url } = request;
- Đưa ra quyết định định tuyến dựa trên URL và/hoặc dữ liệu khác trong đối tượng
5const { method, url } = request;
- Gửi tiêu đề, mã trạng thái HTTP và dữ liệu nội dung qua đối tượng
6const { method, url } = request;
- Dữ liệu đường ống từ đối tượng
5 và đối tượngconst { method, url } = request;
6const { method, url } = request;
- Xử lý lỗi luồng trong cả luồng
5 vàconst { method, url } = request;
6const { method, url } = request;
Từ những điều cơ bản này, Node. máy chủ HTTP js cho nhiều trường hợp sử dụng điển hình có thể được xây dựng. Có rất nhiều thứ khác mà các API này cung cấp, vì vậy hãy nhớ đọc qua các tài liệu API cho
const server = http.createServer[];
server.on['request', [request, response] => {
// the same kind of magic happens here!
}];
7, const server = http.createServer[];
server.on['request', [request, response] => {
// the same kind of magic happens here!
}];
8 và const server = http.createServer[];
server.on['request', [request, response] => {
// the same kind of magic happens here!
}];
71