2012-06-12 42 views
15

Tôi muốn xây dựng một giao diện cho một loạt các lệnh thiết bị đầu cuối mà các nhà phát triển của chúng tôi sử dụng để quản lý môi trường phát triển của họ. Tôi muốn cố gắng xây dựng nó trong node.js.Đóng gói ứng dụng Node.js làm ứng dụng osx

Bây giờ, tôi nghĩ tôi có thể tạo nó dưới dạng ứng dụng HTML5/CSS3/JS sử dụng Express, v.v ... và sau đó muốn đóng gói nó dưới dạng ứng dụng gốc OSX. Có nghĩa là, một ứng dụng mà tôi có thể gửi cho họ, họ nhấp đúp vào và chạy nhưng khởi chạy trình duyệt Chrome và điều hướng đến máy chủ cục bộ: máy chủ cổng truy cập tập lệnh hoặc chỉ cần khởi động máy chủ và hướng dẫn người dùng truy cập url . Dù bằng cách nào là tốt.

Tôi đang làm điều này vì tôi cần truy cập vào hệ thống cục bộ để có thể định cấu hình một số thứ và tương tác với bất kỳ số nào đang chạy (máy ảo không có đầu). Vì vậy, tôi không thể chỉ đơn giản là phục vụ điều này từ một máy chủ và có họ truy cập vào trang web.

Bất kỳ ý tưởng nào?

Cảm ơn bạn,

Luis

+0

Liệu điều này thực sự phải là một gói .app? Nếu không, nó có thể đơn giản hơn để tạo một kịch bản lệnh shell thực hiện tất cả các công cụ khởi chạy, và chỉ cần gọi MyApp.command và đóng gói nó cùng với một nút cục bộ của nút và nguồn của bạn bên trong một tệp zip hoặc dmg hoặc bất kỳ thứ gì. Nếu nó cần phải là một .app, các giải pháp đơn giản nhất sẽ liên quan đến việc chỉ trực tiếp khởi chạy kịch bản JS, vì vậy bạn sẽ phải viết mã js để khởi chạy trình duyệt cho người dùng (không phải là khó). Nếu nó cần phải là một .app và bạn không thể sửa đổi JS, thì bạn sẽ cần phải tạo một wrapper .app tùy chỉnh. Vậy, bạn muốn gì? – abarnert

+1

PS, không có (chưa) một node.js tương đương với py2app, vv, điều đó sẽ làm cho giải pháp trung gian thực sự dễ dàng. Từ những gì tôi hiểu, http://appjs.org/ là tùy chọn hứa hẹn nhất tại thời điểm này, nhưng bản phát hành hiện tại không hoạt động trên Mac ... vì vậy bạn sẽ vẫn phải làm rất nhiều việc ngay cả khi bạn đi với lý thuyết "dễ dàng". – abarnert

+0

PPS, cũng xem https://groups.google.com/group/nodejs/browse_thread/thread/f90b3f1c747d20b3 (mặc dù đó là nhiều hơn về việc đóng gói GUI WebKit vào ứng dụng, thay vì khởi chạy trình duyệt mặc định của người dùng). – abarnert

Trả lời

2

Nếu bạn biên dịch node.js từ nguồn mỗi JavaScript tập tin từ các nút lib thư mục sẽ được đưa vào nhị phân. Cách đó cũng có thể đóng gói mã của bạn vào nhị phân.

Tôi không quen với cách các gói Mac OSX được tạo, nhưng cuối cùng nó không có vẻ là very hard. Chỉ cần gói nhị phân nút tùy chỉnh của bạn thành một.

3

Check-out AppJS: http://appjs.com/ - "Xây dựng ứng dụng Desktop dành cho Linux, Windows và Mac sử dụng HTML, CSS và Javascript"

Âm thanh như một trận đấu tốt :)

+3

Mỗi https://twitter.com/appjs/status/394911856910823424 - appjs được thay thế bởi https://github.com/rogerwang/node-webkit –

7

Tùy chọn 1: electron (còn gọi là vỏ nguyên tử)

Đây là trình bao mà trình soạn thảo Atom của github 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.

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