Invisible.js — одни модели и на клиенте и на сервере

от автора

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/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *