2011-07-26 36 views
84

Tôi đã tìm kiếm một chút nhưng không thể tìm thấy công cụ hiện có cho việc này.Đóng gói ứng dụng web node.js làm ứng dụng dành cho máy tính để bàn thông thường

Tôi có một máy chủ web node.js được thiết kế để chạy trên máy tính của riêng bạn, thực hiện một số điều phù hợp với bạn. Nó sẽ là khá aswesome nếu tôi có thể nhấp đúp chuột MySnazzyThing.app thay vì cài đặt nodejs, và npm và chạy node mysnazzyapp.js trên dòng lệnh.

Thực thi .app sẽ tăng tốc lên máy chủ nút và mở cửa sổ webkit bản địa đơn giản sẽ hiển thị thông thường trên localhost:3000 nếu tôi đang chạy trên dòng lệnh.

Ứng dụng gốc này sau đó có thể được phân phối qua cửa hàng ứng dụng mac. Và bam, một ứng dụng máy tính để bàn node.js.

Có công cụ nào tồn tại không? Hoặc là có bất kỳ lý do kỹ thuật mà điều này sẽ không làm việc như tôi tưởng tượng nó?

Trả lời

21

Bạn có thể thực hiện điều này bằng AppJS: https://github.com/appjs/appjs

+5

trang splash cho dự án AppJS hiện trỏ đến bàn làm việc: https://github.com/sihorton/appjs-deskshell/ – yzorg

+2

Như câu trả lời của @ Tracker1 cho thấy, deskshell hiện là dự án cũ và chưa được phát triển kể từ tháng 12 năm 2013 – cmroanirgo

-4

Bạn không thể làm điều này với tập lệnh bash? Tôi không biết đủ để cung cấp chi tiết, nhưng đó có lẽ là cách để đi.

+3

Vấn đề ở đây là để gói lên máy chủ web và giao diện người dùng riêng của mình vào một ứng dụng độc lập mà không phải thực hiện thậm chí chạy trong trình duyệt của bạn nhưng đó là cửa sổ ứng dụng riêng. Một kịch bản bash sẽ chỉ cho tôi một macro để chạy máy chủ sau đó mở trình duyệt của tôi đến cổng của nó, nhưng đó không phải là điều tương tự cả. –

8

Tôi đề nghị xem xét Topcube, mục tiêu của nó là "Cung cấp cho các nhà phát triển nút một cách để có GUI trên máy tính để bàn cho các máy chủ nút của họ sử dụng HTML5 + CSS3 làm nền tảng GUI." Topcube at github.

+1

Topcube dường như không được hỗ trợ lâu hơn nữa – Shamoon

+0

Có, tôi khuyên bạn nên xem xét Titanium. Nó không phải là Node.js mà là nền tảng JS và nền tảng cho PC và phát triển ứng dụng di động. http://www.appcelerator.com/products/titanium-cross-platform-application-development/ –

+0

Liên kết Titan đó đã bị mục nát. Tôi cho rằng điều này là những gì bạn đang đề cập đến: http://docs.appcelerator.com/titanium/2.0/index.html Trang web tiếp thị mờ đục của họ chắc chắn làm cho việc xem sản phẩm của họ là gì hoặc chăm sóc . – Grumdrig

-1

Hiện tại có rất nhiều cách để thực hiện việc này.

Người chiến thắng rõ ràng trong không gian đóng gói một ứng dụng + nút + html5, hiện là Electron (được sử dụng bởi Atom, VSCode, Slack, Discord, v.v.).

Bạn cũng có thể sử dụng bất kỳ ngôn ngữ nào được đóng gói dưới dạng ứng dụng (sử dụng công cụ cho các ngôn ngữ/ngăn xếp) và kiểm tra cài đặt nút, khởi chạy tập lệnh "máy chủ" với nút, sau đó khởi chạy trình duyệt mặc định (hoặc một số trang web) xem thành phần, bằng một số phương tiện khác), cuối cùng đã đặt vị trí thành dịch vụ nút. Đây là một trọng lượng rất nhẹ và phương pháp hiệu quả, tuy nhiên không được tích hợp tốt với hệ điều hành như một giải pháp như Electron.

