What is the best alternative to Marko Widgets?
Here’s the Deal
Slant is powered by a community that helps you make informed decisions. Tell us what you’re passionate about to get your personalized feed and help others.
Pro Functional
Functional approach.
Pro Server side rendering
Deku can render it's components and data server side, then it sends those components as HTML to the browser. This ensures faster initial loading time and SEO friendliness out of the box, since it's indexed as any other static website by search engines.
Pro Easy to learn
Since Deku is very lightweight and has a rather small API, there's not much to learn. It's pretty easy to get started and build something with it.
Con No support for legacy browsers
Deku does not support legacy browsers, or relatively old browsers for that matter. They only support the latest versions of the major web browsers.
Con Not a lot of learning resources
Since it's a rather new library and has a small community, there are not many examples where you can learn from out there. There are also few guides and the documentation is not amazing and has some parts that should be covered better.
Pro Minimal DOM operations
Riot takes the expressions from a DOM tree and stores them in an array. Each of these expressions points to a DOM node. On each cycle these expressions are compared to the values in the DOM. So when a value has changed, Riot automatically updates the corresponding node. This way the operations are...
Pro Lightweight
Riot is made to be used with websites of any kind, so it's built to be easy and lightweight, but still maintaining all the needed features for a UI library. It's only 2.5 KB in size when minified. So it can also be used for mobile web apps without requiring much bandwidth to download.
Pro Components use familiar HTML tags
Riot components use custom tags which are nothing more than familiar HTML tags coupled with JavaScript. This eliminates the need to learn another templating language or syntax. For example: <todo> <h3>TODO</h3><ul>
<li each={ item, i in items }>{ item }</li...
Pro Based on web components
Web Components are a collection of specifications released by W3C as a way to reduce the complexity of web apps by creating reusable components. Browser support is currently poor for web components, however Polymer is developed to make web components compatible with modern browsers.
Pro Various basic components
It provides a base component.
Pro HTML markup is not string
HTML markup as it can be a non-string.
Con No server-side rendering
Polymer does not support server-side rendering. This results in higher loading times, more HTTP requests and it's not very SEO friendly, since search engines have no way of indexing a page if it's not rendered in the server.
Pro Can be used with any front-end stack
Vue can easily be integrated with other front-end libraries. This makes it an extremely versatile tool and it's easy to fix its shortcomings or missing features by just plugging in another library.
Pro Lightweight
Vue.js weighs in at 16kb min+gzip.
Pro Single file component
Very useful.
Pro Small footprint
Blocks.js is just 16.5KB minified and gzipped. So it's pretty small.
Pro Modular structure
Apps developed with blocks.js are modular in structure and make use of reusable objects. This makes these applications very maintainable.
Con Relatively new
Blocks.js is a relatively new library. It doesn't have much support and there re not many people who use it. So if you run into any problems it would be hard to get solutions.
Pro Lots of components/widgets
Library contains UI components like Datagrids, Forms, Tabs, SideBars, Toolbars and more
Pro Small library size
Only two files need to be included 1 .css and 1 .js, together they are only 365 kb. regarding to amount of components it is very small.
Pro Easy and clean API
any component is well documented and have an easy api to access validation, dataloading and handling user events.

Pro Pretty light-weight
Inferno weighs in at 9kb gzipped, which is light-weight.

Pro Fast performance
Inferno is one of the fastest UI libraries around and widely considered the fastest.

Pro Modular
Use it however you want in a framework of your own custom design. When things change in the industry, swap things out instead of being locked in by someone else's design.
Con Some React components may not work with Inferno
Inferno and React have different public and private APIs. If 3rd party components use a private API then it's almost certainly going to break when you use it with Inferno. Once React Fiber is implemented, even libraries that are currently working will break and will not be supported by Infern...

