• Как удалить из строки каждый третий символ?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    let str = "abcdefg";
    let newStr = "";
    for (let i = 0; i < str.length; i++) {
      if ((i + 1) % 3 !== 0) {
        newStr += str[i];
      }
    }
    console.log(newStr);

    Или:
    let str = "abcdefg";
    let newStr = [...str].filter((_, index) => (index + 1) % 3 !== 0).join("");
    console.log(newStr);
    Ответ написан
    Комментировать
  • Как скрыть/показать длинный текст в div-ном блоке?

    @My1Name Автор вопроса
    Немного погуглив, решение нашлось на qna.habr и по ссылке https://www.tune-it.ru/web/leksa/blog/-/blogs/3044392 — хороший пример оформления. В целом (моё) решение выглядит следующим образом:

    HTML
    <div class="truncate-text">
    <p>Тут какой-то текст длиной до 2000 символов, но нужно показывать до 200 символов. По событию onClick блок должен развернуться. А если блок развёрнутый - свернуться.
    </p>
    </div>

    CSS
    .truncate-text{
      height: 130px;
      overflow: hidden;
      position: relative;
    }
    .truncate-text.opener {
      height: auto;
    }
    .truncate-text:after {
      content: "";
      position: absolute;
      left: 0;
      bottom: 0;
      width: 100%;
      height: 40px;
      background: linear-gradient(180deg, transparent, white 50%);
    }
    .truncate-text.opener:after {
      opacity: 0;
    }

    Javascript (jQuery)
    <script>
        $('.truncate-text').click(function(){
            $('.truncate-text').toggleClass('opener');
        });
    </script>

    Можно ещё добавитьcursor: pointer; в стили, но как по мне - это лишнее. Если текст не завершённый, обычно человек тыкает на него пальцем интуитивно :)
    Ответ написан
    Комментировать
  • Как глобально подключить переменные _breakpoints и использовать их в проекте NEXT?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    breakpoints.scss:
    $breakpoint_sm: 300px;
    $breakpoint_md: 700px;
    $breakpoint_xl: 1000px;

    BestComponent.scss:
    @import "breakpoints";
    
    @media screen and (max-width: $breakpoint_md) {
      // ...
    }

    index.scss:
    @import "fonts";
    @import "breakpoints";

    _app.tsx:
    import { FC } from "react";
    import { AppProps } from "next/app";
    import "./styles/index.scss";
    
    const App: FC<AppProps> = ({ Component, pageProps }) => (
      <Component {...pageProps} />
    );
    
    export default App;

    Если Вы пишите "реактивные" приложения, то я бы рекомендовал уходить от классического css/scss к css-in-js, например используя emotion.js.

    Но тут видите, мы все равно подключаем
    Dmitrijs Balcers "breakpoints"; в BestComponent, а надо без импорта, сразу

    В случае с SCSS переменными, они не могут быть доступны глобально без импорта, как это возможно с CSS переменными, которые определены в :root. Это ограничение SCSS и его способа компиляции в CSS.

    Варианты:
    - Использовать переменные :root:
    :root {
      --breakpoint-sm: 300px;
      --breakpoint-md: 700px;
      --breakpoint-xl: 1000px;
    }

    @media screen and (max-width: var(--breakpoint-md)) {}

    - Использовать sass-loader в webpack для автоматического импорта переменных в каждый файл:
    {
      test: /\.scss$/,
      use: [
        "style-loader",
        "css-loader",
        {
          loader: "sass-loader",
          options: {
            additionalData: `@import "path/breakpoints.scss";`
          }
        }
      ]
    }

    - Использовать css-in-js и не изобретать велосипеды.
    Ответ написан
    4 комментария
  • Как правильно спроектировать Laravel приложение с уклоном в enterprise?

    Используйте Laravel и не беспокойтесь. Он построен на Symfony. Если понадобится, то использование Doctrine вместо/вместе с Eloquent возможно.

    Вы дольше будете изучать Symfony и набирать команду с его поддержкой. Проще использовать его части, а не строить из себя умного сноба, оправдывающего высокую зарплату.

    Laravel позволит быстро построить прототип. Изменить какие-то критичные части всё одно придётся. И это не отменит использование частей от Symfony.
    Ответ написан
    Комментировать
  • Как считат get параметр (params.get) в VK приложении?

    Tim-A-2020
    @Tim-A-2020
    Все работает. Если вам нужно получить параметр ra, то в метод get пишите этот параметр
    const params = new URLSearchParams(window.location.search)
    console.log(params.get('ra'))
    Ответ написан
    Комментировать
  • Как получить состояние из хранилища Mobx React.js?

    @Dasslier
    FrontEnd Developer
    Потому что вы достаете стор из замыкания, а не из провайдера.

    Создайте компонент, отрендерите его внутри Provider, оберните в inject('settingStore') и все заработает. Ну и исправьте опечатку с seting -> setting

    Для краткости можно экспортировать так export default new SettingsStore()
    Ответ написан
    4 комментария
  • Как исправить ошибку Error in callback for watcher?

    0xD34F
    @0xD34F Куратор тега Vue.js
    Сначала <...> fetch() был прописан в methods

    затем добавил <...> computed: - тогда ошибка появилась

    Положите метод fetch где лежал.
    Ответ написан
    Комментировать
  • Как получается сделать запрос к базе на ларавел?

    Если Вы хотите получить places, то необходимо определить, что Вы хотите в результате увидеть (select()) и уточнить условия в зависимости от этого.

    $places = Place::whereIn('places.id', $result)
                            ->where('places.active', '=', true)
                            ->Join('regions', 'places.region_id', '=', 'regions.id')
                            ->orderBy('places.rating')
                            ->select(['places.*'])
                            ->paginate(10);
    Ответ написан
    Комментировать