Today we’re super excited to announce DoneJS 1.0, the complete and integrated solution to building high-performance, real-time web, mobile, and desktop applications. DoneJS covers every client-side feature you need to get a production-worthy application off the ground, whether you’re building a web application, a mobile app with Cordova, or a desktop app with Electron or NW.js.
At Bitovi, we’ve used DoneJS on projects for companies like HaulHound, Levi’s, Lowe’s, and more! Companies outside of Bitovi have used the DoneJS libraries to ship apps used by millions of people. Originally called JavaScriptMVC, DoneJS has a decade-long history of helping developers like you build maintainable high-performance, real-time web, mobile, and desktop applications.
DoneJS 1 includes CanJS 3, a collection of front-end libraries that make building innovative yet maintainable web apps simple. It also includes StealJS 1, a module loader and bundler that makes developing modular code a breeze.
Read more below on the new changes we’ve introduced in CanJS 3 and StealJS 1, as well as some other exciting new changes we’ve shipped since DoneJS 0.9 last year.
New in CanJS 3
When we announced CanJS 3 in December, we talked about our new focus on making future upgrades easier, improving the longevity of your code, and embracing experimentation and outside tools.
We also highlighted a few new awesome features:
- Real-time support in can-connect, our data model layer
- Observables that are faster, use regular dot notation instead of
.attr()
, throw errors if you set an undefined property, and make using event streams possible - Converters that make two-way bindings easier in templates
Since December, we’ve been executing on our mission to embrace experimentation by publishing five new minor versions of CanJS 3, which have included:
- can-connect-feathers, the best front-end integration for any FeathersJS backend
- can-connect-signalr, an easy way to add real-time data to your .NET application
- New validation libraries, which make it straightforward to validate data and process validation errors
In addition to all the great features listed above, CanJS 3 embraces independent repositories to make upgrading apps even easier in the future and encourage innovation within the ecosystem.
New in StealJS 1
StealJS is the module loader and bundler that makes it cheap and easy to do the right thing. Doing the right thing, when building for the web, includes things such as writing tests and breaking your applications into smaller mini-applications (modlets) that can be composed together.
The introduction of StealJS 1.0 brought a few changes:
- The steal-conditional package for conditionally loading modules, which is useful for polyfills, internationalization, and loading fixtures only in dev mode
- A new “plugins” configuration for more modular and faster loading
- The use of npm 3+ by default
Since StealJS 1.0, we’ve improved StealJS in a bunch of other ways:
- Support for using any built-in Babel plugins and presets
- Support for creating bundles of your dependencies to speed up development load times
- Built-in cache busting for specifying a cache version of your application to be used as a query parameter
Upgrading from StealJS 0.16 to StealJS 1.x is so easy that I wrote a blog post that covered how to upgrade any Angular, CanJS, jQuery, React, or Vue app to StealJS 1.
New in DoneJS 1
The biggest changes to DoneJS 1 are related to using CanJS 3 and StealJS 1, but a few other improvements have been made to the packages that glue the DoneJS libraries together.
First, we’ve added Electron support! Both the Quick Start Guide and the In-Depth Guide cover how to add Electron to a DoneJS app and build for it, which is as simple as:
donejs add electron
donejs build electron
Note: DoneJS 1.0 still supports NW.js; Electron is just a new option!
Second, we’ve made a huge speed improvement to done-ssr, which results in 2.5x more requests being served per second compare to previous versions, especially when used in conjunction with .component
files.
Third, we’ve fixed the plugin generator to include the dist
folder when a plugin is published to npm. We’ve also added CONTRIBUTING.md
files to the generator and plugin generators, which include all of the instructions for you or new contributors to develop the project locally. Last but not least, plugins are now generated with an index.html
page with some useful information:
Get started today
If you already have a DoneJS 0.9 app, the migration guide will walk you through the process of upgrading your app to CanJS 3.x, StealJS 1.x, and the latest versions of the DoneJS packages.
If you’re new to DoneJS, check out the Quick Start Guide to learn how to build a real-time chat application with DoneJS. In the guide, you’ll also learn how easy it is to use Firebase as a CDN for your app and make native desktop and mobile apps with Cordova and Electron.
We’ve successfully used DoneJS 1 on our projects and we’re excited for you to do the same. The core team wants to help you whether you’re new to DoneJS or you’re upgrading an existing app. If you have any questions or need any help, please reach out to us on Gitter chat or our forums!