Con Not very popular
Which can hinder one's opinion of its future, but the future of all "frameworks" is to break things into smaller pieces, so inferno very well might get used by the big names in the future.
Pro Extremely simple to implement.
To get started is extremely simple. It has a low learning curve.
Pro Seems to be quite stable
Even the most complicated GUIs are bug-free most of the time.
Pro Great support from the webix team
The company behind webix is really quick in answering any questions you have on their forum or via email.
Con Not modular
The library is not modular (except for some additional more complex widgets). If you only need a few widgets, you still need to include the entire library.
Con Commercial license
It's not free for commercial applications.
Con Not very popular
Not really a reason to not recommend it. But it has still a small user base. It deserves a lot more attention.
Pro Easy data binding
Knockout uses HTML5 data attributes to bind HTML elements to data objects in javascript. This allows more work to be done by the framework rather than requiring you to specify where data should be bound in the javascript. The data binding is very intuitive as the bindings are done within the HTML i...
Pro Easy to learn
Has a low entry barrier and an easy learning curve. It's especially easy to learn for beginners.
Pro Built in templating
Bindings in Knockout can also be used to control the generated structure of the HTML. There are bindings provided to allow for iteration and conditionals. The structure of the html reflects the structure of the data so iterative elements are bound to arrays in the data model. Having the HTML struct...
Con Seems to be dead
KO has been stuck at version 3.4 for a long time, and there's not a lot of community activity.
Con Can become complex once the application grows large
Knockout leaves the application structure to the developer and it can become quite complex and unmanageable in the hands of a beginner once the application grows large and complex.
Con Two way binding requires a little extra work
When allowing users to edit existing data, the two-way binding of observables means you'll need to have to save original values before they're edited, to make comparisons or revert if the user cancels the action.
Pro Out of the box Typescript support
Full support for Typescript built in
Pro Conventions over configurations
Configured to give you the most common use cases by convention, which means you only need to change the default configuration for edge cases. This means that for normal cases far less boiler plate code has to be written.
Pro Out of the box ES6 support
Aurelia includes native support for ES6 and even comes with a Gulpfile which helps with transpiling ES6 code to ES5.
Con No big success stories yet
There are no notable big web products build with aurelia yet
Con Needs more support from the community
It would be great to have a lot of plugins made by the community, or video tutorials from experiences when using it. Hopefully in the near term future.
Con Two-way data binding is often considered an anti-pattern
Two-way data-binding means that a HTML element in the view and an Angular model are binded, and when one of them is changed so is the other. One-way data-binding for example does not change the model when the HTML element is changed. This is a rather controversial subject and many developers consi...
Pro Lightweight
The size when gzipped is only 3kb, and performance is as good as (or even faster than) React itself.
Pro Same API as react
Avoids having to learn an entire new paradigm, and makes it easy to switch between the two libraries later on.
Pro Awesome CLI
Preact CLI gives you a perfect scoring PWA out-of-the-box with no configuration.
Con Difficult to learn
You need to be good in React JS first to learn Preact. Documentation is not rich. And some of the examples given on site are not working. Developers are not much active on Stack Overflow as well.
Pro Easy to reuse components
Since every single UI component is created independently in JavaScript, it becomes very easy to reuse them throughout your app without having to re-write them.
Pro Server side rendering
React can render it's components and data server side, then it sends those components as HTML to the browser. This ensures faster initial loading time and SEO friendliness out of the box, since it's indexed as any other static website by search engines.
Pro Virtual DOM support
Instead of relying on the DOM, React implements a virtual DOM from scratch, allowing it to calculate precisely what needs to be patched during the next screen refresh. This is orders of magnitude faster than fiddling with the DOM itself.
Con Heavy on memory
React's virtual DOM is fast, but it requires storing elements in the virtual and real DOM increasing memory usage for the page. This can be a real problem for single-page webapps designed to be left running in the background.
Con Verbose
React gets a little verbose as applications get more complicated with more components. It's simply not as straightforward as simply writing HTML and JavaScript would be.
Con Large file size
React's react.min.js is 145.5KB in size. It's much larger than some other libraries that offer roughly the same features and it's almost the same size as some MV* frameworks such as Angular or Ember that offer more features out of the box. Although, it should be mentioned that sometim...
Pro Great browser support
CanJS supports all modern browsers and IE9+.
Pro CanJS can be used with any other library
CanJS is a collection of individual libraries, each separately available as npm packages. It's easy to use just what you need.
Pro Real time support
CanJS's model layer (can-connect), support real-time updates to lists without adding any additional code.

Pro Small, easy to learn API
Most other frameworks either offer a huge API to deal with model and view synchronization, or defer to other libraries & plugins to cater for relatively simple use cases. Mithril's API is tiny but complete. The natural reaction is to assume something is missing, but as you build you realise...

Pro Fast rendering
Mithril's loading times are very fast. This is because it's templates are compiled first and then served to the browser and because it uses a virtual DOM. The virtual DOM is a virtual tree containing all the nodes of the real DOM, every time anything changes in the virtual DOM, Mithril does...

