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ệ .