Код (Javascript): // @var root link var __root__ = 'http://matronet.com'; /* * * Ajax request * */ function router (uri, dataType, dataArray, callable) { $.ajax({ type: 'POST', url: __root__+uri, data: dataArray, dataType: dataType, success: function(data) { callable(); }, error: function(xhr, str){ alert('Возникла ошибка: ' + xhr.responseCode); } }); } /* * form validate * * */ var $validForm = function () { this.fields = {}; this.message = {}; this.dataArray = null; this.uri = null; this.type = null; this.success = ''; this.error = ''; this.callable = function (callable) { callable(); }; this.router = function (idForm) { $('#idForm').validate({ onKeyup : true, eachValidField : function() { $(this).removeClass(this.error).addClass(this.success); }, eachInvalidField : function() { $(this).removeClass(this.success).addClass(this.error); }, validClass: this.success, errorClass: this.error, rules: this.fields, messages: this.message, submitHandler: function(form) { if(this.uri === null) { this.uri = $(form).data('action'); } if (this.type === null) { this.type = $(form).data('type'); } if (this.dataArray === null) { this.dataArray = $(form).serialize(); } router(this.uri, this.type, this.dataArray, this.callable()) } }); } };
@denis01 Пока нет это я под конец рабочего дня написал. Завтра что нибудь придумаю дам ссылку. --- Добавлено --- @TeslaFeo нет пока не могу. Там не соц сеть это я так обозвал, там очень масштабный проект, включая сой сеть со своим движком. Больше сказать не могу. Сори. Связаны и рот, и руки. --- Добавлено --- Чёрт грубая ошибка, ))) Вот так : Код (Javascript): $('#'+idForm)
Обертка обертки нативного функционала, написанного на обертке целого языка, при том, что нативный функционал как таковой в обертке не нуждается, но был обернут, потому что парадигма автора JQuery - "все, что может быть обернуто, должно быть обернуто"? Окей. Следующим шагом будет написание обертки для твоей обертки.
всгда делаю Код (Javascript): var self = this; в самом начале а то потом this этот везде разный, запаривает следить. А так точно знаешь, что в self сидит сам экземпляр класса. --- Добавлено --- соцсеть это у меня у него Спойлер: внимание не скажу что --- Добавлено --- во! у меня есть такая. я от неё тащусь. очень клёво вышло.
@igordata вот например https://universal.angular.io/, для поисковых систем и т.д. думаю удобно включать если клиент не поддерживает javascript или что-то в этом роде
Ну его нахер, они его перепиливают от версии к версии. Реакт наше всё - просто, быстро и не требует тотальной переделки фронта.
Я однажды столкнулся с проектом, где фронт был на бэкбоне, а бэк - на ларке. Верстка вся дублировалась и там и там, в лучшем случае. Бывало, что один и тот же блок был сверстан в четырех местах и выбирался адской логикой индуса, что это сочинил совершенно случайным образом. Т.е. одна и та же страница могла отрендерить верстку из фронта, а потом из бэка, а потом подтянуть с другого роута хтмл аяксом. Короче, с тех пор я не люблю бэкбон и тех кто на нем пишет ))
Короче я тестировал обёртку. И она не работает по этому алгоритму. И я его переделал: Код (Javascript): var __root__ = 'http://lib.com'; // Вымышленный /* * * Ajax request * */ function router (uri, dataType, dataArray, callable) { console.log(dataArray); $.ajax({ type: 'POST', url: __root__+uri, data: dataArray, dataType: dataType, success: function(data) { callable(data); }, error: function(xhr, str){ alert('Возникла ошибка: ' + xhr.responseCode); } }); } /* * form validate * */ // instructions function $validForm () { this.fields = {}; this.message = {}; this.success = ''; this.error = ''; } // start validate and router; $validForm.prototype.router = function (idForm, data) { $('#'+idForm).validate({ onKeyup : true, eachValidField : function() { $(this).removeClass(this.error).addClass(this.success); }, eachInvalidField : function() { $(this).removeClass(this.success).addClass(this.error); }, validClass: this.success, errorClass: this.error, rules: this.fields, messages: this.message, submitHandler: function(form, e) { router(data.uri, data.dataType, data.dataArray(), data.callable) } }); }; А вот пример работы: Код (Javascript): <script> var FormLogin = new $validForm(); // Валидация FormLogin.fields = { // simple rule, converted to {required:true} site: "required", // compound rule email: { required: true, email: true } }; FormLogin.message = { site: { required: "Имя сайта не может быть пустым" }, email: { required: "Не правильно заполнен email", email: "Не правильно заполнен email" } }; FormLogin.success = "success"; FormLogin.error = "error"; // Отправка пост запроса FormLogin.router('login', { uri: '/admin/login', dataType: 'json', dataArray: function() { return $('form').serialize() }, callable: function (data) { console.log(data); } }); </script>
Дисклеймер: в продакшене, так что бы с легаси и нагрузками опыта нет ) Сейчас юзаю монгу в связке с нодой, нагрузка не то что бы большая, десяток-другой тысяч записей время от времени туда-сюда гоняется. В целом полет нормальный, если про индексы не забыть всё проходит шустро, в т.ч. полнотекстовый поиск. Короче, если не требуется связей между данными, с хитрыми джоинами и прочим, а нужно просто хранить-выбирать-изменять без лишних заморочек, то монга довольно таки удобна. vue не юзал, мну пока react`а хватает.