[Thảo luận] Liệu có nên build desktop app với Nodejs hay không?



  • Xin chào mọi người, mình là 1 noder ~ à thì ngoài js ra thì trình code những cái khác của mình cũng xoàng thôi, tuy nhiên mình vẫn muốn lập một cái topic để hỏi về vấn đề này.

    Liệu nó nên build một desktop app với Nodejs hay không?

    Khi đặt ra câu hỏi này, cái đầu tiên mình muốn nhắc đến là hiệu năng, liệu 1 app nhỏ / đơn giản chạy bằng nodejs có thể địch lại với các ngôn ngữ khác như C++ / C# / Java...
    Hoặc những ứng dụng lớn hơn, đồ sộ hơn thì liệu Nodejs có đủ sức mạnh để làm được điều này không?

    Và hàng tá các câu hỏi liên quan khác như: Liệu 1 cái app chrome có thể thay thế được nodejs ở 1 số công việc đơn giản hay không?

    Hy vọng các noder sẽ thích chủ đề này và thảo luận nhiệt tình~



  • Bạn có thể build desktop ngon với electron ( Hoặc các thể loại công nghệ tương tự ).
    Atom, Slack, Visual Studio Code là những dùng được build bằng Web technologies như vậy đấy.

    Mình thấy nó khá tiện và nhanh cho 1 người biết về lập trình web để làm App, mình cũng có làm 1 cái Catify sida bằng Electron để phục vụ cho nhu cầu cá nhân.

    Thấy nhược điểm to nhất của làm kiểu này là Size của app khá lớn ( như electron thì 100 > Mb )



  • @CodeConCat
    Mình thấy nhược của electron là app build xong bị show mã nguồn, tình bảo mật không được cao cho lắm, theo như đường dẫn này thì mình có thể thấy toàn bộ (chắc vậy) code của VC Code
    C:\Program Files (x86)\Microsoft VS Code\resources\app



  • Theo mình thì không nên bởi vì app viết bằng electron khá ngốn ram, nặng. Ngoài cái dễ làm giao diện đẹp với lại web dev có thể làm được app ra thì mình thấy là không nên.



  • MÌnh thấy dùng electron rất hay. Như bên mình là rất phù hợp khi đã có web app, giờ làm desktop rất nhanh. Nhanh hay chậm mình nghĩ do tối ưu khi lập trình và bài toán xử lý nữa. Các bạn tham khảo Slack https://slack.com/downloads



  • @nlug27 thực ra thì một khi đã build web app chạy nền desktop thì mình thấy cái nào mà chả nặng ~

    @mrokay thằng slack này là nền electron hả bạn, tại thấy bạn đang nói về electron lại nhảy qua slack, hiện mình đang cho app chạy trên nwjs, tốc độ rất nhanh cơ mà code vẫn chưa có nhiều cái dính vào nwjs nên mình muốn xác định trước khi ấn định



  • Chủ đề này hay đấy!



  • @careervn đã nói trong [Thảo luận] Liệu có nên build desktop app với Nodejs hay không?:

    Chủ đề này hay đấy!

    rất mong mọi người vào bàn luận về chủ đề này ~



  • Ngoài ra phonegap (cordova) cũng là một lựa chọn nữa.

    tuanquynet

    0


  • @tuanquynet đã nói trong [Thảo luận] Liệu có nên build desktop app với Nodejs hay không?:

    Ngoài ra phonegap (cordova) cũng là một lựa chọn nữa.

    phonegap dành cho di động mà :| , desktop thì dùng native vẫn thấy ngon hơn vì sự hỗ trợ của api của nó, window thì c# còn macos thì objC hoặc h là swift .



  • Search ta thì thấy bây giờ Phonegap đã có bản beta để build desktop app rồi.
    Và tùy nhu cầu, tùy khả năng, chứ đâu phải lúc nào cũng build bằng native được, chưa kể build bằng NodeJs còn tận dụng được số lượng package siêu khổng lồ của nó nữa chứ.



  • @CodeConCat đã nói trong [Thảo luận] Liệu có nên build desktop app với Nodejs hay không?:

    Search ta thì thấy bây giờ Phonegap đã có bản beta để build desktop app rồi.
    Và tùy nhu cầu, tùy khả năng, chứ đâu phải lúc nào cũng build bằng native được, chưa kể build bằng NodeJs còn tận dụng được số lượng package siêu khổng lồ của nó nữa chứ.

    Khổng lồ nhưng rác cũng không ít. Thực tế ứng dụng build với nodejs trên desktop chỉ hợp với làm các ứng dụng client-server , còn ứng dụng local thì performance không cao được. Hiện nay thì hầu hết nền tảng build app js đều có nhược điểm là vậy :D. Khi nào thời đại app on cloud thì sẽ khác



  • Mình thì nghĩ vẫn nên build desktop app với nodejs. Vì trước khi cần quan tâm tới performance thì hay quan tâm đến tính hữu dụng của app đã. Chắc chắn là Nodejs sẽ không tạo ra những app chạy quá ỳ ạch, hay ngốn ram đến mức độ khủng khiếp như cái trình duyệt mà chúng ta dùng hàng ngày :)))).
    Khi mà app của mình đã có lượng người dùng tốt rồi thì lúc đó chuyển hướng công nghệ thành native cũng là điều bình thường và mình có cơ sở để làm điều đó. Mất công build app native rõ là ngon mà không ai dùng thì cũng vứt.

    “What I Cannot Create, I Do Not Understand”

    0

  • Global Moderator

    theo mình thì không nên build nhé, vì khi build desktop app với nodejs thì không khác gì bạn build một trình duyệt cả. Nếu chỉ là app nhỏ thì không sao nhưng nếu vấn đề về performance được đề cao thì sẽ rất không ổn.
    Nodejs không phải là low level language nên khi chạy nó cũng sẽ không cho bạn hiệu suất lớn như bạn tưởng tượng đâu. Nếu bạn muốn dev nhanh thì cũng nên nghĩ lại vì code desktop app bằng nodejs cũng chưa chắc nhanh hơn code trên c+, c# hay python đâu. Nếu bạn có kỹ năng về các ngôn ngữ đó thì không nên dùng node còn nếu chỉ biết node thì có thể dùng node để làm thử, làm để test thì hay hơn.
    Bạn thử tưởng tượng, app mà cross platform ( not native ) thì tốt nhất nên là các app dạng restful và nên làm frontend là chủ yếu.
    Vấn đề về lưu trữ và xử lý dữ liệu nữa, desktop app của bạn sẽ lưu trữ như nào... liệu nó có thể stand alone không?



  • @ngocphuongnb đã nói trong [Thảo luận] Liệu có nên build desktop app với Nodejs hay không?:

    theo mình thì không nên build nhé, vì khi build desktop app với nodejs thì không khác gì bạn build một trình duyệt cả. Nếu chỉ là app nhỏ thì không sao nhưng nếu vấn đề về performance được đề cao thì sẽ rất không ổn.
    Nodejs không phải là low level language nên khi chạy nó cũng sẽ không cho bạn hiệu suất lớn như bạn tưởng tượng đâu. Nếu bạn muốn dev nhanh thì cũng nên nghĩ lại vì code desktop app bằng nodejs cũng chưa chắc nhanh hơn code trên c+, c# hay python đâu. Nếu bạn có kỹ năng về các ngôn ngữ đó thì không nên dùng node còn nếu chỉ biết node thì có thể dùng node để làm thử, làm để test thì hay hơn.
    Bạn thử tưởng tượng, app mà cross platform ( not native ) thì tốt nhất nên là các app dạng restful và nên làm frontend là chủ yếu.
    Vấn đề về lưu trữ và xử lý dữ liệu nữa, desktop app của bạn sẽ lưu trữ như nào... liệu nó có thể stand alone không?

    mình tưởng là để xây dựng 1 cái giao diện đẹp 1 chút thì code bằng web sẽ nhanh hơn (và có thể là đẹp hơn) là code bằng C++/C#/Java chứ.
    trong quá trình mình build app thì với toàn bộ source chỉ có chưa đến 1MB. toàn bộ là code và vài cái thứ viện nhưng khi build thành app thì nó lên tới gần 100MB nên mình cũng hiểu điểm hạn chế của pp này, chỉ là các app như Visual Studio Code cũng được xây dựng theo cách này làm cho mình thắc mắc.

    Về bản thân mình thì hiện tại mình có chút kinh nghiệm về nodejs và front-end nhưng về C++/C#/Java hay các ngôn ngữ bậc thấp khác thì mới chỉ ở mức vô cùng căn bản.

    Theo mọi người thì Visual Studio Code có được coi là 1 app bự theo kiểu mà việc build desktop app bằng nodejs sẽ khiến cho nó nặng nề và chậm chạm quá mức cho phép thay vì code bằng C# hay các ngôn ngữ bậc thấp khác hay không ?

    Hiện mình đang có dự định làm 1 cái app không quá to như thằng VS Code nhưng cũng không phải là quá đơn giản đi. Nhất là các thao tác GET POST đến server mà làm bằng C++ hay C# thì quả thật là mù tịt và cảm thấy khá là khó khắn, nhất là khi càng ngày code càng bị các thư viện của nodejs nói riêng và js nói chung làm phụ thuộc...


  • Global Moderator

    @phamhongphuc đã nói trong [Thảo luận] Liệu có nên build desktop app với Nodejs hay không?:

    @ngocphuongnb đã nói trong [Thảo luận] Liệu có nên build desktop app với Nodejs hay không?:

    theo mình thì không nên build nhé, vì khi build desktop app với nodejs thì không khác gì bạn build một trình duyệt cả. Nếu chỉ là app nhỏ thì không sao nhưng nếu vấn đề về performance được đề cao thì sẽ rất không ổn.
    Nodejs không phải là low level language nên khi chạy nó cũng sẽ không cho bạn hiệu suất lớn như bạn tưởng tượng đâu. Nếu bạn muốn dev nhanh thì cũng nên nghĩ lại vì code desktop app bằng nodejs cũng chưa chắc nhanh hơn code trên c+, c# hay python đâu. Nếu bạn có kỹ năng về các ngôn ngữ đó thì không nên dùng node còn nếu chỉ biết node thì có thể dùng node để làm thử, làm để test thì hay hơn.
    Bạn thử tưởng tượng, app mà cross platform ( not native ) thì tốt nhất nên là các app dạng restful và nên làm frontend là chủ yếu.
    Vấn đề về lưu trữ và xử lý dữ liệu nữa, desktop app của bạn sẽ lưu trữ như nào... liệu nó có thể stand alone không?

    mình tưởng là để xây dựng 1 cái giao diện đẹp 1 chút thì code bằng web sẽ nhanh hơn (và có thể là đẹp hơn) là code bằng C++/C#/Java chứ.
    trong quá trình mình build app thì với toàn bộ source chỉ có chưa đến 1MB. toàn bộ là code và vài cái thứ viện nhưng khi build thành app thì nó lên tới gần 100MB nên mình cũng hiểu điểm hạn chế của pp này, chỉ là các app như Visual Studio Code cũng được xây dựng theo cách này làm cho mình thắc mắc.

    Về bản thân mình thì hiện tại mình có chút kinh nghiệm về nodejs và front-end nhưng về C++/C#/Java hay các ngôn ngữ bậc thấp khác thì mới chỉ ở mức vô cùng căn bản.

    Theo mọi người thì Visual Studio Code có được coi là 1 app bự theo kiểu mà việc build desktop app bằng nodejs sẽ khiến cho nó nặng nề và chậm chạm quá mức cho phép thay vì code bằng C# hay các ngôn ngữ bậc thấp khác hay không ?

    Hiện mình đang có dự định làm 1 cái app không quá to như thằng VS Code nhưng cũng không phải là quá đơn giản đi. Nhất là các thao tác GET POST đến server mà làm bằng C++ hay C# thì quả thật là mù tịt và cảm thấy khá là khó khắn, nhất là khi càng ngày code càng bị các thư viện của nodejs nói riêng và js nói chung làm phụ thuộc...

    Nếu xét về đẹp thì trên C# cũng hỗ trợ nhiều UI framework lắm, giống như bạn dùng bootstrap hay material design vậy. Có điều khác là bạn phải cài qua nuget hay dynamic library và khi dùng thì phải gọi UI widget của nó thôi.
    Source code nói chung của nhiều ide thường chỉ bao gồm code và profile của project chứ chưa bao gồm required library (cái này khác với việc bạn include library trong php nhé). Nên khi build chắc chắn nó phải đính kèm cả các thư viện đó vào, dung lượng tăng nhiều là điều dễ đoán. Tuy nhiên vấn đề dung lượng không quan trọng bằng vấn đề hiệu suất. Ngôn ngữ bậc càng cao, càng dễ phát triển ứng dụng thì càng phải thông qua nhiều trình thông dịch hoặc biên dịch rất phức tạp.
    Visual studio code thì không phải app quá lớn nhé, nó dùng node để làm local apis, nếu app bạn chủ yếu GET, POST thì dùng node khong sao nhưng nếu liên quan đến render hoặc chạy multi threads thì nên xem xét lại.



  • @ngocphuongnb đã nói trong [Thảo luận] Liệu có nên build desktop app với Nodejs hay không?:

    @phamhongphuc đã nói trong [Thảo luận] Liệu có nên build desktop app với Nodejs hay không?:

    @ngocphuongnb đã nói trong [Thảo luận] Liệu có nên build desktop app với Nodejs hay không?:

    theo mình thì không nên build nhé, vì khi build desktop app với nodejs thì không khác gì bạn build một trình duyệt cả. Nếu chỉ là app nhỏ thì không sao nhưng nếu vấn đề về performance được đề cao thì sẽ rất không ổn.
    Nodejs không phải là low level language nên khi chạy nó cũng sẽ không cho bạn hiệu suất lớn như bạn tưởng tượng đâu. Nếu bạn muốn dev nhanh thì cũng nên nghĩ lại vì code desktop app bằng nodejs cũng chưa chắc nhanh hơn code trên c+, c# hay python đâu. Nếu bạn có kỹ năng về các ngôn ngữ đó thì không nên dùng node còn nếu chỉ biết node thì có thể dùng node để làm thử, làm để test thì hay hơn.
    Bạn thử tưởng tượng, app mà cross platform ( not native ) thì tốt nhất nên là các app dạng restful và nên làm frontend là chủ yếu.
    Vấn đề về lưu trữ và xử lý dữ liệu nữa, desktop app của bạn sẽ lưu trữ như nào... liệu nó có thể stand alone không?

    mình tưởng là để xây dựng 1 cái giao diện đẹp 1 chút thì code bằng web sẽ nhanh hơn (và có thể là đẹp hơn) là code bằng C++/C#/Java chứ.
    trong quá trình mình build app thì với toàn bộ source chỉ có chưa đến 1MB. toàn bộ là code và vài cái thứ viện nhưng khi build thành app thì nó lên tới gần 100MB nên mình cũng hiểu điểm hạn chế của pp này, chỉ là các app như Visual Studio Code cũng được xây dựng theo cách này làm cho mình thắc mắc.

    Về bản thân mình thì hiện tại mình có chút kinh nghiệm về nodejs và front-end nhưng về C++/C#/Java hay các ngôn ngữ bậc thấp khác thì mới chỉ ở mức vô cùng căn bản.

    Theo mọi người thì Visual Studio Code có được coi là 1 app bự theo kiểu mà việc build desktop app bằng nodejs sẽ khiến cho nó nặng nề và chậm chạm quá mức cho phép thay vì code bằng C# hay các ngôn ngữ bậc thấp khác hay không ?

    Hiện mình đang có dự định làm 1 cái app không quá to như thằng VS Code nhưng cũng không phải là quá đơn giản đi. Nhất là các thao tác GET POST đến server mà làm bằng C++ hay C# thì quả thật là mù tịt và cảm thấy khá là khó khắn, nhất là khi càng ngày code càng bị các thư viện của nodejs nói riêng và js nói chung làm phụ thuộc...

    Nếu xét về đẹp thì trên C# cũng hỗ trợ nhiều UI framework lắm, giống như bạn dùng bootstrap hay material design vậy. Có điều khác là bạn phải cài qua nuget hay dynamic library và khi dùng thì phải gọi UI widget của nó thôi.
    Source code nói chung của nhiều ide thường chỉ bao gồm code và profile của project chứ chưa bao gồm required library (cái này khác với việc bạn include library trong php nhé). Nên khi build chắc chắn nó phải đính kèm cả các thư viện đó vào, dung lượng tăng nhiều là điều dễ đoán. Tuy nhiên vấn đề dung lượng không quan trọng bằng vấn đề hiệu suất. Ngôn ngữ bậc càng cao, càng dễ phát triển ứng dụng thì càng phải thông qua nhiều trình thông dịch hoặc biên dịch rất phức tạp.
    Visual studio code thì không phải app quá lớn nhé, nó dùng node để làm local apis, nếu app bạn chủ yếu GET, POST thì dùng node khong sao nhưng nếu liên quan đến render hoặc chạy multi threads thì nên xem xét lại.

    khi nói về đẹp thì mình trong css không có dùng bootstrap hay material design nào cả, là code css riêng của mình chứ không phụ thuộc vào thư viện ( mặc dù nhiều người cũng nói mình là code tay nhiêu đó đủ rồi dùng thư viện đi là vừa, nó hỗ trợ tốt hơn cái mình làm ~ !! )
    -> ý mihf muốn nói là mình thích có thể thoải mái style theo ý mình ở mức tùy biến cao nhất mà code không quá phức tạp và mình tìm thấy điều đó ở web, chắc chắn tùy biến cao hơn nữa thì code các thằng như C# còn khủng hơn và nhẹ hơn nhưng chắn chắn là hiện tại vẫn chưa có đủ trình T_T

    App mình làm chủ yếu là GET, POST thôi , nếu không cần truy cập các tập tin trong ổ cứng thì chắc bây h nó chỉ là 1 app chrome mà thôi ~



  • mình nghĩ do bạn làm tốt web nên thấy tùy chỉnh style trong web dễ nhất đó, còn với mỗi nền tảng nó đều có điểm mạnh và yếu riêng. Mình thì thấy là web rất dễ tùy chỉnh style nhưng vấn đề là làm sao tổ chức nó hợp lý gọn gàng và dễ tùy biến khi app lớn lên nữa. Có thể do phần frontend mình yếu nên vẫn ngại làm style :P



  • @phamhongphuc đã nói trong [Thảo luận] Liệu có nên build desktop app với Nodejs hay không?:

    mình muốn xác địn

    App slack cho desktop viết trên Electron. Nó phù hợp kiểu web apps. Khi đã có web app rồi bạn buil bản desktop để giúp người dùng có trải nghiệm tốt hơn. Nó cơ bản là thế.

    Bọn mình cũng mới viết xong dựa trên Electron này, đang Beta bạn thử nhé: https://subiz.com/vi/download.html


  • Sailor

    @mrokay Cái này làm bằng Electron à, hay thế. Giống y chang web ấy.



  • @katanhich đúng vậy, bản thân nó là web app, đem lại trải nghiệm mới cho người dung thôi.


Log in to reply