What are the functional differences between NW.js, Brackets

Now that TideSDK is effectively dead, I've been looking into alternative 'wrappers' to run HTML/CSS/JS applications as stand-alone desktop applications. The three viable options I have run across so far, are NW.js (formerly node-webkit), brackets-shell, and Electron (formerly atom-shell).

The problem is that there does not appear to be a sufficiently complete comparison between the three in terms of feature set, compatibility, etc. I'm hoping to turn this into a more-or-less canonical thread on the (objective) differences between the three, in particular regarding:

  • Platform support ; operating systems, dependencies, etc.
  • Language feature support , as far as HTML5, CSS3 and JavaScript are concerned. Think things like "does HTML5 video work, and if yes, what codecs are available?"
  • Non-standard extra features , such as tray icons, popup notifications, and OS-rendered menu bars.
  • Extensibility ; eg. ability to 'plug in' native code, talk to Node.js, and so on.
  • Architecture ; in particular the architectural differences that affect daily usage as a developer.
  • Debugging ; included development tools, compatibility with commonly used tools like node-inspector , etc.
  • ... and so on.
  • What are the objective, technical differences that matter when making a choice between them as an application developer?


    I did similar research about two months ago, and in the end I went with node-webkit. The biggest upside on node-webkit is node.js and npm. The package management of npm is really nice, and node has well done filesystem access.

    Brackets-shell looked interesting, but other than a nice IDE I didn't really get what made this one as good or better than the rest. They are very clear that "The brackets-shell is only maintained for use by the Brackets project ", that screams run away to me.

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

    Atom-shell seems to be recently active, but it seems much like brackets in that they are really writing and editor/IDE that just happens to be attached to a webkit runtime. It also is built on top of node.js. This one has the downside of being difficult to search for stuff online without being reminded of your middle school chemistry.

    I really don't want an new editor, and most programmers have their favorite already. For the actual application development, they pretty much work the same, and should, since they all use webkit. You basically write 90-95% of it like a website, and then deal with the native parts, and some config.

    These things are true for all three of them platforms - runs on Windows, Mac, and Linux language support - HTML5, CSS3 and Javascript : since they run javascript you can download and run nearly any library/framework that you want.

    The big caveat on webkit is codec support. Typically you will have problems with non-free video codecs, unless you rebuild the dll/so to support them. For example the shipped node-webkit won't play mp4 video.


    I've been playing with Atom-Shell over the last few days, and I am loving it so far.

    The best part about it is that it's backed by GitHub.. which should allow you to settle into the platform for the long term, especially if it gains a large following. It's also made possible by direct Node.js improvements courtesy of a contract with StrongLoop , who is a major Node.js contributor (they claim to employ more Node.js core developers than any other company, even Joyent).

    I've also found it rather comfortable to get started. It took me about a day to learn the structure and get my first proof of concept running. Very cool.


    Bullet Points:

  • Platform support: Windows, Linux, Mac OSX (More Info Here)
  • Language feature support: HTML5, CSS3, JS via Chromium - so far, zero issues, but I have not tested video specifically.
  • Native Features: Native App Menus, Task Tray Support, Global Hotkeys, Protocol Handler Support (that I've seen so far)
  • Extensibility: Excellent Node.js integration, both the client and server can "require" Node.js modules and natives. I've also successfully tested Bower libraries (incl jQuery) without issue.
  • Architecture: Covered in the other points, but in general its very smooth.

  • Update (11/25/14): I've not yet found use case for Atom-Shell in any official capacity, but I have used it to build a few small apps for my own use, the most complex being an app that pulls my time logs from my PM software and creates Paypal invoices.

    My opinion of the platform remains positive. It's pretty awesome.

    On my time invoicing app I successfully brought in Bootstrap 3's Dashboard Example Template and a few node modules (bluebird, Paypal SDK, Teamwork PM Client) to create a mildly complex app. It took me a few days and does its job well.

    I really cannot think of anything negative to say about Atom-Shell, its solid, stable, fast, and easy to code for. I hope this helps someone.


    Besides fully support Web standards, NW.js supports a list of non-standard features for native app development including:

  • Protect JS source code by compiling them into machine code: https://github.com/nwjs/nw.js/wiki/Protect-JavaScript-source-code-with-v8-snapshot
  • Jailed devtools: https://github.com/nwjs/nw.js/wiki/Devtools-jail-feature
  • Additional security model with which you can do more in DOM: https://github.com/nwjs/nw.js/wiki/Security https://github.com/nwjs/nw.js/wiki/Changes-to-DOM
  • enhanced file dialog: https://github.com/nwjs/nw.js/wiki/File-dialogs
  • kiosk mode: https://github.com/nwjs/nw.js/wiki/The-Kiosk-mode
  • supports for a growing list of chrome.* API, include chrome.webRequest so you can intercept HTTP requests from DOM: https://github.com/nwjs/nw.js/issues/518
  • support for rich notifications, print preview, many more chrome.* APIs, Chrome Apps and other Chromium features starting from 0.13.0-alpha0
  • There is much more to see in the wiki including Menu, Tray, etc.

    链接地址: http://www.djcxy.com/p/66560.html

    上一篇: Android的应用程序与Apache科多瓦

    下一篇: NW.js,Brackets之间的功能差异是什么?