Sự khác biệt về chức năng giữa NW.js, Brackets-Shell và Electron là gì?


151

Bây giờ TideSDK đã chết một cách hiệu quả, tôi đã xem xét các 'trình bao bọc' thay thế để chạy các ứng dụng HTML / CSS / JS dưới dạng các ứng dụng máy tính để bàn độc lập. Ba tùy chọn khả thi mà tôi đã chạy qua cho đến nay, đó là NW.js (trước đây là nút-webkit), ngoặc-shellElectron (trước đây là vỏ nguyên tử).

Vấn đề là dường như không có sự so sánh đầy đủ giữa ba yếu tố về bộ tính năng, tính tương thích, v.v. Tôi hy vọng sẽ biến điều này thành một chủ đề kinh điển hơn hoặc ít hơn về sự khác biệt (khách quan) giữa ba, đặc biệt liên quan đến:

  • Hỗ trợ nền tảng ; hệ điều hành, phụ thuộc, vv
  • Hỗ trợ tính năng ngôn ngữ , liên quan đến HTML5, CSS3 và JavaScript. Hãy nghĩ những điều như "video HTML5 có hoạt động không và nếu có, codec nào có sẵn?"
  • Các tính năng bổ sung không chuẩn , chẳng hạn như biểu tượng khay, thông báo bật lên và thanh trình đơn được hệ điều hành kết xuất.
  • Khả năng mở rộng ; ví dụ. khả năng 'cắm' mã gốc, nói chuyện với Node.js, v.v.
  • Kiến trúc ; đặc biệt là sự khác biệt về kiến ​​trúc ảnh hưởng đến việc sử dụng hàng ngày như một nhà phát triển.
  • Gỡ lỗi ; bao gồm các công cụ phát triển, khả năng tương thích với các công cụ thường được sử dụng như node-inspector, v.v.
  • ... và như thế.

Mục tiêu, sự khác biệt kỹ thuật quan trọng khi đưa ra lựa chọn giữa họ với tư cách là nhà phát triển ứng dụng là gì?


Bạn đã có may mắn nhìn vào sự khác biệt trong khi chờ đợi? Có thể thực hiện một số hoạt động đào vào cuối tuần này
stefan

@stefan Chưa, không: / Tôi đã thử nghiệm một chút với nút-webkit theo nghĩa thực tế, nhưng vẫn chưa vượt qua điều đó. Không phải
loay hoay

3
Chà, đây là sự khác biệt chính giữa nút-webkit và vỏ nguyên tử được phác thảo bởi nhóm vỏ nguyên tử, github.com/atom/atom-shell/blob/master/docs/development/ canh .
ngăn cách

2
Làm thế nào về con voi trong phòng: Gỡ lỗi. Tôi đã sử dụng nw.js và thấy rằng việc gỡ lỗi khá thiếu khi sử dụng nền tảng linux để phát triển. Để phát triển các ứng dụng lớn, gỡ lỗi là một tính năng quan trọng IMO. Chúng ta có thể thêm gỡ lỗi vào danh sách các tính năng mong muốn để nói chuyện không?
Timothy C. Quinn

@JavaScriptDude Cảm ơn, tôi đã thêm nó vào danh sách.
Sven Slootweg

Câu trả lời:


42

Tôi đã thực hiện nghiên cứu tương tự khoảng hai tháng trước, và cuối cùng tôi đã đi với nút-webkit. Ưu điểm lớn nhất trên nút-webkit là node.js và npm. Việc quản lý gói của npm thực sự tốt và nút đã thực hiện tốt việc truy cập hệ thống tệp.

Brackets-shell trông thú vị, nhưng khác với một IDE đẹp, tôi không thực sự hiểu cái gì làm cho cái này tốt hơn hay tốt hơn cái còn lại. Họ rất rõ ràng rằng "Vỏ khung chỉ được duy trì để sử dụng bởi dự án Brackets", tiếng hét đó chạy đến chỗ tôi.

