2009-03-27 25 views
26

Việc sử dụng javascript phía máy chủ có phổ biến không? Tại sao một người sử dụng nó như trái ngược với bất kỳ kịch bản phía máy chủ nào khác? Có một trường hợp sử dụng cụ thể nào làm cho nó tốt hơn các ngôn ngữ phía máy chủ khác không?Máy chủ bên Javascript: Tại sao?

Ngoài ra, hãy nhầm lẫn về cách bắt đầu thử nghiệm với nó, tôi đang sử dụng FreeBSD, tôi cần cài đặt gì để chạy javascript phía máy chủ?

Trả lời

43

Nó đi như thế này:

Servers là đắt tiền, nhưng người dùng sẽ cung cấp cho bạn thời gian xử lý trong trình duyệt của họ miễn phí. Do đó, mã phía máy chủ tương đối đắt so với mã phía máy khách trên bất kỳ trang web nào đủ lớn để cần chạy nhiều máy chủ. Tuy nhiên, có một số điều bạn không thể để lại cho khách hàng, như xác thực dữ liệu và truy xuất. Bạn muốn thực hiện chúng trên máy khách, vì nó có nghĩa là thời gian phản hồi nhanh hơn cho người dùng và cơ sở hạ tầng máy chủ ít hơn cho chính bạn, nhưng mối quan tâm về bảo mật và khả năng truy cập có nghĩa là mã phía máy chủ là bắt buộc.

Điều thường xảy ra là bạn làm cả hai. Bạn viết logic phía máy chủ bởi vì bạn phải, nhưng bạn cũng viết cùng một logic trong javascript với hy vọng cung cấp phản hồi nhanh hơn cho người dùng và lưu máy chủ của bạn thêm một chút công việc trong một số trường hợp. Điều này đặc biệt hiệu quả đối với mã xác nhận.

Vì tất cả chúng ta (chủ yếu là) các lập trình viên ở đây nên ngay lập tức phát hiện ra vấn đề mới. Không chỉ có thêm công việc liên quan đến việc phát triển hai bộ logic giống nhau, mà còn cả công việc liên quan đến việc duy trì nó, các lỗi không thể tránh khỏi phát sinh từ các nền tảng không phù hợp, và các lỗi được giới thiệu khi triển khai trôi dạt theo thời gian.

Nhập javascript phía máy chủ. Ý tưởng là bạn có thể viết mã một lần, vì vậy cùng một mã chạy trên cả máy chủ và máy khách. Điều này sẽ xuất hiện để giải quyết hầu hết vấn đề: bạn nhận được toàn bộ logic máy chủ và máy khách được thực hiện cùng một lúc, không có trôi dạt và không có bảo trì kép. Nó cũng tốt đẹp khi các nhà phát triển của bạn chỉ cần biết một ngôn ngữ cho cả máy chủ và công việc của khách hàng.

Thật không may, trong thế giới thực nó không hoạt động tốt như vậy. Vấn đề là bốn lần:

  1. Chế độ xem máy chủ của trang vẫn rất khác với chế độ xem khách hàng của trang. Máy chủ cần có khả năng thực hiện những việc như nói chuyện trực tiếp với cơ sở dữ liệu mà không nên thực hiện từ trình duyệt. Trình duyệt cần thực hiện các thao tác như thao tác một DOM không khớp với máy chủ.
  2. Bạn không kiểm soát công cụ javascript của khách hàng, có nghĩa là vẫn sẽ có những khác biệt ngôn ngữ quan trọng giữa mã máy chủ và mã máy khách của bạn.
  3. Cơ sở dữ liệu thường là một nút cổ chai lớn hơn so với máy chủ web, do đó tiết kiệm được tối thiểu.
  4. Trong khi hầu như mọi người đều biết một chút javascript, không nhiều nhà phát triển thực sự biết và hiểu javascript cũng.

Đây không phải là vấn đề kỹ thuật hoàn toàn không thể thực hiện được: bạn hạn chế ngôn ngữ được máy chủ hỗ trợ cho một tập con javascript được hỗ trợ tốt trên hầu hết các trình duyệt, cung cấp IDE biết tập hợp con này và phần mở rộng phía máy chủ thực hiện một số quy tắc về cấu trúc trang để giảm thiểu các vấn đề DOM, và cung cấp một số javascript tấm nồi hơi để đưa vào máy khách để làm nền tảng đẹp hơn một chút để sử dụng. Kết quả là một cái gì đó giống như Aptana Studio/Jaxer, hoặc gần đây hơn Node.js, có thể khá đẹp.

