joi is a public domain (free, no strings attached) Javascript framework.
Downloadjoi is not just another JavaScript library. It's a JavaScript framework for developing robust web applications which are quick to implement and easy to maintain. joi emphasizes structure, ease of use, readability, and flexibility.
JavaScript is a really fun language to use, and we're just riding the wave. The example below shows some of the capabilities of joi's effects engine.
This is an element with id "demoA".
For browsers which don't support CSS3 transitions, the transition effect is accomplished by joi's effects engine, which is able to apply effects to many styles based on size and color. When available, CSS3 transitions will be used instead for improved performance.
joi provides a lot of common, prewritten functions, methods, and construtors so that you don't have to write as much code to get things done. In this area, joi feels a kindred spirit to Scala, a Java-derivative language.
One of our goals for the future of joi is to continue to provide more helper methods to fit a wide range of different situations, just to make your life easier. We strive to provide whatever methods we can, and let you find a use for the ones you want.
In this way, joi enables you to rapidly develop rich JavaScript applications, and you don't have to worry about the headache of incompatibility between browsers.
One of the intentions in the design of joi was to build on the JavaScript language, not reinvent it. Some libraries try to turn JavaScript into something it's not, twisting it to behave like other languages such as Java or ruby. joi preserves the dynamic, prototype-based nature of JavaScript, while allowing for cleaner, more organized syntax for inheritance and delegation. The following code shows some of the features of joi's object inheritance model:
One advantage of joi is its high degree of organization. joi encourages good programming practices through its object model and syntax.
Each object has a well defined and distinct ancestry. For instance, a div will inherit from the following constructors:
joi.Html.Elements.Div joi.Html.Elements.ContainerElement joi.Html.Elements.Element joi.Html.Elements.Node joi.Html.Elements.DomUnit joi.Html.Elements.Unit
This also means elements can easily be extended by adding more functionality to one of the constructors in its ancestry. Since these constructors are provided by joi, extending them doesn't carry the same drawbacks as extending the native JavaScript or DOM constructors.