https://github.com/adobe/brackets-shell#overview

Atom-shell dường như hoạt động gần đây, nhưng có vẻ giống như dấu ngoặc ở chỗ chúng thực sự đang viết và trình soạn thảo / IDE chỉ tình cờ được gắn vào thời gian chạy webkit. Nó cũng được xây dựng trên đỉnh của node.js. Điều này có nhược điểm là khó tìm kiếm các công cụ trực tuyến mà không bị nhắc nhở về hóa học trung học của bạn.

Tôi thực sự không muốn một biên tập viên mới, và hầu hết các lập trình viên đều có sở thích của họ. Đối với việc phát triển ứng dụng thực tế, chúng hoạt động khá giống nhau, và vì vậy, tất cả đều sử dụng webkit. Về cơ bản, bạn viết 90-95% trong số đó giống như một trang web, sau đó xử lý các phần gốc và một số cấu hình.

Những điều này đúng với cả ba nền tảng này - chạy trên Windows, Mac và hỗ trợ ngôn ngữ Linux - HTML5, CSS3 và Javascript: vì chúng chạy javascript, bạn có thể tải xuống và chạy gần như mọi thư viện / khung mà bạn muốn.

Sự cảnh báo lớn trên webkit là hỗ trợ codec. Thông thường, bạn sẽ gặp vấn đề với codec video không miễn phí, trừ khi bạn xây dựng lại dll / so để hỗ trợ chúng. Ví dụ: bộ nút mạng được vận chuyển sẽ không phát video mp4.


Bạn có thể giải thích liệu có bất kỳ sự khác biệt nào liên quan đến phát lại MP4 trong ngoặc-shell và shell-shell không? Không rõ câu trả lời của bạn cho dù đây là một sự giải quyết trong hầu hết các bản phân phối WebKit, hay chỉ trong bộ nút web.
Sven Slootweg

Phát lại MP4 là một vấn đề là một vấn đề webkit. Bạn phải nhớ rằng webkit thực sự là crom, và trừ khi công nghệ AV mở và miễn phí, họ không hỗ trợ nó ra khỏi hộp. Câu trả lời tiêu chuẩn là thay thế / xây dựng lại ffmpegsumo. Thay thế nó bằng một từ cài đặt Chrome hiện tại của bạn có vẻ hoạt động khá tốt.
John W. Clark

1
Tình cờ là Brackets được xây dựng bracket-shellvà Atom được xây dựng atom-shell, nhưng bạn có thể sử dụng bất kỳ trình soạn thảo hoặc IDE nào để tạo mã với chúng. Tôi nghĩ những gì OP muốn là nhiều hơn về sự khác biệt kỹ thuật giữa 3. Thật tuyệt vời khi thấy một cái gì đó giống như TodoMVC trên 3 môi trường giống như thời gian chạy.
Ehtesh Choudhury

@SvenSlootweg hỗ trợ codec liên quan nhiều hơn đến các thư viện được sử dụng với bộ webkit bạn đang sử dụng. Cả ba đều sử dụng Chromium làm cơ sở webkit, vì vậy tất cả chúng đều có cùng các vấn đề về codec và chúng có thể được giải quyết theo cùng một cách.
John W. Clark


40

Tôi đã chơi với Atom-Shell trong vài ngày qua và tôi rất thích nó cho đến nay.

Phần tốt nhất về nó là nó được hỗ trợ bởi GitHub .. sẽ cho phép bạn ổn định lâu dài trong nền tảng, đặc biệt là nếu nó đạt được số lượng lớn. Điều đó cũng được thực hiện nhờ các cải tiến trực tiếp của Node.js nhờ hợp đồng với StrongLoop , người đóng góp chính cho Node.js (họ tuyên bố sử dụng nhiều nhà phát triển cốt lõi của Node.js hơn bất kỳ công ty nào khác, kể cả Joyent).

