Recently, the first release of a new and promising open source JavaScript framework "DAAJS" was released. It may be interesting to front-end developers as a base for creating web and mobile applications.

The framework ideology is based on class-oriented and event-driven approaches. All functionality is implemented in the form of classes. View classes based on templates and algorithms generate components of the user interface and encapsulate the behavior directly related to them (such as expanding the branches of the tree lists, expanding menu items, moving items, etc.). The event mechanism serves to organize both user interaction with interfaces — at the class level, rather than individual DOM elements — and for implementing complex behavior that requires the participation of multiple methods or other classes. Any events within the framework are presented in a single, unified format.
')
The framework implements its own class model that supports multiple inheritance and other interesting technological and syntactic mechanisms. Framework classes do not depend on the platform and can be executed with equal success both on the client side, in the browser, and on the server side under Node.js. That, in the perspective of the development of Node.js and its support by hosters as a server platform, opens up the possibility of using the same code for the client and server parts of projects. Apart from the fact that the code of DAAJS classes, which uses a minimum of JavaScript-specific features and tricks, is fairly easily mapped to programming languages ​​that currently prevail as tools for back-end development.
The framework offers a standard for describing user interfaces, based on JSON, natively understood by JavaScript and no less easily understood by other software tools. That allows using the same descriptors for generating HTML on the server and on the client - as well as for dynamic rebuilding of interfaces in AJAX and SPA projects. Descriptors are tree-like lists of view classes with parameters that allow you to customize the final views in a wide range, including, of course, binding to data models and specialized event handlers. In addition, the framework supports its own simple “JSON markup language” (DAA-script), providing “syntactic sugar” for creating complexly structured JSON descriptors.
DAAJS is an MVC framework and, in addition to tools for working with views and events, provides a number of tools and patterns for working with data models. Unlike a number of other frameworks, DAAJS proposes using a single model space and access to models using direct addressing (interface "paths") and an SQL-like query language, which allows in a certain sense to identify this model space with its own mini database on the client side, "living", however, only as long as the user remains on the web page. Moreover, this space includes not only the models of the final displayed data, but also the models of the interfaces themselves, obtained from JSON descriptors. This is especially useful for Single Page Applications, but can be widely used in multi-page projects loaded with serious interactivity.
Much attention in DAAJS is also given to working with complexly structured models, mainly with “trees” and “tree tables”. The framework tools allow you to add, insert, delete, move tree elements, sort the “tables” across multiple fields using, again, an SQL-like syntax. The DAAJS approach is aimed at maximizing the unification of working with models between the server and client sides.
The ideology of building interfaces using view classes and the unification of descriptors implies a wide use and flexible customization of CSS. To achieve unification, DAAJS implements the “Runtime CSS auto-prefixing” mechanism, in other words, based on CSS declarations conforming to CSS standards, automatically selects working properties and values ​​with “vendor prefixes” if the current browser does not support standard CSS properties directly. This mechanism allows you to both assign DOM elements “inline” CSS properties, and define and override CSS rules on the fly, without worrying about the problems of browsers supporting properties (unless, of course, we are talking about very ancient instances).
The current version of the framework is the first “public beta”. He has yet to go through several important steps to finalize, debug, and publish a number of classes that are still being finalized. In particular, in the upcoming versions, classes for working with dates and time, with animation, with “forms”, with asynchronous HTTP requests and much more will appear or be expanded. Also, the documentation will be constantly expanded and supplemented, a translation of all documentation into Russian is being prepared (at the moment it is available only in English).
More information, documentation, links to download and install the framework using NPM is available on the official project website:
daajs.orgI invite those interested in testing, cooperation and, of course, communication!