Catberry fue desarrollado para ayudar a crear aplicaciones web "isomórficas/universales".
En pocas palabras, las aplicaciones isomórficas/universales son aplicaciones que usan la misma base de código tanto en los entornos del servidor como del cliente para representar lo que el cliente vería como una "aplicación de una sola página".
Instale Catberry CLI usando el siguiente comando:
npm install -g catberry-cliUse Catberry CLI para crear un proyecto vacío con soporte de manillares como este:
catberry init empty-handlebarsO una aplicación de ejemplo que funciona usando la API GitHub:
catberry init exampleAdemás, puede obtener una lista de todas las plantillas:
catberry init ? Para obtener más detalles, proceda a la documentación de Catberry.
'use strict' ;
class CoolComponent {
/**
* Creates a new instance of the "CoolComponent" component.
* @param {ServiceLocator} locator The service locator for resolving dependencies.
*/
constructor ( locator ) {
// you can resolve any dependency from the locator.
}
/**
* Gets data for the template.
* This method is optional.
* @returns {Promise<Object>|Object|null|undefined} Data for the template.
*/
render ( ) {
return this . $context . getStoreData ( ) ;
}
/**
* Returns event binding settings for the component.
* This method is optional.
* @returns {Promise<Object>|Object|null|undefined} Binding settings.
*/
bind ( ) {
return {
// CSS selector
'.clickable' : ( ) => window . alert ( 'Ouch!' ) ;
}
}
/**
* Cleans up everything that has NOT been set by .bind() method.
* This method is optional.
* @returns {Promise|undefined} Promise of nothing.
*/
unbind ( ) {
// nothing to do here we have used bind properly
}
}
module . exports = Some ;El componente se usa como una etiqueta personalizada:
< cat-cool id =" unique-value " cat-store =" group/CoolStore " > </ cat-cool > 'use strict' ;
class CoolStore {
/**
* Creates a new instance of the "CoolStore" store.
* @param {ServiceLocator} locator The service locator for resolving dependencies.
*/
constructor ( locator ) {
/**
* Current universal HTTP request for environment-independent requests.
* @type {UHR}
* @private
*/
this . _uhr = locator . resolve ( 'uhr' ) ;
/**
* Current lifetime of data (in milliseconds) that is returned by this store.
* @type {number} Lifetime in milliseconds.
*/
this . $lifetime = 60000 ;
}
/**
* Loads data from a remote source.
* @returns {Promise<Object>|Object|null|undefined} Loaded data.
*/
load ( ) {
// Here you can do any HTTP requests using this._uhr.
// Please read details here https://github.com/catberry/catberry-uhr.
}
/**
* Handles an action named "some-action" from any component or store.
* @returns {Promise<Object>|Object|null|undefined} Response to the component/store.
*/
handleSomeAction ( ) {
// Here you can call this.$context.changed() if you're sure'
// that the remote data on the server has been changed.
// You can additionally have many handle methods for other actions.
} ;
}
module . exports = Some ; Si bien Catberry es capaz de representar páginas para cualquier navegador en el servidor, debido al uso de ciertas características de HTML5, como la API del historial, solo es posible el soporte parcial de los navegadores antiguos para la aplicación JavaScript del lado del cliente.
El objetivo principal del marco de Catberry es utilizar toda la potencia de las nuevas tecnologías y proporcionar a un usuario la mejor experiencia posible.
De hecho, un usuario obtiene una página HTML del servidor solo una y todo el resto del tiempo que toda la página está cambiando en un navegador que recibe solo datos puros de los servicios API utilizados con la aplicación.
Gracias al motor de renderizado progresivo de Catberry, el usuario recibe una página del componente del servidor por componente tan rápido como cada componente hace que su plantilla no esté esperando que toda la página esté construida.
Catberry admite 2 últimas versiones de los navegadores modernos e IE 11. Depende del preajuste de Babel Babel-Preset-Env que configuración puede anular colocar un archivo .babelrc en su proyecto.
Hay muchas maneras de contribuir a Catberry:
Denis Rechkunov [email protected]