Tôi cũng thấy khá thoải mái khi bắt đầu. Tôi mất khoảng một ngày để tìm hiểu cấu trúc và có được bằng chứng đầu tiên về khái niệm đang chạy. Rất tuyệt.


Điểm đạn:

  • Hỗ trợ nền tảng: Windows, Linux, Mac OSX ( Thông tin thêm tại đây )
  • Hỗ trợ tính năng ngôn ngữ: HTML5, CSS3, JS thông qua Chromium - cho đến nay, không có vấn đề gì, nhưng tôi chưa kiểm tra video cụ thể.
  • Các tính năng gốc: Menu ứng dụng gốc, Hỗ trợ khay tác vụ, Phím nóng toàn cầu, Hỗ trợ xử lý giao thức (mà tôi đã thấy cho đến nay)
  • Khả năng mở rộng: Tích hợp Node.js tuyệt vời, cả máy khách và máy chủ đều có thể "yêu cầu" các mô-đun và bản địa của Node.js. Tôi cũng đã thử nghiệm thành công các thư viện Bower (bao gồm jQuery) mà không gặp vấn đề gì.
  • Kiến trúc: Bao quát ở những điểm khác, nhưng nói chung nó rất trơn tru.

Cập nhật (25/11/14): Tôi chưa tìm thấy trường hợp sử dụng cho Atom-Shell ở bất kỳ khả năng chính thức nào, nhưng tôi đã sử dụng nó để xây dựng một vài ứng dụng nhỏ cho mục đích sử dụng của riêng tôi, phức tạp nhất là một ứng dụng kéo thời gian của tôi đăng nhập từ phần mềm PM của tôi và tạo hóa đơn Paypal.

Ý kiến ​​của tôi về nền tảng vẫn tích cực. Nó thật tuyệt vời.

Trong ứng dụng lập hóa đơn thời gian của mình, tôi đã mang thành công Mẫu ví dụ bảng điều khiển của Bootstrap 3 và một vài mô-đun nút (bluebird, Paypal SDK, Teamwork PM Client) để tạo một ứng dụng phức tạp nhẹ. Tôi phải mất vài ngày và làm tốt công việc của mình.

Tôi thực sự không thể nghĩ ra bất cứ điều gì tiêu cực để nói về Atom-Shell, nó chắc chắn, ổn định, nhanh chóng và dễ mã hóa. Tôi hi vọng điêu nay se giup được ai đo.


Bạn có thể nói rõ hơn về sự khác biệt với nút-webkit nói riêng không? Theo như tôi có thể nói, tất cả (hầu hết?) Những điểm này cũng được cung cấp bởi nút-webkit, nhưng tôi không chắc liệu có thể thiếu thứ gì không.
Sven Slootweg

hi luke có thể tự cập nhật ứng dụng shell nguyên tử không ...?
Munish Kapoor

@SvenSlootweg Xin lỗi tôi đã bỏ lỡ nhận xét của bạn từ vài tháng trước; Thật không may, tôi không rành về nút-webkit và không thể so sánh hai cái một cách hiệu quả. Nhưng tôi đã đọc bài viết này về StrongLoop , trong đó ít nhất chỉ ra rằng Atom-Shell đã đột phá. : \
Luke Chavers

@MunishKapoor Để phát triển? Bạn có thể tải xuống bản phát hành mới nhất .. Tôi ít nhiều chỉ cần đổi tên thư mục nguyên tử cũ và thay thế nó bằng thư mục mới. Họ có thể có một số quy trình hấp dẫn như "cập nhật npm" - nhưng tôi chưa điều tra. Để cập nhật ứng dụng + vỏ nguyên tử của bạn trên máy khách, tôi không nghĩ rằng họ giải quyết trực tiếp (tất cả) và có lẽ mong đợi rằng bạn sẽ sử dụng trình cài đặt hoặc nền tảng bên ngoài khác cho điều đó. Tôi đã tìm thấy bài viết này trong tài liệu của họ thú vị, mặc dù.
Luke Chavers

