Dynamic Elements - Core Framework
Dynamic Elements is a JavaScript framework for building modular component-based applications. It can be used for building both web applications or Node.js applications.
- The Core Framework provides the basic building blocks of a Dynamic Elements application.
- The Data Framework builds on the Core Framework for classes to work with business data, including model objects with well-defined data types, and collections.
- The UI Framework provides support for building UI elements for your web applications that can be tied to your business data.
Getting Started
To get started using Core Framework in a Node.js application, you just need to install the dynel-core package and it's dependencies:
npm install dynel-core
Core Framework provides the building blocks for building functional components, using a combination of classical inheritance and composition using mixins.
CoreObject and Classical Inheritance
Dynamic Elements classes are derived from CoreObject. The following example demonstrates how to create a derived class from CoreObject:
var CoreObject = require('dynel-core').CoreObject;
var HelloWorld = CoreObject.extend({
className: 'HelloWorld',
run: function() {
console.log('Hello World!');
}
});
var hello = new HelloWorld();
hello.run();
Mixins and Composition
Dynamic Elements classes support components called mixins, which add state and/or functionality to an object. Mixins are plain old JavaScript objects.
The following example demonstrates how to create a class that is composed of multiple mixins:
var Hello = {
hello: function() {
console.log('Hello ');
}
};
var World = {
world: function() {
console.log('World!');
}
};
var HelloWorld = CoreObject.extend({
className: 'HelloWorld',
mixins: [
Hello,
World
],
run: function() {
this.hello();
this.world();
}
});
var hello = new HelloWorld();
hello.run();
Mixins can also be composed of other mixins:
var Hello = {
hello: function() {
console.log('Hello ');
}
};
var World = {
mixins: [
Hello
],
world: function() {
console.log('World!');
}
};
var HelloWorld = CoreObject.extend({
className: 'HelloWorld',
mixins: [
World
],
run: function() {
this.hello();
this.world();
}
});
var hello = new HelloWorld();
hello.run();
Event Sources
The Core Framework includes a mixin for listening for and emitting events. It is similar to the Node.js EventEmitter, but is designed as a simple mixin that can be added to Dynamic Elements objects.
var EventSource = require('dynel-core').EventSource;
var HelloWorld = CoreObject.extend({
className: 'HelloWorld',
mixins: [
EventSource
],
run: function() {
this.emit('HelloWorld', 'Hello World!');
}
});
var hello = new HelloWorld();
hello.on('HelloWorld', function(data) {
console.log(data);
});
hello.run();