Nhưng không hoàn hảo. Theo tôi, chỉ có quá nhiều cạm bẫy và các vấn đề tương thích nhỏ để làm cho điều này thực sự tỏa sáng. Cuối cùng, các máy chủ bổ sung vẫn rẻ so với thời gian của nhà phát triển và hầu hết các lập trình viên có thể làm việc hiệu quả hơn bằng cách sử dụng một cái gì đó khác với javascript.

Điều tôi thực sự muốn thấy là một phần phía máy chủ javascript. Khi trang được yêu cầu hoặc biểu mẫu đã gửi nền tảng máy chủ, hãy thực hiện yêu cầu xác thực trong javascript, có thể là plugin cho máy chủ web hoàn toàn độc lập với phần còn lại của nó, nhưng phản hồi được tạo bằng nền tảng bạn chọn .

+8

Thật tuyệt vời! Tốc độ đánh máy! –

+0

Không có cách nào bạn chỉ cần gõ rằng ...: p –

+5

:) Thời gian _last_ ai đó hỏi một câu hỏi như thế này nó đã được đóng cửa ngay trước khi tôi có thể nhấn gửi. Tôi đã có đủ công việc trong bài đăng, tôi quyết định lưu nó. –

6

Tôi nghĩ rằng việc sử dụng Javascript phía máy chủ thực sự thú vị không được sử dụng gần như đủ thường là để xác thực dữ liệu. Với nó, bạn có thể viết một tệp javascript để xác thực biểu mẫu, kiểm tra nó ở phía máy khách, sau đó kiểm tra lại ở phía máy chủ vì chúng ta không nên tin tưởng bất cứ điều gì ở phía máy khách. Nó cho phép bạn giữ các quy tắc xác nhận của bạn DRY. Khá tiện dụng.

Xem thêm:

+0

+1: Bạn biết đấy, tôi chưa bao giờ nghĩ mình có thể bỏ phiếu cho bất kỳ thứ gì có lợi cho javascript phía máy chủ, nhưng câu trả lời của bạn là thực phẩm tốt cho suy nghĩ! –

3

Javascript chỉ là một ngôn ngữ. Bởi vì nó chỉ là một ngôn ngữ, bạn có thể sử dụng nó bất cứ nơi nào bạn muốn ... trong trình duyệt của bạn, trên máy chủ, được nhúng trong các ứng dụng khác, các ứng dụng độc lập, v.v.

Điều đó đang được nói, tôi không biết rằng có rất nhiều sự phát triển mới xảy ra với "Javascript phía máy chủ"

3

Javascript là một ngôn ngữ hoàn hảo với cơ sở kiểu nguyên mẫu tự/lược đồ và cú pháp kiểu C. Có một số vấn đề, hãy xem Javascript các phần tốt, nhưng nói chung nó là một ngôn ngữ tỷ lệ đầu tiên. Vấn đề là hầu hết các lập trình viên javascript là những lập trình viên kinh khủng bởi vì nó rất dễ bắt đầu.

Một nhóm tại google xây dựng Rhino on Rails, một khung MVC như Ruby on Rails được viết bằng javascript và chạy trên Rhino một trình thông dịch javascript cho máy ảo Java. Trong trường hợp này, họ có yêu cầu sử dụng máy ảo Java, nhưng muốn có được một ngôn ngữ nhanh (javascript nhanh), hỗ trợ gõ vịt và linh hoạt.

Ví dụ khác là một cái gì đó giống như CouchDB, một cơ sở dữ liệu hướng tài liệu sử dụng json vì nó là định dạng truyền tải và javascript vì đó là truy vấn & ngôn ngữ lập chỉ mục. Họ muốn cơ sở dữ liệu trở thành người bản xứ nhất có thể.

Javascript là tốt tại chuỗi và dom (xml) thao tác, được sandboxed, mạng, mở rộng chính nó, vv ... Những loại tính năng là điều bạn thường làm khi phát triển các ứng dụng web.

Tất cả những gì đã nói, tôi không thực sự phát triển javascript phía máy chủ. Nó không phải là một ý tưởng tồi, nhưng chắc chắn ít phổ biến hơn.

1

Chúng tôi sử dụng javascript trên máy khách vì nó ở đó, không phải vì từ danh sách ngôn ngữ mà chúng tôi đã chọn. Tôi sẽ không chọn nó cho bất kỳ việc vặt nào trên máy chủ.

Bạn có thể chạy bất kỳ ngôn ngữ nào bạn thích trên máy chủ, trên thực tế, bao nhiêu tùy thích.

javascript là đáng tin cậy và dễ sử dụng, nhưng nó chỉ là quá nhiều lao động cho các tác vụ phổ biến trên máy chủ.

Các vấn đề liên quan