
Electron và Tauri là hai framework phổ biến để xây dựng ứng dụng máy tính bằng công nghệ web. Cả hai đều cho phép các nhà phát triển sử dụng HTML, CSS, JavaScript và các framework frontend hiện đại để tạo ứng dụng cho macOS, Windows và Linux. Tuy nhiên, chúng có cách tiếp cận khác biệt căn bản về cách các ứng dụng đó vận hành.
Electron đóng gói Chromium và Node.js cùng với mỗi ứng dụng, cung cấp một bộ máy trình duyệt và môi trường thực thi nhất quán trên các hệ điều hành. Tauri chọn cách tiếp cận gọn nhẹ hơn, sử dụng webview có sẵn của hệ điều hành cùng với backend dựa trên Rust. Sự khác biệt về kiến trúc này ảnh hưởng đến dung lượng ứng dụng, mức sử dụng bộ nhớ, hiệu năng, bảo mật, khả năng tương thích và năng suất phát triển.
Tauri thường được giới thiệu là một lựa chọn thay thế hiện đại và gọn nhẹ hơn cho Electron. Mặc dù Tauri có những ưu điểm thực sự, đặc biệt về dung lượng ứng dụng và mức tiêu thụ tài nguyên, Electron vẫn là lựa chọn mạnh mẽ cho nhiều loại phần mềm máy tính. Các ứng dụng lớn như Visual Studio Code, Slack, Discord, Notion và Figma đều sử dụng Electron. Tại WebCatalog, chúng tôi cũng đã chọn Electron làm nền tảng cho các ứng dụng máy tính đa nền tảng của mình.
Vậy bạn nên chọn framework nào? Hiểu rõ những đánh đổi sẽ hữu ích hơn việc tuyên bố framework nào chiến thắng.
So sánh nhanh Electron và Tauri
Trước khi tìm hiểu những khác biệt về kỹ thuật, dưới đây là cách hai framework này so sánh với nhau theo các đặc điểm quan trọng.
| Đặc điểm | Electron | Tauri |
|---|---|---|
| Bộ máy trình duyệt | Chromium được đóng gói kèm | Webview của hệ thống |
| Backend | Node.js | Rust |
| Dung lượng ứng dụng | Thường lớn hơn | Thường nhỏ hơn |
| Mức sử dụng bộ nhớ cơ bản | Thường cao hơn | Thường thấp hơn |
| Tính nhất quán giữa các nền tảng | Cao | Thay đổi tùy nền tảng |
| Hệ sinh thái JavaScript | Hỗ trợ Node.js phong phú | JavaScript cho frontend, API gốc thông qua plugin và lệnh |
| Mô hình bảo mật | Cơ chế sandbox của Chromium, cô lập ngữ cảnh, IPC | Backend Rust, cơ chế cấp quyền theo khả năng, IPC |
| Nền tảng máy tính | macOS, Windows, Linux | macOS, Windows, Linux |
| Hỗ trợ di động | Không hỗ trợ chính thức | Android và iOS |
| Phù hợp nhất với | Ứng dụng máy tính phức tạp, phụ thuộc vào Chromium | Ứng dụng gọn nhẹ và tiện ích tích hợp sâu với hệ điều hành |
Những khác biệt này chủ yếu bắt nguồn từ một quyết định về kiến trúc: đóng gói kèm một bộ máy trình duyệt hay dựa vào bộ máy do hệ điều hành cung cấp.
Kiến trúc: Chromium đóng gói kèm và webview của hệ thống
Khác biệt lớn nhất giữa Electron và Tauri là cách chúng kết xuất nội dung web. Electron tích hợp bộ máy Chromium riêng, nghĩa là các ứng dụng về cơ bản sử dụng cùng một công nghệ trình duyệt trên macOS, Windows và Linux. Các nhà phát triển có thể dựa vào một phiên bản Chromium cụ thể và các API web mà phiên bản đó hỗ trợ, bất kể người dùng cài đặt hệ điều hành nào.
Ngược lại, Tauri sử dụng webview do từng hệ điều hành cung cấp. Điều này giúp giảm đáng kể lượng phần mềm cần đóng gói cùng ứng dụng, nhưng cũng có nghĩa là cùng một ứng dụng có thể chạy trên các bộ máy trình duyệt khác nhau tùy nền tảng.
| Nền tảng | Electron | Tauri |
|---|---|---|
| macOS | Chromium | WKWebView (WebKit) |
| Windows | Chromium | WebView2 (Chromium) |
| Linux | Chromium | WebKitGTK |
| Android | Không hỗ trợ chính thức | Android WebView |
| iOS | Không hỗ trợ chính thức | WKWebView |
Đối với các ứng dụng có giao diện đơn giản, những khác biệt này có thể ít ảnh hưởng trong thực tế. Hầu hết các framework frontend hiện đại đều hoạt động tốt trên cả Chromium lẫn WebKit. Tuy nhiên, những ứng dụng phụ thuộc vào các API trình duyệt cụ thể, cơ chế kết xuất phức tạp hoặc khả năng web nâng cao có thể gặp vấn đề về tương thích.
Với Electron, các nhà phát triển có thể kiểm thử trên một phiên bản Chromium xác định và phân phối chính phiên bản đó đến người dùng. Với Tauri, họ phải tính đến sự khác biệt giữa các bộ máy trình duyệt và có thể cả các phiên bản webview khác nhau của hệ thống. Điều này trở nên đặc biệt quan trọng khi gỡ lỗi những vấn đề chỉ xảy ra trên một số hệ điều hành hoặc bản phân phối Linux nhất định.
Không có cách tiếp cận nào vốn dĩ vượt trội hơn. Tauri giảm sự trùng lặp bằng cách tận dụng phần mềm đã được cài đặt trên máy tính, còn Electron chấp nhận dung lượng ứng dụng lớn hơn để đổi lấy khả năng kiểm soát và tính nhất quán cao hơn.
Dung lượng ứng dụng, mức sử dụng bộ nhớ và hiệu năng
Một trong những ưu điểm rõ ràng nhất của Tauri là dung lượng ứng dụng. Vì Electron đóng gói kèm Chromium và Node.js, ngay cả những ứng dụng Electron tương đối đơn giản cũng có thể chiếm hàng trăm megabyte dung lượng ổ đĩa. Ứng dụng Tauri có thể nhỏ hơn đáng kể vì dựa vào webview của hệ thống thay vì tích hợp cả một bộ máy trình duyệt hoàn chỉnh trong gói ứng dụng.
Tauri cũng có thể có mức tiêu thụ bộ nhớ cơ bản thấp hơn, đặc biệt với các ứng dụng gọn nhẹ có ít tác vụ xử lý nền. Backend Rust của Tauri hoạt động hiệu quả và không cần duy trì một môi trường thực thi trình duyệt riêng được đóng gói kèm. Đối với các tiện ích nhỏ, công cụ ghi chú và ứng dụng có giao diện tương đối đơn giản, những ưu điểm này có thể rất đáng kể.
Tuy nhiên, ứng dụng nhỏ hơn không nhất thiết chạy nhanh hơn. Cả Electron và Tauri cuối cùng đều sử dụng bộ máy trình duyệt để kết xuất giao diện, và hiệu năng frontend vẫn phụ thuộc rất nhiều vào mã ứng dụng. Một thành phần React kém hiệu quả, một thao tác JavaScript tốn nhiều tài nguyên hoặc tình trạng rò rỉ bộ nhớ vẫn sẽ là vấn đề bất kể sử dụng framework nào.
Cũng có sự khác biệt quan trọng giữa dung lượng ứng dụng và tổng mức tiêu thụ tài nguyên. Tauri không loại bỏ bộ máy trình duyệt; nó chỉ sử dụng bộ máy do hệ điều hành cung cấp. Trên Windows, điều này có nghĩa là dựa vào WebView2, vốn thường có sẵn trên các bản cài đặt Windows hiện đại. Trên macOS và Linux, điều đó có nghĩa là dựa vào các bản triển khai WebKit tương ứng.
Để so sánh hiệu năng một cách có ý nghĩa, các nhà phát triển nên đo lường:
- Dung lượng ứng dụng: Dung lượng tải xuống và mức sử dụng ổ đĩa sau khi cài đặt.
- Thời gian khởi động: Thời gian để ứng dụng sẵn sàng cho người dùng tương tác.
- Mức sử dụng bộ nhớ khi nhàn rỗi: Lượng bộ nhớ tiêu thụ khi ứng dụng đang mở nhưng không hoạt động.
- Mức sử dụng bộ nhớ và CPU khi hoạt động: Mức tiêu thụ tài nguyên trong các tác vụ thực tế.
- Khả năng phản hồi: Hiệu năng kết xuất và độ trễ khi người dùng tương tác.
Kết quả sẽ tùy thuộc vào từng ứng dụng. Tauri thường có lợi thế với các ứng dụng gọn nhẹ, trong khi môi trường Chromium nhất quán của Electron có thể giúp việc kiểm thử và tối ưu hóa các ứng dụng phức tạp trên nhiều nền tảng trở nên dễ dàng hơn.
Trải nghiệm phát triển và bảo mật
Electron có lợi thế đáng kể đối với các nhóm đã có kinh nghiệm với JavaScript và TypeScript. Việc tích hợp Node.js cho phép truy cập vào một hệ sinh thái thư viện trưởng thành dành cho thao tác với hệ thống tệp, kết nối mạng, cơ sở dữ liệu, tiến trình nền và các chức năng của hệ điều hành. Các nhà phát triển có thể xây dựng ứng dụng máy tính tinh vi mà không nhất thiết phải đưa thêm một ngôn ngữ lập trình khác vào bộ công nghệ của mình.
Tauri sử dụng Rust cho backend gốc, mang lại hiệu năng xuất sắc, tính an toàn bộ nhớ và các bảo đảm chặt chẽ tại thời điểm biên dịch. Các nhà phát triển vẫn có thể xây dựng giao diện bằng React, Vue, Svelte hoặc các framework JavaScript khác, và Tauri cung cấp plugin cùng API JavaScript cho nhiều thao tác gốc phổ biến.
Tuy nhiên, việc triển khai chức năng ngoài phạm vi các API đó có thể đòi hỏi phải viết Rust hoặc mã dành riêng cho từng nền tảng. Với các nhóm đã quen thuộc với Rust, đây có thể là một lợi thế. Với các nhóm chủ yếu làm việc bằng TypeScript, điều này có thể làm tăng độ phức tạp.
Bảo mật là một lĩnh vực khác mà hai framework có cách tiếp cận khác nhau. Tauri cung cấp hệ thống phân quyền dựa trên khả năng, được thiết kế để giới hạn những thao tác gốc mà mã frontend có thể truy cập. Electron cung cấp cơ chế sandbox của Chromium, cô lập ngữ cảnh và các biện pháp kiểm soát để hạn chế quyền truy cập vào Node.js cùng các API đặc quyền khác.
Cả hai framework đều có thể hỗ trợ xây dựng ứng dụng an toàn khi được cấu hình đúng cách, và cả hai đều có thể khiến người dùng gặp rủi ro từ các lỗ hổng khi nhà phát triển cấp quyền quá mức hoặc xử lý nội dung không đáng tin cậy theo cách thiếu an toàn.
Một khác biệt quan trọng liên quan đến các bản cập nhật bảo mật. Nhà phát triển Electron chịu trách nhiệm cập nhật môi trường thực thi Chromium được đóng gói kèm và phân phối phiên bản ứng dụng mới khi có bản vá bảo mật. Tauri thường dựa vào các bản cập nhật từ hệ điều hành hoặc nhà cung cấp webview để vá bảo mật cho bộ máy trình duyệt. Điều này giúp giảm một phần trách nhiệm bảo trì cho nhà phát triển ứng dụng, mặc dù khả năng có sẵn bản cập nhật phụ thuộc vào hệ điều hành của người dùng và webview đã cài đặt.
Cuối cùng, bảo mật phụ thuộc nhiều hơn vào cách thiết kế và bảo trì ứng dụng thay vì framework được sử dụng. Chọn Tauri không tự động khiến ứng dụng trở nên an toàn, cũng như chọn Electron không tự động khiến ứng dụng kém an toàn.
Vì sao các công ty lớn tiếp tục sử dụng Electron
Mặc dù thường xuyên bị chỉ trích về dung lượng ứng dụng và mức tiêu thụ tài nguyên, Electron vẫn là lựa chọn phổ biến cho các sản phẩm phần mềm lớn. Một số ứng dụng máy tính được sử dụng rộng rãi nhất được xây dựng bằng Electron, cho thấy kiến trúc của nó có thể đáp ứng các phần mềm phức tạp được hàng triệu người sử dụng.
Một số ví dụ:
| Công ty | Ứng dụng |
|---|---|
| Microsoft | Visual Studio Code |
| Salesforce | Slack |
| Discord | Discord |
| Notion | Notion |
| Figma | Figma |
| Signal | Signal Desktop |
| GitHub | GitHub Desktop |
| OpenAI | ChatGPT Desktop |
Những ứng dụng này phục vụ các mục đích rất khác nhau, từ phát triển phần mềm và giao tiếp đến thiết kế và nâng cao năng suất. Điểm chung của chúng là nhu cầu mang đến trải nghiệm máy tính tinh vi trong khi vẫn tận dụng các công nghệ web.
Electron mang lại một hệ sinh thái trưởng thành, môi trường thực thi Chromium nhất quán và khả năng kết hợp giao diện web với các chức năng gốc của hệ điều hành. Việc được áp dụng rộng rãi cũng đồng nghĩa với việc các nhà phát triển có thể hưởng lợi từ nhiều năm tích lũy tài liệu, thư viện mã nguồn mở, công cụ gỡ lỗi và giải pháp cho những vấn đề thường gặp.
Đối với các ứng dụng lớn, năng suất phát triển và khả năng bảo trì có thể quan trọng hơn việc giảm tối đa dung lượng gói cài đặt. Thêm một trăm megabyte dung lượng ổ đĩa có thể là đánh đổi chấp nhận được nếu giúp giảm độ phức tạp khi phát triển đa nền tảng và khiến ứng dụng dễ bảo trì hơn.
Điều này không có nghĩa Electron luôn là lựa chọn đúng, cũng không có nghĩa mọi công ty đều chọn nó vì những lý do giống nhau. Tuy nhiên, việc Electron tiếp tục được sử dụng trong các ứng dụng lớn đang vận hành thực tế cho thấy đây vẫn là một lựa chọn thiết thực, có nền tảng vững chắc, chứ không phải công nghệ lỗi thời mà các nhà phát triển nên mặc nhiên thay thế.
Bạn có thể khám phá thêm các ví dụ trong trang giới thiệu ứng dụng Electron chính thức.
Vì sao chúng tôi chọn Electron tại WebCatalog
Tại WebCatalog, chúng tôi sử dụng Electron để xây dựng các ứng dụng máy tính đa nền tảng và tin rằng đây vẫn là framework phù hợp với những yêu cầu cụ thể của mình.
WebCatalog cho phép người dùng biến các trang web thành ứng dụng máy tính, duy trì đăng nhập nhiều tài khoản độc lập và sắp xếp các ứng dụng trên macOS, Windows và Linux. Khác với ứng dụng máy tính thông thường, nơi các nhà phát triển kiểm soát frontend và có thể tối ưu hóa nó cho một môi trường cụ thể, chúng tôi cần hỗ trợ rất nhiều trang web mà mình không kiểm soát.
Những trang web này có thể sử dụng các hệ thống xác thực, cơ chế lưu trữ, tính năng đa phương tiện, API trình duyệt và framework JavaScript khác nhau. Một trang web hoạt động đúng trên Chromium có thể hoạt động khác trên WebKit, và việc duy trì khả năng tương thích giữa nhiều bộ máy trình duyệt sẽ tạo thêm những thách thức về kỹ thuật.
Môi trường thực thi Chromium nhất quán của Electron giúp chúng tôi tránh được phần lớn sự phức tạp này. Nó cho phép chúng tôi cung cấp một môi trường trình duyệt có hành vi có thể dự đoán được trên các nền tảng máy tính được hỗ trợ, thay vì dựa vào các webview hệ thống khác nhau.
Electron cũng cung cấp các API trưởng thành để quản lý phiên trình duyệt, cookie, dữ liệu lưu trữ, quyền truy cập và điều hướng. Khả năng phân vùng phiên của Electron đặc biệt có giá trị với WebCatalog vì cho phép người dùng duy trì nhiều phiên đăng nhập độc lập cho cùng một trang web.
Tauri cũng có thể hiển thị các trang web từ xa, và có thể triển khai chức năng tương tự bằng các API webview, plugin hoặc tích hợp dành riêng cho từng nền tảng của Tauri. Điểm khác biệt là Electron cung cấp nền tảng nhất quán hơn cho các ứng dụng được xây dựng xoay quanh chức năng trình duyệt, đặc biệt khi cần hỗ trợ các dịch vụ bên thứ ba bất kỳ.
Khả năng hỗ trợ Linux càng củng cố lợi thế này. Các bản phân phối Linux khác nhau đáng kể về thư viện hệ thống có sẵn, môi trường desktop và phiên bản phần mềm. Môi trường thực thi Chromium được đóng gói kèm của Electron loại bỏ một nguồn biến thiên lớn, trong khi các ứng dụng Tauri phải tính đến môi trường WebKitGTK có sẵn trên từng bản phân phối được hỗ trợ.
Sự nhất quán đó đi kèm cái giá phải trả. Các ứng dụng Electron có dung lượng lớn hơn và nhà phát triển phải quản lý cẩn thận mức tiêu thụ tài nguyên. Tại WebCatalog, chúng tôi liên tục tìm cách giảm phần tài nguyên phát sinh đó. Ví dụ, chúng tôi đã áp dụng bản sao APFS để giảm mức sử dụng ổ đĩa của các ứng dụng Mac được tạo, cho thấy một số nhược điểm của Electron có thể được khắc phục mà không cần từ bỏ framework này.
Quyết định của chúng tôi không dựa trên niềm tin rằng Electron tốt hơn Tauri trong mọi trường hợp. Quyết định đó dựa trên yêu cầu của sản phẩm. Với WebCatalog, khả năng tương thích trình duyệt, hành vi nhất quán giữa các hệ điều hành và khả năng quản lý phiên trưởng thành có giá trị hơn việc giảm tối đa dung lượng ứng dụng.
Những điểm Tauri có lợi thế
Mặc dù chúng tôi ưu tiên Electron tại WebCatalog, có nhiều tình huống mà Tauri có thể là lựa chọn tốt hơn. Với các tiện ích máy tính gọn nhẹ, gói ứng dụng nhỏ hơn và mức tiêu thụ tài nguyên cơ bản thấp hơn là những ưu điểm hấp dẫn. Các ứng dụng chủ yếu hiển thị frontend của chính mình, có yêu cầu tương đối đơn giản về chức năng gốc và không phụ thuộc vào một bộ máy trình duyệt cụ thể có thể hưởng lợi đáng kể từ kiến trúc của Tauri.
Tauri cũng hấp dẫn với các nhà phát triển ưa thích Rust hoặc muốn chia sẻ logic ứng dụng gốc giữa các nền tảng. Kể từ Tauri 2, framework này chính thức hỗ trợ Android và iOS bên cạnh các hệ điều hành máy tính. Ngược lại, Electron chủ yếu được thiết kế để phát triển ứng dụng máy tính và không chính thức hỗ trợ các nền tảng di động.
Một yếu tố khác cần cân nhắc là bảo trì. Môi trường thực thi nhất quán của Electron giúp đơn giản hóa việc kiểm thử tương thích, nhưng cũng yêu cầu nhà phát triển ứng dụng bảo trì và cập nhật các phiên bản Chromium được đóng gói kèm. Tauri chuyển nhiều trách nhiệm này hơn cho hệ điều hành, nhờ đó có thể giảm gánh nặng bảo trì cho một số ứng dụng. Tuy nhiên, các nhà phát triển có thể cần đầu tư thêm công sức để kiểm thử các bản triển khai webview khác nhau và giải quyết những vấn đề riêng của từng nền tảng.
Tổng chi phí phát triển quan trọng hơn bất kỳ kết quả đo hiệu năng riêng lẻ nào. Một framework tiết kiệm bộ nhớ nhưng đòi hỏi nhiều công sức kỹ thuật hơn đáng kể có thể không phải là lựa chọn hiệu quả nhất cho một nhóm cụ thể. Tương tự, việc phân phối một môi trường thực thi Chromium lớn cho một tiện ích đơn giản có thể không cần thiết khi Tauri có thể thực hiện cùng nhiệm vụ với ít tài nguyên hơn.
Electron và Tauri: Bạn nên chọn framework nào?
Cả hai framework đều có thể dùng để xây dựng các ứng dụng máy tính phục vụ sử dụng thực tế, nhưng chúng được tối ưu cho những ưu tiên khác nhau.
| Ưu tiên của bạn | Lựa chọn khởi đầu phù hợp hơn | Lý do |
|---|---|---|
| Dung lượng tải xuống và cài đặt nhỏ | Tauri | Sử dụng webview của hệ thống |
| Mức sử dụng tài nguyên cơ bản thấp | Tauri | Backend gốc gọn nhẹ |
| Kết xuất nhất quán giữa các nền tảng máy tính | Electron | Đóng gói kèm cùng một bộ máy Chromium |
| Tích hợp Node.js sâu rộng | Electron | Tích hợp sẵn môi trường thực thi Node.js |
| Chức năng gốc dựa trên Rust | Tauri | Rust là ngôn ngữ backend chính |
| Hiển thị các trang web bên thứ ba bất kỳ | Electron | Môi trường Chromium có hành vi có thể dự đoán được |
| Quản lý phiên trình duyệt phức tạp | Electron | Các API phiên và phân vùng trưởng thành |
| Phát triển cho máy tính và di động | Tauri | Chính thức hỗ trợ cả máy tính và di động |
| Giảm thiểu kiểm thử tương thích giữa các trình duyệt | Electron | Một bộ máy nhất quán trên các nền tảng máy tính |
Đây là những khuyến nghị chung chứ không phải quy tắc tuyệt đối. Electron có thể được dùng để xây dựng các ứng dụng hoạt động hiệu quả, còn Tauri có thể làm nền tảng cho phần mềm tinh vi. Lựa chọn tốt hơn phụ thuộc vào yêu cầu của sản phẩm và chuyên môn sẵn có của nhóm.
Đối với các nhóm xây dựng ứng dụng máy tính tinh vi, hệ sinh thái vững chắc và thành tích đã được chứng minh của Electron rất đáng được cân nhắc nghiêm túc. Việc Microsoft, Slack, Discord và các nhà phát triển phần mềm lớn khác áp dụng Electron cho thấy framework này có thể đáp ứng các yêu cầu khắt khe trong môi trường vận hành thực tế.
Trong khi đó, Tauri mang đến một lựa chọn thay thế hấp dẫn cho các dự án ưu tiên tệp nhị phân nhỏ hơn, mức tiêu thụ tài nguyên cơ bản thấp hơn, tích hợp Rust hoặc phát triển chung cho máy tính và di động.
Lời kết
Cuộc tranh luận giữa Electron và Tauri thường được rút gọn thành một phép so sánh đơn giản: Electron lớn, còn Tauri nhỏ. Nhưng sự khác biệt có ý nghĩa hơn nằm ở lựa chọn giữa một môi trường thực thi nhất quán được đóng gói kèm và một framework gọn nhẹ tích hợp với các webview do hệ thống cung cấp.
Electron ưu tiên tính nhất quán giữa các nền tảng, khả năng tích hợp với hệ sinh thái JavaScript và quyền kiểm soát sâu rộng đối với chức năng trình duyệt. Tauri ưu tiên gói ứng dụng nhỏ hơn, khả năng thực thi mã gốc hiệu quả và sự tích hợp chặt chẽ hơn với webview của hệ điều hành.
Tại WebCatalog, chúng tôi đã chọn Electron, cũng như nhiều công ty phần mềm lớn đã làm với các ứng dụng máy tính của họ. Chúng tôi đánh giá cao hệ sinh thái trưởng thành, môi trường thực thi Chromium nhất quán và các chức năng trình duyệt phong phú của Electron. Những ưu điểm này giúp chúng tôi xây dựng và duy trì một sản phẩm hỗ trợ nhiều loại trang web trên nhiều hệ điều hành.
Điều đó không khiến Tauri trở thành một lựa chọn tồi. Với các tiện ích gọn nhẹ hoặc ứng dụng có yêu cầu khác, những ưu điểm của Tauri có thể vượt trội hơn Electron.
Framework tốt nhất không nhất thiết là framework có tệp thực thi nhỏ nhất hay mức sử dụng bộ nhớ thấp nhất. Đó là framework giúp nhóm của bạn xây dựng, bảo trì và cải tiến ứng dụng một cách hiệu quả nhất.


