• Стоит ли сейчас учить TypeScript?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    но вторая его версия пишется на TypeScrip


    Какая разница на чем его пишут, если вы можете писать на чем захотите.

    Давайте проясним. TypeScript это ES6/ES7-stage1 + информация о типах. То есть если вы знаете ES6/ES7-stage1 то вы автоматически знаете TypeScript (добавится только информация о типах и некоторые нюансы, но в целом они строго следует стандарту).

    То есть вот это валидный TypeScript:
    class Foo {
        bar = 'default property value';
    
        constructor(untypedArg) {
           this.foobar = untypedArg;
        }
    }


    Одновременно с тем что это валидный TypeScript код это так же валидный код с точки зрения ES (с учетом драфтов находящихся в stage1, вроде пропертей для объектов)

    Это не Dart, который является другим языком. Это надстройка над JS и не более, кроме возможности (опциальной) декларации типов - там ничего больше нет. Но зато для больших проектов эта информация позволяет избавиться от кучи багов.
    Ответ написан
  • Точные таймеры на JavaScript?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    расхождение в браузерах около 20 секунд


    И это нисколечки вас не должно тревожить (что бы понять почему это вообще происходит - почитайте про event loop). Если вам нужно точное время - Date.now(), с точностью до милисекунд.
    Ответ написан
    8 комментариев
  • Как сделать put запрос с api в angular?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    var data = $.param({
                    зфкфьі:  ["apple", "potato"] ,
                   
                });


    что это?

    $http.put('http://*****/mongorest/control/get-menu?'+ data)


    ммм... почему у вас данные в query string ложатся а не в тело запроса? Как смысл тогда PUT запрос делать?

    Насколько я помню у монги нормальное REST api.

    Должно быть как-то так:

    $http.put('/some/url', {
        someKey:  ["apple", "potato"] ,
    }).then(function (response) {
        // не пользуйтесь .success/.error
    }, function (reason) {
        // пользуйтесь только промисами.
    });


    то есть никаких извращений и подоброго. И не пользуйтесь $.params. Вообще. Для query string у angular есть отдельный параметр в конфигурации запросов.

    $http.get('/something', {
        params: {
             query: 'param'
        }
    }
    Ответ написан
    3 комментария
  • Как в backbone приложении загрузить новую html страницу? И организовать архитектуру?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    "Научите меня работать с backbone за 5 минут"

    Ну а если по делу, backbone - это unopinionated фреймворк, если вы его используете, предполагается, что вы знаете ответы на все эти вопросы. Если вы их не знаете, используйте что-то более структурированное.
    Ответ написан
    Комментировать
  • Как сделасть плавный прогресс бар который загружается ровно 1 мин?

    CSS анимацией
    @keyframes progress{
    from{
    width: 0;
    }
    to{
    width: 100%;
    }
    }
    .progressbar:after{
    content: '';
    position: absolute;
    height: 100%;
    animation: progress 60s linear forwards;
    }


    Убрать его можно второй анимацей на самом элементе
    @keyframes hide{
    from{
    opacity: 1;
    }
    to{
    opacity: 0;
    }
    }
    .progressbar{
    animation: hide 100ms 60s ease-in-out;
    }
    Ответ написан
  • Не избыточны ли коментарии?

    Denormalization
    @Denormalization
    Выглядит нормально. Для "совместимости", лучше использовать что-то вроде https://ru.wikipedia.org/wiki/JSDoc
    Чтобы IDE могли нормально распарсить коментарии, и по ним потом можно было сгенерить документацию.
    Ответ написан
    Комментировать
  • Что бы вы сказали если вам такой код дали в поддержку?

    mannaro
    @mannaro Куратор тега JavaScript
    Умею профессионально гуглить
    1. ошибки доставляют. Что такое dock? Корабельный док?
    2. Версия jQuery адски старая. Обновить.
    3. Доки в odt? Серьезно? Даже скачивать не стал.
    4. За отступы в табах я, лично, убиваю. Только 2 пробела. Только хардкор.
    5. Весь css в одном/двух файлах. Серьезно? И без препроцессора? Это ад, ей-богу.
    6. Адовое | количество | ашибок
    7. Названия методов То с Большой буквы, то С Маленькой. жуть в Общем.

    За сим я остановил просмотр кода. Ужс, лично для меня. Я бы с этим работать не стал. Извините.
    Ответ написан
    2 комментария
  • Можно ли в ES6 объединить классы в пространства имён?

    k12th
    @k12th
    console.log(`You're pulling my leg, right?`);
    А что мешает сделать вот так?
    // MyLib.js
    export class Dedka {}
    export class Repka extends Dedka {}
    
    // клиентский код
    import MyLib from './lib/MyLib';
    
    const a = new MyLib.Dedka();
    const c = new MyLib.Repka();


    Другое дело, что смысла в этом, при возможности написать
    import {Dedka, Koshka as Zhoochka} from './lib/MyLib';
    ни на грош. Сергей Протько абсолютно прав, все эти псевдо-«пространства имен» исключительно от отсутствия нормальной модульной системы.
    Ответ написан
    3 комментария
  • Можно ли в ES6 объединить классы в пространства имён?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Но всё это сидит в общем объекте, который играет роль пространства имен. Очень понятно, наглядно, удобно.


    И делают так потому что модулей нет. В ES6 модули есть и нет смысла более делать подобные кастыли. Сравните:

    import L from 'leaflet';
    
    var m = new L.Map();
    
    // и
    import {Map} from 'leaflet';
    
    var m = new Map();


    в целом вам никто не запрещает так делать. Как никак это все всего-лишь обертка над Object.create и старыми добрыми конструкторами.
    Ответ написан
    4 комментария
  • Как вытащить данные из функции?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Никак не вернуть, это асинхронная функция, которая, судя по контексту, еще и выполняется неопределенное количество раз.
    Тут должно быть описание стандартных инструментов решения таких задач - промисов и колбэков, но я задолбался повторять одно и то же несколько раз в день.
    Ответ написан
    Комментировать
  • Что будет с NodeJS с приходом WebAssembly?

    @sergeystepanov1988
    WebAssembly не является заменой JavaScript. Достаточно сказать, что в WebAssembly нет сборщика мусора. С другой стороны WebAssembly не будет конкурировать с JavaScript, они будут работать вместе и в браузере и в ноде.
    WebAssembly разрабатывается для того, чтобы не нагружать JS фишками, которые сделают его слишком сложным языком для веба. Вместо этого, люди которым нужно написать что-то критичное по скорости выполнения просто будут писать это на WebAssembly.
    Ответ написан
    Комментировать
  • Как в js отправить свои данные в форме без аякса?

    Adamos
    @Adamos
    Собственно, данным не дает уйти на сайт эта строчка:
    e.preventDefault();
    Уберите ее - и submit, который выполняется по умолчанию, произойдет после выполнения вашей функции.

    А если вам нужно отправить не те данные, которые были введены в форму - создайте новую форму, влепите в нее input с новыми данными и сделайте ей submit.
    Ответ написан
    Комментировать
  • Как вывести максимальные значения массивов, вложенных в родительский массив?

    Finom
    @Finom
    [[13,27,18,26], [4, 5, 1, 3],[32, 35,37,39],[1000, 1001, 857, 1]].map(function(v) {
      return Math.max.apply(null,v);
    });


    Как написать функцию, думаю, разберетесь.
    Ответ написан
    Комментировать
  • Как можно эмулировать Javascript в PHP скрипте?

    bboytiwst
    @bboytiwst
    Возможно это подойдет
    https://github.com/alwex/php-casperjs
    Ответ написан
    Комментировать
  • Альтернативы MVC(Javascript)?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    MVC - это архитектура, а не шаблон. И архитектура эта присуща именно UI-ным штукам. На сервере просто следует выделять отдельные слои но это не будет чистым MVC.

    MVVM, MVP и т.д. это дальнейшее развитие MVC. По сути чем больше слоев и уже специализация оных - тем меньше связанность кода. Например в Angular связь между контроллером и вьюшкой поддерживает отдельный слой ($scope) - грубо говоря это ViewModel. Ну и т.д.

    Словом... лучше напишите что уже пробовали и чем вас так не устраивает MVC и зачем вы вообще загоняетесь на эту тему?
    Ответ написан
    1 комментарий
  • Как написать свой метод require?

    @dtestyk
    Можете попробовать промисы:
    function load_script_promise(url){
    	return new Promise(function(resolve, reject){
    		var head = document.getElementsByTagName('head')[0]
    		var script = document.createElement('script')
    		script.type = 'text/javascript'
    		script.addEventListener('load', function(){
    			this.removeEventListener('load', arguments.callee)
    			resolve(script)
    		})
    		script.src = url
    		head.appendChild(script);
    	})
    }

    Можно грузить параллельно:
    Promise.all([
      load_script_promise("some1.js"),
      load_script_promise("some2.js")
    ]).then(alert)
    Ответ написан
    Комментировать
  • В каком случае необходимо использовать функцию обертку?

    я ни разу не эксперт в жс, зато я знаю волшебное слово debugger.
    и вот что я думаю.

    в первом случае window.setTimeout( john.say, 1000);
    ты передаешь свойство объекта джон, то бишь функцию, как есть. и внутри нее this будет ни разу не джон, а внезапно window. потому как window вызывает свой метод setTimeout и ему передает некую функцию, которая сама по себе ничего ни про какого джона не слышала.

    а во втором случае дело не в обертке, а в том что ты таки вызываешь эту функцию у джона - во втором случае скобки же стоят после say.

    думаю, правильно будет вот так:
    window.setTimeout(john.say.bind(john), 1000);
    Ответ написан
    Комментировать
  • Почему у PHP такая опулярность?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Это следствие его незаменимости в прошлом.

    Пых появился в нужное время в нужном месте, когда поляна была еще не занята никем.
    А точнее, была занята перлом - утилитой для парсинга текста типа awk, что конечно, совсем недостаточно для написания полноценных приложений. Как следствие, перл как средство веб-разработки был задушен за пару лет, а больше никого и не было - про питон и руби никто не слышал, поделка от М$ была еще хуже. Ява просто не помещалась на тогдшних серверах. И остался один пхп. Вот он и занял всю нишу, а синонимом веб-разработки стала аббревиатура LAMP.

    Собственно, с тех пор разные технологии потихоньку отъедают его долю, но пых держится за счет накопленной массы и экосистемы. И продержится ещё долго - поскольку на месте не стоит: несмотря на то, что большинство клиентов тостера пишут на том самом ПХП, который завоевывал популярность в прошлом веке (поскольку не могут осилить ничего сложнее классического говнокода), современный пых предоставляет современные средства разработки и тем, кто имеет представление о программировании.
    Ответ написан
    3 комментария
  • Почему не работает второе элемент в .queue?

    Taraflex
    @Taraflex
    Ищу работу. Контакты в профиле.
    Прихожу я короче домой, нажимаю на выключатель 2 раза подряд, но свет не загорается, причем если нажать 1 раз начинает работать. Что я делаю не так?
    Ответ написан
    3 комментария
  • Как осуществить запись из формы в .json файл посредством JS?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    File API

    Ограничения: требуется разрешение пользователя. То есть тихо записать в файлик не выйдет.
    Ответ написан
    Комментировать