Invisible.js — библиотека, позволяющая использовать одни и те же модели данных как на клиенте, так и на сервере. На сервере работает поверх express.js на клиент отдается через browserify.
Что есть:
- возможность один раз описать модель (включая типизацию и валидацию) и использовать ее на клиенте и на сервере,
- связь с MongoDb (при записи на сервере — объект пишется сразу в базу, при записи на клиете, используется RESTful API, автоматически созданное на сервере),
- хуки на изменение данных (события бегают туда-сюда через socket.io).
Описание модели (будет доступно и там и там):
Invisible = require("invisible"); crypto = require("crypto"); _s = require("underscore.string"); function Person(firstName, lastName, email){ this.firstName = firstName; this.lastName = lastName; this.email = email; } Person.prototype.fullName = function(){ return this.firstName + ' ' + this.lastName; } Person.prototype.getAvatarUrl = function(){ cleanMail = _s.trim(this.email).toLowerCase(); hash = crypto.createHash("md5").update(cleanMail).digest("hex"); return "http://www.gravatar.com/avatar/" + hash; } module.exports = Invisible.createModel("Person", Person);
Использование на сервере:
Invisible = require("invisible") john = new Invisible.Person("John", "Doe", "john.doe@mail.com"); john.fullName(); //John Doe
Использование на клиенте:
<script src="invisible.js"></script> <script> jane = new Invisible.Person("Jane", "Doe", "jane.doe@mail.com"); alert(jane.fullName()); //Jane Doe </script>
Подробно можно посмотреть на github-страничке.
ссылка на оригинал статьи http://habrahabr.ru/post/206526/
Добавить комментарий