Рубрика: javascript

(Мета) программируем Redux

На авторе документации, справок и обучающих материалов лежит большая ответственность. Страшно подумать, сколько ужасного кода попало в общедоступный пример и пошло гулять по исходникам просто потому, что справку писал стажёр, которого взяли за две недели до релиза. Рассмотрим классическую пару action/reduce в redux. action хронически пишут свой для каждого объекта приложения. Хотя как раз действия…

Прочитать статью целиком

jQuery UI control в React на примере FormBuilder

jQuery UI — симпатичная библиотека. У неё есть недостатки — она тяжелее Boot­strap и довольно старая. Но бывает, что нужный компонент есть только под неё. А у тебя проект на одном из React-фреймворков… Для примера попробуем подключить старый jQuery Form­Builder. Это просто отличный редактор форм. Конечно, есть другие. Есть даже редактор форм под React… но…

Прочитать статью целиком

Динамически создаём React-компоненты

Иногда нужно создавать React-компонент динамически и даже в цикле. Но ren­der(), само собой, не желает выполнять циклы и начинает ругаться. Чтобы создавать компоненты динамически, пишите по этому образцу. В зависимости от фреймворка можно заменить вызов на создание класса и отформатировать arrow-функциями. let Block = React.createClass({ cre­ateIm­age: func­tion (image) { return <Image source={image} key={image} />; },…

Прочитать статью целиком

RegExp в Presto

Opera в своё время прославилась тем, что не поддерживала com­pile() у регулярных выражений. Дело было в движке Presto (которые почему-то не желает их копилировать). И вот случилось — Opera переехала на Blink. Теперь com­pile() поддерживается.… но не в Opera Mini, которая как была на Presto, там так и остаётся.

Показать в JavaScript alert без остановки таймера

Вообще, использовать стандартный JavaScript alert даже для отладки — плохая идея. Для сообщений есть отличные окошки из Boot­strap JS или jQueryUI, для отладочной информации — console.log. Но иногда нужно написать окошко очень-очень быстро. Например, сдать бета-версию приложения, а окошко потом переделать. В браузерах, основанных на WebKit (Chrome, Safari, JavaFX WebEngine) открытый alert считается чрезвычайным событием…

Прочитать статью целиком

Получаем параметры GET из url

Оказывается, все параметры, передаваемые в URL get-запросом. лежат в свойстве location.search. Как-то так: “?foo=boo”. $.extend({ getUrl­Str : func­tion() { //used for unit test return location.search.substr(1); }, getUrl­Vars : func­tion(){ var vars = {}, hash­es = this.getUrlStr(); if(!hashes) return {}; hash­es = hashes.split(‘&’); for(var i = 0, len = hashes.length; i < len; i++) { var…

Прочитать статью целиком

Д. Босуэлл, Т. Фаучер — Читаемый код, или программирование как искусство

Небольшая книжка, в которой много полезных мелочей. Например, более точные варианты названий для типичных функций: send — deliv­er; dis­patch; announce; dis­trib­ute; route find — search; extract; locate;recover start — launch; cre­ate; begin; open make — cre­ate; set­up; build; gen­er­ate; com­pose; new Именованные интераторы для циклов (ui лучше, чем просто i). Дополнительные постфиксы — size_mb, html_utf…

Прочитать статью целиком

Параметры по умолчанию в JavaScript

Загружаем необязательные опции функции из указанных в default_options. Для методов вида doSomething(main_data, options), где options не обязательны. var JsOp­tion­sHelper = (func­tion(){ func­tion doLoadOptions(default_options, options){ var result_options = {}; if(!options) { for(var opt_key in default_options) result_options[opt_key] = default_options[opt_key]; } else { for(var opt_key in default_options) result_options[opt_key] = (options[opt_key] !== unde­fined) ? options[opt_key] : default_options[opt_key]; } return result_options;…

Прочитать статью целиком

JavaScript charset в браузере

Согласно стандарту HTML5, стандартная кодировка страницы — UTF-8. А вот с JavaScript всё сложнее. Пусть у нас есть какой-то JSON. Напишем функцию, которая его возвращает: func­tion getOut­line­J­son() { return { “title” : “Элемент1” }; } Сохраняем в отдельный файл, привязываем через <script>. Пытаемся вывести в консоль: document.addEventListener(‘DOMContentLoaded’, func­tion() { console.log(getOutlineJson()); }); В консоли будет JSON

Прочитать статью целиком

eval в JavaScript

eval в JavaScript с отложенным выполнением: var JsE­val­u­a­tor = (func­tion(){ var errors = { WRONG_SYNTAX : “Синтаксическая ошибка в выражении “%SOURCE%””, NON_SYNTAX : “Ошибка %ERROR_TITLE% при разборе выражения “%SOURCE%”” }; func­tion null_func() { return null; } return { checkedE­val : function(str_to_eval){ if(!str_to_eval) return null_func; var trimmed_str = str_to_eval.trim(); if(!trimmed_str) return null_func; try { var result…

Прочитать статью целиком