Pro No need to learn another syntax to write views
Most MVC frameworks use HTML templates to render their views. They are good and useful because they are easy to read and understand. But they add more complication to an app because it's practically a new language and syntax that needs to be learned. Mithril argues that separating markup from...
Con Small API can make it unsuitable for larger more complex projects
Mithril's small API and small number of functions while helpful for small projects and applications where speed is needed, can add another layer of complexity in larger more complex applications where a more extensive API is needed out of the box.
Pro Makes it possible to handle user interaction in a readable, declarative fashion
Ractive has a concept of proxy events, which translate a user action (e.g. a mouseclick) defined via an event directive into an intention (e.g. 'select this option'). This allows you to handle user interaction in a readable, declarative fashion. on-click='activate' with arguments:
Pro Two-way binding configuration
Two-way binding can be turned off by those that are concerned it may be a source of bugs.
Pro Step by step tutorial
They have a great interactive tutorial which makes the learning process easy peasy. You will get into it within a couple of minutes.
Con Ractive's two way binding can be a source of bugs
Two-way data-binding means that a HTML element in the view and an Ractive model are binded, and when one of them is changed so is the other. One-way data-binding for example does not change the model when the HTML element is changed. This is a rather controversial subject and many developers consi...
Pro One-to-one JS equivalent
Amber is written in itself, including the parser and compiler, and compiles into efficient JavaScript, mapping one-to-one with the JS equivalent.
Pro Includes an IDE
Amber includes an integrated development environment with a class browser, workspace, transcript, object inspector and debugger.
Con Very few learning resources
There are very little learning resources for Amber outside the official documentation. Which may not be enough for beginners, especially people that don't have much experience in programming.
Pro Gives you the freedom to implement views however you want
A lightweight view class is provided but there is no default templating method implemented. Because views are minimal it allows for much more freedom to implement views however you would like, and because of this freedom it's possible to write views to more uniquely adapt to a problem. User in...
Pro Can be combined with any library you want
Backbone can be combined with any library of your choosing, giving you the ultimate flexibility in creating customized solutions for unique projects. Even the only two backbone requirements, jQuery and underscore can be replaced with equivalent libraries like zepto or lo-dash.
Pro Large community
Backbone has existed longer than most frameworks, and has a large following of users and projects using it as a framework.
Con Requires more coding compared to other frameworks
Because many features are not provided out of the box, you either have to write more base class code to get those features, or find a plugin that provides them in a way you like. It does not provide much structure either, things like memory management must be kept in mind by the developer, also t...
Con Can easily lead you to spaghetti code
Heavy event-binding can lead to unmanageable spaghetti mess. BB tempts users to overuse it for no reason.
Con No data binding
Backbone does not have data binding support. However, there are some libraries that can be implemented in order to have data binding in Backbone. Such as Epoxy
Pro No run-time exceptions
Lack of run-time exceptions makes it easy to produce large swathes of reliable front-end code without drowning in tests.
Pro Designed around high-level front-end development
As Elm was designed as a front-end langauge, it has out of the box support for things like DOM-element creation, letting programmers focus on their application logic, rather than implementation details specific to the web.

Pro Inferred static typing
ML static typing is great because it's always there, you just choose how explicit you want to be and how much you want the compiler to do.
Con Poor Windows support
Few if any of Elm's core contributors are Windows users and breaking bugs are sometimes left for weeks or months.
Con Adds an additional layer of abstraction
Some users claim that Elm adds an additional layer of abstraction, meaning that it is one more hurdle between the brain and the product.
Con Not database-friendly
It is lots of work to make a server or database your "one source of truth", as Elm makes you write endless JSON parse boilerplate to talk to the server.
Pro Live, reactive templating
Ractive.js is a template-driven UI library, but unlike other tools that generate inert HTML, it transforms your templates into blueprints for apps that are interactive by default.
Pro Powerful and extensible
Two-way binding, animations, SVG support and more are provided out-of-the-box – but you can add whatever functionality you need by downloading and creating plugins.
Pro Supports a true templating language
Ractive fully supports a templating language. To be more precise, views are written with a variant of Mustache, which is also extended to support inline JavaScript expressions. Soon it will be able to support other templating languages.
Con Ractive's two way binding can be a source of bugs
Two-way data-binding means that a HTML element in the view and an Ractive model are binded, and when one of them is changed so is the other. One-way data-binding for example does not change the model when the HTML element is changed. This is a rather controversial subject and many developers consi...
Help millions of people make better decisions.
Each month, over 1.7 million people use Slant to find the best products and share their knowledge. Pick the tags you’re passionate about to get a personalized feed and begin contributing your knowledge.