Đối thủ cạnh tranh chính với Electron ở đây là NW.js. Theo như tôi có thể nói, tính năng chính mà NW.js có mà Electron không (chưa) là biên dịch/obfuscation. Trong khi Electron giúp cập nhật tự động dễ dàng.

https://electron.atom.io/ https://nwjs.io/

+2

Điều này có thể bây giờ bằng cách http://appjs.org –

89

Lựa chọn 1: electron (aka nguyên tử vỏ)

Đây là vỏ mà biên tập viên Atom github của sử dụng. Nó rất giống với node-webkit, mặc dù nó sẽ chạy kịch bản đầu tiên, và bạn phải tạo một khung nhìn/cửa sổ cho người dùng. Có một số khác biệt nhỏ khác, nhưng nó đáng xem.


Phương án 2: NW.js trước đây là nút-webkit

Các ý chính là nó về cơ bản mở rộng cơ JS để bạn có thể viết một ứng dụng dựa trên web hỗ trợ mô hình đối tượng mở rộng nút, và các module ... bạn sau đó gói package.json của bạn start.html mô-đun và các tệp js vào một zip (với phần mở rộng .nw) và chạy nó với nw (.exe) .. có các cửa sổ, mac và linux xây dựng có sẵn.


Lựa chọn 3: Thrust (Node Adapter)

Đây là một thực sự mất liên kết xung quanh webkit/chrome với một kênh ipc đến một ứng dụng ra mắt. Bạn có thể sử dụng kênh tin nhắn hoặc bạn có thể viết ứng dụng của mình dưới dạng ứng dụng phía máy chủ truyền thống hơn trong nút và điều khiển khởi chạy cửa sổ. Mà có thể bộ bạn tốt.

Lực đẩy có liên kết cho nhiều ngôn ngữ. Tôi đặt điều này trước MacGapNode chỉ vì tôi ưu tiên các tùy chọn đa nền tảng trước tiên.


Lựa chọn 4: MacGapNode (OSX Only)

MacGap với Node hội nhập (Có vẻ như nhận được cũ)


Ngoài: Dịch vụ ...

Tôi có thể' t nói cho OSX trên này như là một .App, nhưng nó cũng có thể có thể tạo một dịch vụ nền cài đặt trong NodeJS và một liên kết đến một "địa phương" trang web trên máy tính để bàn. Hầu hết các trình duyệt có một tùy chọn để không hiển thị tất cả các tính năng (tôi biết firefox nói riêng).

Tôi biết câu hỏi của bạn dành riêng cho OSX, nhưng trong cửa sổ bạn có thể sử dụng NSSM để chạy bất kỳ dịch vụ nào và tôi đã sử dụng nó cho các dịch vụ dựa trên NodeJS trong cửa sổ. Tôi nghĩ rằng một số các tùy chọn khác ở trên là tốt hơn tùy thuộc vào nhu cầu của bạn mặc dù.


Removed:

  • nexe - cũ/unmaintained
  • AppJS - thay thế bằng DeskShell
  • DeskShell - cũ, trang web ẩn
  • node-webkit -được đổi tên thành NW.js
  • XULRunner dự án bị trì hoãn và vượt quá phía sau.

Câu trả lời này được sao chép cho nhiều câu hỏi, những tài liệu tham khảo chủ yếu là để cập nhật thuận tiện.

+0

Dành cho OSX và Linux https://github.com/crcn/nexe cũng trông giống như một giải pháp. – robocat

+0

Dường như nút-webkit là người chiến thắng trong số này. Cơ sở phát triển lớn, tài liệu tốt, được hỗ trợ bởi Intel. – Dan

+0

gerty, cảm ơn ... Tôi đã cập nhật câu trả lời của tôi để bao gồm nexe, cũng như làm node-webkit vị trí hàng đầu ... trông giống như appjs có thể nhận được một chút cũ. – Tracker1

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