Задать вопрос
  • Можно учить typescript без нативного js?

    Можно учить typescript без нативного js?

    Можно, но нет смысла - фактически выучите JS с плюшками TS поверх него. Поэтому лучше таки поучить JS а затем разобраться, что добавляет TS сверху. Это всё потому, что TS расширяет синтаксис EcmaScript, и совместим с ним (с какой версией ES - зависит от версии компилятора).
    если нет обоснованной причины писать на ts - не пиши

    Почти всегда есть обоснованная причина писать на TS.
    TS похож на конструктор сайтов. Вроде сайт на TS, но работает на JS. Так в этом конструкторе придется еще и свою локигу вставлять.

    Вообще не понял смысла этого ответа. Возможно, человек спутал TS и Ангуляр. TS похож на конструктор сайтов не больше, чем C#.
    И какие плюсы ts перед js?

    В вашем коде будет порядок, если вы этого захотите.
    Ответ написан
    Комментировать
  • Что скажете о javascript webSocket?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Во-первых, websocket - это протокол передачи данных, реализованный поверх http (wss - websocket secure работает через https соответственно) и к ECMAScript (спецификация для языков JavaScript, ActionScript и иже с ними) никакого отношения не имеет.
    Во-вторых, реализация websocket клиента включена в спецификацию BOM (Browser Object Model), из актуальных браузеров поддержка есть почти везде, не поддерживают только IE9 и ниже (критично только если ресурсом будут пользоваться в госсекторе) и OperaMini (мобильный браузер, который по реализации стандартов застрял где-то в 90х)
    В-третьих, websocket кардинально отличается от ajax:
    ajax позволяет делать классические http запросы и работает по принципу запрос-ответ
    websocket же устанавливает постоянное соединение, после чего общение происходит в виде отправки сообщений, притом сообщения могут отправлять как сервер так и клиент в любой момент времени пока установлено соединение
    В-четвертых, конкретно в реализации websocket клиента в браузере есть ряд ограничений:
    Нельзя управлять заголовками при установлении соединения, единственный способ передать какие-либо данные на сервер в момент установления соединения - это url
    На протяжении всего соединения будет только один формат обмена данными, на выбор есть строки, ArrayBuffer и Blob. Если есть необходимость отправлять по сокету как бинарные данные так и строки, то строки придется на js паковать в ArrayBuffer или Blob и, соответственно, распаковывать обратно при получении сообщений
    В-пятых, хотя правильнее наверно в-нулевых, сервер должен уметь работать по протоколу websocket

    В целом, вебсокеты можно использовать как альтернативу ajax, в SPA приложениях он может даже дать прирост скорости в общении с серверным апи в виду постоянного соеденения, но есть свои заморочки:
    придется самостоятельно реализовывать систему запрос-ответ (тут можно взять такую вещь как socket.io и не парится, хоть и тормазнутая, зато удобная + есть имитация поверх других транспортов для всяких там IE9)
    при отправки больших данных, придется заморачиваться разбивкой на части, иначе другие сообщения будут ждать пока сообщение будет отправлено (не стоит отправлять больше 256кб за раз)
    Ответ написан
    1 комментарий
  • Есть ли подобие global из php в js?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    В javascript область видимости строится на замыканиях (вложенности функций), есть три оператора объявления переменных:
    var - переменная будет видна в текущей функции и во всех функциях объявленных внутри текущей функции, включая те, что объявлены внутри вложенных функций, данное объявление всплывает на начало функции не зависимо где в функции оно произведено
    let - переменная будет видна в пределах текущего блока после ее объявления (не всплывает в отличии от var), а так же во всех вложенных в текущий блок блоках и функциях
    Так же нужно отметить, что такое объявление произведенное в циклах создаст новую переменную на каждую итерацию цикла
    const - все то же самое, что и для let + значение нельзя изменить
    Важно отметить, что для объектов значением переменной является ссылка на объект, а не сам объект, то есть записать в такую переменную что-то еще нельзя, но состояние объекта менять можно

    При обращении к переменной она сначала ищется в текущей области видимости, а если в текущей области такой переменной не объявлена, то производится поиск в области видимости выше.
    Самой верхней областью видимости является глобальный объект, в нем поиск производится последним, если переменная не найдена и там, то будет возвращено значение undefined
    Важно: в strict режиме (который рекомендуется включать всегда) нельзя использовать не объявленные переменные за исключением в операторе typeof

    Многие среды исполнения js создают в глобальном объекте переменную содержащую ссылку на сам глобальный объект, например gui поток браузера создает несколько таких ссылок:
    window - глобальный объект текущего фрейма (вкладка браузера, попап-окно, iframe)
    top - глобальный объект самого верхнего фрейма (вкладки)
    parent - глобальный объект фрейма находящегося на уровень выше, либо равносильно top если текущий фрейм - вкладка браузера или попап-окно
    opener - глобальный объект фрейма, породившего текущую вкладку или попап-окно (может быть null, если текущая вкладка порождена самим браузером)

    В webworker'ах и webextension'ах браузера ссылка на глобальный объект хранится в переменной self
    В node.js - global

    Универсальный способ получить глобальный объект в любой среде исполнения:
    function getGlobal() {
      return (new Function('return this'))();
    }


    P.S. использование глобальной области видимости - дурной тон
    Ответ написан
    1 комментарий
  • Какие правила нужно учитывать, для написания ответов в Toster?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Краткий перечень (кроме соблюдения законов, выражений, правил тостера и прочего):
    1. Уважение ко всем участникам.
    2. Отношение к менее знающим с уважением.
    3. Любое несогласие должно быть аргументировано ссылкой на первоисточник.
    4. Ответ должен нести пользу спрашивающему (и всем остальным), а не отвечающему.
    5. Не нужно осуждать других, чтобы выглядеть лидером в глазах спрашивающего.
    Ответ написан
    2 комментария
  • Почему на Тостере так популярен тег Linux?

    Ну, раз вам "понятно, веб-разработка", то вспомните о том, где вся эта "веб-разработка" крутится и какие операционные системы стоят на подавляющем большинстве серверов.
    Ответ написан
    Комментировать
  • Как заинтересовать человека(студента) в IT?

    sim3x
    @sim3x
    Не надо нам тут лишних людей
    Ответ написан
    Комментировать
  • Дайте ссылку на css grid?

    @k_sharonov
    Помог? Отметь решением!
    4 комментария
  • Почему предпочтительней json, чем txt?

    zolt85
    @zolt85
    Программист
    AJAX - Asynchronous Javascript and XML
    JSON - JavaScript Object Notation
    чувствуете связь?
    Ответ написан
    Комментировать
  • Как запретить на сайте нажатие CTRL+SHIFT+I и F12?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Вместо того чтоб страдать подобной <тут должно быть нецензурное слово> лучше сначала напишите что-то реально полезное, а так только сами себе грабли стелите
    Тот же авито сажает вирус в расширения хрома при открытии инструментов разработчика, наверно как и Вы боятся спалить свой говнокод (а у них там действительно беда)
    А еще подумайте вот о чем: что если инструменты разработчика уже открыты к моменту загрузки Вашей страницы? А что если я сижу на маке, где эти сочетания другие (CMD+I)? А что Вы будете делать с расширением которое позволяет блокировать обработку события контекстного меню скриптами в любое время? (У меня такое стоит)
    Ну и напоследок: когда в Вашем коде появится реально что-то полезное, у Вас будут мысли не "каким еще костылем защитить мой код", а "как бы это написать так, чтоб потом выложить в опенсорс не стыдно было, да еще звездочек за это на гитхабе нахватать"
    Ответ написан
    2 комментария
  • Где вести записи разработчику?

    iiiBird
    @iiiBird
    Пока ты спишь - твой конкурент совершенствуется
    Ответ написан
    Комментировать
  • Как это свертсать?

    @OKF
    <div class="contacts">
    	<div class="contacts_item phone">
    		<a href="tel:88001234567">
    			<span class="code">8/800/</span> 123-45-67
    		</a>
    	</div>
    	<div class="contacts_item phone">
    		<a href="tel:+74732564836">
    			<span class="code">+7/473/</span> 256-48-38
    		</a>
    	</div>
    	<div class="contacts_item mail">
    		<a href="mailto:info@сельхоз-корма.рф">info@сельхоз-корма.рф</a>
    	</div>
    	<div class="contacts_item callback">
    		<a href="#">Заказать обратный звонок</a>
    	</div>
    </div>
    Ответ написан
    Комментировать
  • Есть ли смысл платить Yandex.Direct за запросы по которым мы и так на 1, 2, 4 месте?

    reaferon
    @reaferon
    Увы и ах, мне приходится платить, хотя два моих сайта находятся на 1 и 2 местах по ключевым запросам.
    Потому что наша ЦА совершенно не знает разницу между органической выдачей и рекламным блоком. А если весь рекламный блок занимают конкуренты, то наша ЦА просто не доходит до нашего честного первого органического места.
    Ответ написан
    Комментировать
  • Какие фреймворк выбрать для веб - приложения?

    DevMan
    @DevMan
    какой хочешь такой и выбирай.
    объективного ответа не будет, поскольку каждый будет нахваливать то, с чем лично знаком, даже если есть более лучшие альтернативы.

    ну и кагбе на такие вопросы пора научиться отвечать самому. ибо это твой и только твой выбор.
    если не можешь определиться сам, то кидай кости/монетку.
    Ответ написан
    3 комментария
  • Как учить Node.js?

    @Nwton
    Для начала посмотри весь скринкаст: YouTube
    Далее советую выполнить три простых вещи:
    1) установить node js на vds
    2) развернуть http сервер
    3) прикрутить к нему socket io

    Тогда тебе станет понятно, что из себя представляет нода и в каком направлении двигаться. Все это можно сделать за два дня. Затем переходи на литературу и углубляйся.
    Ответ написан
    2 комментария
  • Как учить Node.js?

    @kirill-93
    Замечательный список. На счет книг не скажу, а курсы Кантора хорошие. Есть еще замечательный курс от Игоря Борисова из specialist.ru
    Ответ написан
    Комментировать
  • Как делают сайты со статьями?

    А как ты создал этот вопрос? Ты лез в код?
    То же самое на сайте со статьями, все постится из админки.
    Ответ написан
    Комментировать
  • Почему фрилансеры готовы общаться только в чате?

    iiiBird
    @iiiBird
    Пока ты спишь - твой конкурент совершенствуется
    потому что большинство заказчиков идиоты и фрилансеры просто не хотят тратить время еще и общаясь с ними. из личного опыта знаю как один "особый" заказчик любил звонить. среди дня и ночи. по любому вопросу. даже просто уточнить что то. после этого больше с заказчиками на связь не выхожу.
    p.s. а еще это трата времени. порой, когда я общаюсь с заказчиками - параллельно я делаю другой проект. и мне легче общаться по средством чата и не отвлекаться от работы.
    p.p.s а еще мне нужно чтобы заказчик написал тз, ну или хотя бы описал словами что он хочет в текстовом виде. нежели будет придумывать на ходу при общении, а потом мне это еще вспомнимать чтоли? или на диктофон записывать?
    Ответ написан
    13 комментариев
  • Есть ли ляпы в коде?

    In4in
    @In4in
    °•× JavaScript Developer ^_^ ו°
    Одна логическая ошибка в коде точно есть. Объясню ее на примере.

    function setHandler(el){
    
       var obj = new MyController(el);
    
      $(el).on("click", function hand(){
          alert(obj.name);
      });
    
    }
    
    setHandler(element1);
    setHandler(element2);


    После выполнения данного кода в память браузера попадают:
    • Функция setHandler
    • Два объекта типа MyController
    • Две функции hand - обработчики события onclick.


    Да-да, для каждого вызова setHandler создается своя функция hand. Две (три, десять или даже миллион) разные функции с одинаковым телом. Все, что их отличает - область видимости, в которой они объявлены (к примеру, внутри каждой из них доступен свой obj).

    Но, спрашивается, как мы можем оптимизировать потребление памяти в данной ситуации? А вот так:

    function hand(){
    
      var obj = $(this).data("obj");
    
      alert(obj.name);
    
    }
    
    function setHandler(el){
    
       var obj = new MyController(el);
    
      $(el)
        .data("obj", obj) //Как вариант
        .on("click", hand)
      ;
    
    }
    
    setHandler(element1);
    setHandler(element2);

    Вынесем hand в более высокую область видимости.

    Теперь в памяти сохранены:
    • Функция setHandler
    • Функция hand
    • Два объекта MyController
    Ответ написан
    7 комментариев
  • Есть ли ляпы в коде?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    Комментарии в коде бесполезные, только глаза мозолят:
    index: function (settings) {
        // Метод контроллера index
    ....
    create: function (settings) {
        // Метод контроллера create
    ....

    Если уж вы описываете свой код - делайте это с умом, посмотрите какие есть средства для генерации документации, например JSDoc

    Используйте фигурные скобки и отступы везде, где только можно. Я, разумеется, понимаю, что "стильно модно молодежно" писать if в одну строку, но такого рода конструкции взрывают мозг:
    ....
    else data = settings;
    if (typeof data !== "string") data = $.param(data);
    if (method == 'post') return $.post(url, data + '&_method=' + method_hidden);
    else return $.get(url, data);
    ....

    И, если еще придираться, - пустые строки после объявления переменных, после if/else, и.т.д. улучшают читабельность.

    Не используйте ключевые слова из es6 где попало:
    class: '.jsgrid-container',

    Есть некоторая непоследовательность - иногда вы выносите объявления всех переменных в начало функции, иногда нет. Имеет смысл определиться и использовать что-то одно.

    Да, и киньте ссылку на codepen что-ли, а то в 500 строк кода ни разу не понятно работает ли там что-то (и что оно вообще делает). И к этому хочется добавить - посмотрите в сторону систем сборки (Grunt/Gulp/...)на ваш вкус - скорее всего эти 500 строк можно разбить на части поменьше, станет проще ориентироваться в происходящем.
    Ответ написан
    1 комментарий
  • Как подготовиться к закону Яровой?

    @nirvimel
    1. Купите недорогой VPS (от $15/год, можно даже дешевле) и поднимите на нем личный VPN. В Сети есть куча подробных руководств как это делается. Только не надо говорить, что у вас нет на это денег, интернетом вы же не бесплатно пользуетесь. Просто примите это как небольшую дополнительную плату за интернет за ваш спокойный сон.
    2. Работая через VPN (обязательно), заведите себе новый почтовый ящик на зарубежном сервере у компании, у которой нет никакого бизнеса и любых коммерческих интересов в РФ. Пусть это будет не мажорный гигант индустрии, а скромная компания, малоизвестная в РФ. Главное - это наличие SSL в веб-интерфейсе и в IMAP, в остальном почта есть почта, она просто работает, и этого достаточно.
    3. Работая через VPN, заведите себе новый аккаунт в vk facebook и/или google (если вы неспособны полностью отказаться от использования социалок). При регистрации указывайте место проживания подальше от РФ. Учитывайте, что все гиганты индустрии, имеющие большой бизнес в РФ, полностью сотрудничает с ГБ, но аккаунты нерезидентов, зарегистрированные и посещаемые с зарубежных IP, они не станут сливать по умолчанию (но по первому запросу сольют мгновенно). Так что забудьте про любые приваты в социалках, ведите все общение так, как будто все это читает весь ваш квартал и все те, кому бы вам меньше всего хотелось это показывать. Для приватного общения пользуйтесь только безопасной почтой (пункт 2) и защищенными чатами, на telegram jabber на зарубежных серверах. Все это касается только тех, кто не может окончательно завязать с пагубной зависимостью от соц.сетей. Очевидно, наиболее безопасным (и полезным для здоровья) вариантом является полный отказ от социалок.
    4. Не вбрасывайте в старые ящики и соц.аккаунты адреса и ссылки на новые чистые, не указывайте новые адреса в любых исходящих и старайтесь, чтобы они не попали во входящие. Помните, что в любой социалке и любом веб-интерфейсе почты (сотрудничающей) кнопка "удалить" скрывает удаляемое только от вас самих и не более того.
    5. (Самый неприятный пункт) Забудьте про vk, mail.ru и российские gmail и facebook. - КАК? - Так! Я понимаю, что это не легко, что они давно стали частью вашей жизни. Но это придется сделать! Поговорите сами с собой, спросите себя что для вас важнее: ваша личная безопасность, спокойствие и крепкий сон или старые привычки, которыми вы опутаны, и которые не хотят отпускать вас? Учтите, что продолжая пользоваться местными социалками (и сотрудничающими иностранными), вы продолжаете каждый день генерировать на себя тонны компромата, который может обернуться против вас в самый неожиданный момент самым неприятным образом. Проявляя активность в своих старых аккаунтах, вы не даете им "протухнуть" и не даете даже формального повода добрым компаниям снести их через пол года, после истечения отведенного законом срока хранения (как известно, vk не ограничивается минимальным сроком хранения, а хранит все метаданные и текст практически вечно за исключением видео/аудио).
    Ответ написан
    26 комментариев