1
@Moonwalker Có, nó sử dụng một ứng dụng có tên " Asar " để đóng gói. (xem: "Bao bì ứng dụng" ). Tôi cũng chỉ tìm thấy so sánh Node-Webkit / Atom-Shell này .
Luke Chavers 3/2/2015

22

Bên cạnh việc hỗ trợ đầy đủ các tiêu chuẩn Web, NW.js hỗ trợ danh sách các tính năng không chuẩn để phát triển ứng dụng gốc bao gồm:

Có nhiều hơn nữa để xem trong wiki bao gồm Menu, Khay, v.v.


3
+1 trên chế độ kiosk Roger. Tôi có thể thấy rằng đó là một tính năng mà tôi sẽ sử dụng trong tương lai. Hy vọng khả năng gỡ lỗi được cải thiện để tôi có thể ở lại nw.js tuy nhiên hiện tại tôi đang nghiêm túc xem xét chuyển sang sử dụng Atom Electron trong một thời gian để kiểm tra vùng nước. Tôi đã tìm thấy bản sửa lỗi trong nw.js một chút mong muốn.
Timothy C. Quinn

Tôi có một chút lo ngại về việc bao gồm "bảo vệ nguồn JS" ở đó - nó cùng lớp với DRM, theo nghĩa là nó không hoạt động. Nó chỉ "bảo vệ" khỏi những người bạn không cần phải "bảo vệ" để bắt đầu. Không có vẻ như một cái gì đó nên được quảng cáo là một tính năng đối với tôi.
Sven Slootweg

1
Nó không giống như DRM cho Web - Các lập trình viên JS có thể làm bất cứ điều gì như các lập trình viên C ++ có thể làm, bao gồm biên dịch mã nguồn thành mã máy, khi họ phát triển các ứng dụng gốc.
Roger Wang

@JavaScriptDude bạn có nghĩa là các devtools? Trong phiên bản tiếp theo (0.13), trải nghiệm sẽ gần giống như trong trình duyệt Chrome.
Roger Wang

@Roger. Xin lỗi vì đã ngừng trả lời. Vâng, devtools. Tôi thấy rằng những hạn chế sau đây đã có, một số trong đó có khả năng trong chính các devtools: 1) Không gỡ lỗi các cửa sổ mới được khởi chạy. 2) Gỡ lỗi từ xa không bao giờ làm việc. 3) Không có khả năng gọi lại các điểm dừng, xem các biến và nguồn được mở (mỗi lần khởi động lại ứng dụng, tất cả các cài đặt sẽ bị xóa) 4) (biggie thực sự) Không có khả năng gỡ lỗi mã được tải với yêu cầu ().
Timothy C. Quinn

10

Bây giờ tôi đã làm việc với ngoặc-shell, đây là một số phát hiện của tôi:

  • shell-shell chủ yếu được phát triển dưới dạng shell trong dự án IDE ngoặc, nhưng dự án có thể chạy bất kỳ ứng dụng web nào. Bạn chỉ cần trỏ nó đến trang html của riêng bạn. Clint Berry đã viết một hướng dẫn tuyệt vời về cách làm này: http://clintberry.com/2013/html5-desktop-apps-with-brackets-shell/
  • Dự án được hỗ trợ bởi Adobe và có rất nhiều hoạt động
  • Tài liệu có thể tốt hơn

  • hỗ trợ nền tảng Họ hỗ trợ Windows, Mac và Linux. Một gói cài đặt cũng có thể được tạo ra. Tôi chỉ thử nghiệm nó trên Win và Mac, nó hoạt động rất tốt.

  • tính năng hỗ trợ html5, css3, js. Video Html5 không hoạt động, nhưng rất dễ bật (theo mặc định, ffmpegsumo.dll không được sao chép vào trình cài đặt, nếu bạn thay đổi tập lệnh để sao chép thì nó sẽ hoạt động).
  • thanh menu tính năng gốc , 'mở tệp với', truy cập hệ thống tệp. Tôi không sử dụng bất kỳ thứ nào trong số này, vì tất cả những gì tôi cần là giao tiếp với quá trình nút.
  • khả năng mở rộng một nodejs được tích hợp và bạn có thể giao tiếp với nút từ ứng dụng web của mình. Theo cách này, bạn có thể sử dụng nút để truy cập hệ thống tập tin, v.v.
  • kiến trúc Dự án được thiết lập tốt, giữ một sự tách biệt tốt đẹp giữa dự án shell và ứng dụng web của riêng bạn chạy bên trong nó. Trong ứng dụng của riêng bạn, một đối tượng appshell toàn cầu có sẵn cho phép bạn truy cập vào chức năng ngoặc (truy cập hệ thống tệp, giao tiếp với quá trình nút, ...).

