Node-Webkit so với Electron [đã đóng]


81

Chúng tôi đang có kế hoạch xây dựng ứng dụng máy tính để bàn đa nền tảng. Chúng tôi thấy rằng Node-Webkit là một lựa chọn hoàn hảo cho chúng tôi. Nhưng GitHub đã phát triển framework của riêng họ có tên Electron thay vì sử dụng Node-Webkit.

sự khác biệt giữa chúng là gì?


2
E lectron vs N W.js (ngày 17 tháng 4). Câu hỏi Stackoverflow E: 2,630 so với N: 269 , yêu cầu kéo Github E: 102 so với N: 6 , các ứng dụng được xây dựng trên Electron so với NW.js và cuối cùng là Google Xu hướng - Electron dường như là lựa chọn tốt hơn.
kinjelom

Tôi đã chọn 'nw.js' vì tôi có thể chỉ nó vào 'index.html' của mình và nó hoạt động. Với 'nw.js', tôi cảm thấy như đang lập trình cho một trình duyệt có thêm 'node.js' thay vì 'node.js' với một trình duyệt được gắn trên phương pháp tiếp cận hàng đầu của 'Electron' - và theo tôi đó là mô hình tốt hơn và cách tiếp cận.
Daniel Sokolowski

Câu trả lời:


79

Electron có một trang giải thích sự khác biệt với node-webkit:

https://github.com/atom/electron/blob/master/docs/development/atom-shell-vs-node-webkit.md

Giống như Node-Webkit, Electron cung cấp một nền tảng để viết các ứng dụng máy tính để bàn bằng JavaScript và HTML, và có tích hợp Node để cấp quyền truy cập vào hệ thống cấp thấp trong các trang web.

Nhưng cũng có những điểm khác biệt cơ bản giữa hai dự án khiến Electron trở thành một sản phẩm hoàn toàn tách biệt với Node-Webkit:

1 - Nhập đơn

Trong NW.js, điểm nhập chính của ứng dụng là một trang web hoặc một tập lệnh JS. Bạn chỉ định tệp html hoặc js trong package.json và nó được mở trong cửa sổ trình duyệt dưới dạng cửa sổ chính của ứng dụng (trong trường hợp có điểm nhập html) hoặc tập lệnh được thực thi.

Trong khi ở Electron, điểm nhập là một tập lệnh JavaScript, thay vì cung cấp URL trực tiếp, bạn cần tạo thủ công cửa sổ trình duyệt và tải tệp html trong đó bằng API tương ứng. Bạn cũng cần lắng nghe các sự kiện cửa sổ để quyết định thời điểm thoát ứng dụng.

Vì vậy, Electron hoạt động giống như thời gian chạy của Node.js và các API ở mức thấp hơn, bạn cũng có thể sử dụng Electron cho mục đích kiểm tra web như phantomjs,

2 - Xây dựng hệ thống

Để tránh sự phức tạp khi xây dựng toàn bộ Chromium, Electron sử dụng libchromiumcontent để truy cập API nội dung của Chromium, libchromiumcontent là một thư viện dùng chung, duy nhất bao gồm mô-đun Nội dung Chromium và tất cả các phần phụ thuộc của nó. Vì vậy, người dùng không cần một cỗ máy mạnh để xây dựng lớp vỏ nguyên tử.

3 - Tích hợp nút

Trong Node-Webkit, tích hợp Node trong các trang web yêu cầu vá Chromium để hoạt động, trong khi trong Electron, chúng tôi đã chọn một cách khác để tích hợp vòng lặp libuv vào vòng lặp thông báo của mỗi nền tảng để tránh bị hack Chromium, hãy xem mã node_bindings để biết cách thực hiện.

4 - Đa ngữ cảnh

Nếu bạn là một người dùng Node-Webkit có kinh nghiệm, bạn nên làm quen với khái niệm ngữ cảnh Node và ngữ cảnh web, những khái niệm này được phát minh ra do cách Node-Webkit được triển khai.

Bằng cách sử dụng tính năng đa ngữ cảnh của Node, Electron không giới thiệu ngữ cảnh JavaScript mới trong các trang web.

Bảo vệ mã nguồn

Electron đang đóng gói các ứng dụng của mình bằng asar , chứa mã nguồn không được bảo vệ của ứng dụng. Điều này giúp ứng dụng 1 có thể giải nén ứng dụng 2 và chèn các tập lệnh dễ bị tấn công mà người dùng không biết. Bạn có thể xem dự án này trên GitHub để xem ví dụ về cách thao tác với ứng dụng Slack . Hiện tại, nhóm Electron không có bất kỳ kế hoạch nào để triển khai hỗ trợ bảo vệ mã nguồn .

NW.js đã tích hợp sẵn hỗ trợ để biên dịch mã nguồn của bạn thành các tệp nhị phân được bảo vệ .


3
Bây giờ nút-webkit được đổi tên thành NW
Marwen Trabelsi

70
Điều này có thể hơi thiên về Electron vì bài báo này đến từ repo của Electron.
gbmhunter

7
nw.js có thể chạy các ứng dụng Chrome ngay lập tức. Điều đó có giá trị đối với nhiều lập trình viên có ứng dụng trên Cửa hàng Chrome trực tuyến sẽ sớm bị bỏ rơi.
marlar

16
Tôi thực sự gần đây đã thử sử dụng cả hai và tôi đã viết một bài blog về nó. Tôi thấy rằng nw.js thực sự đơn giản và dễ sử dụng hơn Electron. Khá dễ dàng chỉ cần lấy một số trang web và thả chúng vào nw.js và bắt đầu. Electron khó thiết lập hơn và thiết kế đa quy trình của chúng có nghĩa là bạn phải nhảy qua các vòng, thậm chí để làm những việc liên tục. Electron có một API tích hợp nền tảng phong phú hơn nhiều, cho phép bạn sử dụng các tính năng gốc của Mac / Windows / Linux một cách rộng rãi hơn trong ứng dụng của mình.
Ming-Yee Iu

3
Tôi cũng đã tìm thấy trình duyệt NW.js đầu tiên với thiết kế được bổ sung Node.js tốt hơn nhiều và dễ làm việc hơn so với cách tiếp cận của Electron về Node.js với hỗ trợ trình duyệt được gắn trên đầu. Với NW.js, tôi đang viết mã cho trình duyệt, với Electron, tôi đang viết mã cho Node.js.
Daniel Sokolowski
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.