• Как полностью заменить содержимое страницы?

    VIKINGVyksa
    @VIKINGVyksa
    front-end developer
    document.head.innerHTML='html код ваших зависимостей';
    document.body.innerHTML = 'html код разметки страницы';

    Вообще неизвесно почему вам нужно так изменить, возможно у вас архитектура приложения не правильная, таких задач не должно возникать)
    Ответ написан
    Комментировать
  • Как подключить все js скрипты одним файлом?

    VIKINGVyksa
    @VIKINGVyksa
    front-end developer
    Можно использовать ES2015 с бабелем

    Если вы пользуитесь grunt, то есть npm пакет

    Я привык к browserify
    Ответ написан
    Комментировать
  • Каков секрет правильного ajax?

    VIKINGVyksa
    @VIKINGVyksa
    front-end developer
    Вообще если вы делаите приложение на AJAX, то ваша архитектура должна быть похожа на SPA. А в нём первый запрос к серверу загружает приложение, которое настраивает себя, вешает все обработчики и тд. То есть вы подгружаите критический css и js просто как теги ("app.js и стили с лоудерами и главной страницей") а остальные просто ленивой подгрузкой в фоне. Так получаеться что пользователь быстро получает страницу которую хотел, но все зависимости подгружаються и для других страниц в фоне. В итоге когда вы будите переходить по страницам у вас будет меняться лишь контент.

    Тот же самый backbone.js. В нём ваше приложение скачиваеться, создаёт модели(делает AJAX к серверу), передаёт во View и отрисовывает сраницу. Все нужные для работы приложения зависимости просто добавлены как теги(пока они не загрузяться ничего не сработает дальше). А расширения для контента, типа плагина для графиков, видео какое-то вы можите в фоновом режиме просто подгрузить. Ведь это одностраничное приложение, смысл постоянно перезагружать расширения.

    Вы можите просто добавить проверку типа:
    if(window.$){
     //если у нас есть jQuery
    // то приложение идёт дальше работать
    
    }else{
     //вызываем какую-то функцию установщик
    loadExtension('jquery.js')
    }

    У вас может быть просто массив зависимостей, которые вы можите подгрузить в фоне. Но когда у вас запрашивается страница /home/about требующая графиков например, вы пререндером на сервере можите запросто добавить этот плагин как просто тег script, а приложение когда будет бегать по зависимостям через if проверит есть он или нет, т.к. вы его подгрузили уже,то он проигнорируеться и у вас не будет дуближей.
    Ответ написан
  • Как работает Javascript?

    VIKINGVyksa
    @VIKINGVyksa
    front-end developer
    попробуйте
    console.log('Корзина',vm.cartItems);
    Ответ написан
  • Почему код в script при добавлении не срабатывает?

    VIKINGVyksa
    @VIKINGVyksa Автор вопроса
    front-end developer
    Я всё решил, просто событие onload уже давно прошло и не происходит установка
    Ответ написан
    Комментировать
  • Область видимости и замыкания?

    VIKINGVyksa
    @VIKINGVyksa
    front-end developer
    Ну с замыканиями всё просто

    Допустим у нас есть функция которая читает строки, которая в свою очередь читает символы.
    function readString(){
     var string;
     string = readChar();
    }
    
    function readChar(){
       return 'a';
    }

    В таком коде у нас есть 2 области видимости, тк. они создаються функциями и функция readChar ничего не знает о переменной string;

    Теперь мы "закроем" эту переменную внутри замыкания.

    function readString(){
     var string;
    
      readChar();
    
       function readChar(){
        string = 'a';   
       }
    }


    Теперь переменная string есть в замыкании. Когда мы пытаемся обратится к какой-то переменной из функции(scope) то она ищеться снача в нём, если не нашлась тут то ищеться во внешней области видимости, а внешней для функции readChar будет функция readString и в неё есть переменная string. Мы её нашли, если её там не было бы, то её поиск проходил бы вплоть до объекта window.

    На счёт второго вопроса ответ есть тут
    Это лучший русскоязычный ресурс по javascript
    Ответ написан
    Комментировать
  • Правильная работа с данными в форме посредством AJAX - каждый раз рендерить форму или заполнять существующую форму полученными данными?

    VIKINGVyksa
    @VIKINGVyksa
    front-end developer
    Ну а какие у вас данные возвращаються что вам нужно в форме что-то поменять? вы же её заполнили она уже полная и просто отправили, сервер обычно возвращает ответ о том что всё хорошо.

    Рендерить лучше всего когда открываеться новая страница SPA, типо about. Отправляите AJAX а данные в шаблонизатор. Обычно возвращаимые значения не изменяют саму форму а изменяют данные, которые изменяються посредством формы. Допустим добавить новый элимент в список товаров. Мы заполняем форму и отправляем всё на сервер, он возвращает нам ответ типа всё добавилось успешно или нет. И после этого наши данные отрисовываем через шаблонизатор в список товаров.

    Если у вас допустим форма настроек, вы можите её держать готовой а потом выставлять эти настройки, пришедшие из AJAX, но смотря что вы используите, пробегая по всему вы сделаите 10 обращений к DOM. Изменить текст в input, подгрузить options в select и тд. А если у вас шаблонизатор то он сделает всего одно обращение к DOM, просто вставит форму уже готовую со всеми проставленными настройками. Это проще и скорее всего быстрее)
    Ответ написан
    2 комментария
  • Как написать виджет для сайта?

    VIKINGVyksa
    @VIKINGVyksa
    front-end developer
    Я недели 2 назад написал виджет. У вас просто есть сервер, где лежит файл установщик типо installwidget.js. В этом файле вы прописываите установку вашего виджета ( ну типо кнопку по которой будет он активироваться добавите, и iframe добавите, который по умолчанию скрытый и активируеться по кнопке или как захотите). На странице к которой вы хотите подключить виджет просто прописываите ваш конфиг (если виджет настраиваеться) и код добавляющий файл установщик.
    Ну что-то типо этого добавляите на страницу
    <script>
      window.App={};
     window.onload = function(){var ms = document.createElement('script);ms.src="http://widget/installwidget.js";document.head.appendChild(ms)};
    <script>


    В итоге. Вы можите добавлять настраиваемый виджет, сам файл installwidget.js возмёт конфиг и в соответсвии с ним добавит iframe и др.

    В вашем примере код генерируеться сервером из get. Ну решать вам как сделать, как вам будет удобнее. Я когда делал оперался на яндекс метрики, как они устанавливаються)
    Ответ написан
    Комментировать
  • Как в internet Explorer перенести li на новую строчку?

    VIKINGVyksa
    @VIKINGVyksa
    front-end developer
    Отображайте inline-block все li
    Для переходов можно сделать типо этого
    <ul>
        <li class="row">
            <li>1<li>
            <li>2</li>
        </li>
        <li class="row">
            <li>3<li>
            <li>4</li>
         </li>
    </ul>


    ul li {
     display:inline-block;
    }
    li.row{
    display:block;


    Работает до ie8 и выше
    47cd845c007540e790ff5cc244b0a557.png
    Ответ написан
    4 комментария
  • Как безопасно передать пароль?

    VIKINGVyksa
    @VIKINGVyksa
    front-end developer
    Так хэшировать вам нужно только на сервере, на клиенте зачем?
    Вы просто на сервер отсылаите пароль "pass243" и на сервере его хэшируите своим алгоритмом и проверяите с тем захэшированным в БД. Совпадает то всё ок. На клиетне ничего не храните иначе взломают как нечего делать)
    Ответ написан
    Комментировать
  • Остановка цикла на несколько секунд. Как?

    VIKINGVyksa
    @VIKINGVyksa
    front-end developer
    Практиковать setInterval не стоит. Лучше сделать на цикл на setTimeout, это лучшая практику js.
    На рекурсии что-то типо этого:
    function shedule () {
        setTimeout(function(){
            //ваши действия
             console.log('interval');
              shedule(); // Рекурсивный вызов функции самой себя.
    
        }, 5000);
    }
    
    shedule ();
    Ответ написан
    2 комментария
  • Как это сверстать?

    VIKINGVyksa
    @VIKINGVyksa
    front-end developer
    Смотря что вы используите. В bootstrap просто делаете 2 row в них по 4 col-md-3 в них изображение с скруглением и подписями.
    Если на чистом html то можно сделать ul убрать стили списка, и у li сделать display:inline-block в них также изображение и подписи (у изображения какую-то ширину и border-radius) подписи text-align:center.

    По идее ничего нет сложного просто html/css.
    Ответ написан
    2 комментария
  • 404 ошибка при запуске сервера. В чем может быть проблема?

    VIKINGVyksa
    @VIKINGVyksa
    front-end developer
    Неправильно указан путь до статики, возможно у вас нету индексного файла. Сейчас у вас express ищет index файл в корне приложения, он у вас там есть?
    Ответ написан
    1 комментарий
  • Как включить выделение текста в click?

    VIKINGVyksa
    @VIKINGVyksa
    front-end developer
    Есть свойство user-select, плагин ставит его в none и поэтому нельзя выделять текст. Но ещё тк. он отплавливает события click и mousemove то выделение не будет происходить. В настройках наврятли что-то есть вроде этого, он просто работать не будет без этих событий.
    Ответ написан
    Комментировать
  • Как сделать ajax форму?

    VIKINGVyksa
    @VIKINGVyksa
    front-end developer
    Ну и вместо alert пропишите скрипт который удалит форму, установит фон и создаст текст.
    В callback функции для done всё делайте.
    Ответ написан
  • Как добавить дополнительное время для выполнения js скрипта?

    VIKINGVyksa
    @VIKINGVyksa
    front-end developer
    Если тебе прям 3 секунды нужно то просто setTimeout поставь
    <script type="text/javascript">$(window).on('load', function () {
        var $preloader = $('#page-preloader'),
            $spinner   = $preloader.find('.spinner');
       setTimeout(function(){
         $spinner.fadeOut();
        $preloader.delay(500).fadeOut('slow');
       },3000);
    });</script>
    Ответ написан
  • Тема дипломной работы, связанная с Front-end?

    VIKINGVyksa
    @VIKINGVyksa
    front-end developer
    Любую задачу можно решить с помощью SPA, а spa это жирный front-end :)
    Лучше для диплома искать тему которая будет внедрена, в вашей веб студии есть задачи? Типо месенджера для работников, хранилище знаний или ещё чего. Я вот прохожу практику в it компании, для неё требуется создать базу знаний, реализовал как виджет на сайте (очень простенький тк. ie8), а вот админ панель для неё у меня жирновата) Весь back-end будет RestAPI.
    Ответ написан
    Комментировать
  • Почему не работает событие change?

    VIKINGVyksa
    @VIKINGVyksa Автор вопроса
    front-end developer
    оооооууу всем сорян я просто опечатался) У селекта прописал класс .js-fcontol вместо .js-fcontrol. Ну как всегда...
    Ответ написан
    Комментировать
  • Как правильно организовать ajax запросы в SPA?

    VIKINGVyksa
    @VIKINGVyksa
    front-end developer
    На backend вам достаточно создать класс базы данных в котором будет куча методов типо getClients or getProductsAll or getProductId. Зачем создавать какие-то объекты? у вас получаеться SPA вам нужен только API а он отдаёт на запрос ответ, ответ это запись из БД.
    Ответ написан
    Комментировать
  • Выполнение js функции перед закрытием вкладки браузера?

    VIKINGVyksa
    @VIKINGVyksa
    front-end developer
    Есть событие загрузки окна onload а есть onunload событие которое вызываеться перед закрытием браузера.
    Ответ написан