6
Điều khiến tôi tránh xa Brackes-shell là tổng quan của riêng họ. github.com/adobe/brackets-shell "Lưu ý: Vỏ khung chỉ được duy trì để sử dụng cho dự án Brackets. Mặc dù một số người chắc chắn đã thành công khi sử dụng nó làm vỏ ứng dụng cho các dự án khác, chúng tôi không cung cấp bất kỳ chính thức nào hỗ trợ cho điều đó và chúng tôi đã không thực hiện được nhiều công việc để giúp ứng dụng dễ dàng sử dụng lại. Nhiều người có thể sẽ thấy việc sử dụng một dự án như node-webkit dễ dàng hơn, theo thiết kế chung hơn. "
John W. Clark

5

Một điều cần lưu ý (nếu bạn quan tâm), đó là Electron chính thức không hỗ trợ Windows Vista. Thị phần của Vista là khoảng một nửa giữa OSX 10.9 và 10.10 (cả hai đều được Electron hỗ trợ đầy đủ). Vista vẫn được Microsoft hỗ trợ cho đến năm 2017.

NW.js hoạt động tốt trong Vista, cũng như OSX 10.9+. NW.js hoạt động trên Ubuntu, Debian, Zorin, Manjaro, Arch và hầu hết các hệ điều hành Linux dựa trên Debian khác. Electron đã từ chối PR để sửa các lỗi cụ thể của Ubuntu trên nền tảng của họ.

NW.js cũng hoạt động trong XP. Hiện tại 18% thị trường vẫn còn trên XP. Vì vậy, nếu ứng dụng máy tính để bàn của bạn có mục đích chung hơn hoặc muốn có quyền truy cập vào những người dùng cuối vẫn còn trên XP, thì có lẽ bạn nên sử dụng NW.js (0.14.7) vì Electron chỉ hỗ trợ Win 7 trở lên.

Nếu bạn sử dụng NW.js 0.12.3, bạn cũng có thể hỗ trợ OSX 10.6+ và các phiên bản cũ của hệ điều hành Linux dựa trên Debian như Ubuntu và Win XP +. Chúng tôi khuyên bạn nên thực hiện các bản dựng đặc biệt chỉ dành cho các hệ thống cũ đó và sử dụng các phiên bản mới hơn của NW.js cho các hệ điều hành mới hơn.


1
Chrome đã không ngừng hỗ trợ sau khi MS làm điều đó - hỗ trợ đã được gia hạn đến cuối năm 2015 - chrome.blogspot.com/2015/04/ Kẻ
Karol Klepacki

electron (vỏ nguyên tử) không chạy trên RHEL 6.6 trở xuống và mã nguồn không thể được biên dịch trên các bản phát hành đó.
Michael Kruglos


Bạn có thể sử dụng nw-builder để tạo các phiên bản MAS. Có cánh tay xây dựng cho NW.js là tốt.
Jaredcheeda
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.