Как хранить данные для кастомного блока code?

Ссылка скопирована
1 ответ

Как хранить данные подобного формата, чтобы при их выводе из БД оставить те же отступы?
Пример из чата хабр, когда мы оборачиваем текст в тег code, как реализовать похожее, что текст у нас отображается обычно, а все, что в теге codeзапоминало свои места?

const arr = [1, 2, 3]  function count(a, b) {   if(a > 5) {     a = a * a   }   return a + b }

const arr = [1, 2, 3] function count(a, b) { if(a > 5) { a = a * a } return a + b }

Дополнительно:

А что мешает открыть девтулзы и глянуть как блок кода выглядит в хтмл?

spoiler

<pre><code data-highlighted="yes" class="hljs language-undefined">const arr = [1, 2, 3]  function count(a, b) {   if(a > 5) {     a = a * a   }   return a + b }</code ></pre>

<pre><code data-highlighted="yes" class="hljs language-undefined">const arr = [1, 2, 3] function count(a, b) { if(a > 5) { a = a * a } return a + b }</code ></pre>

  • WbICHA, а как в БД такая строка хранится?
    Ведь там много отступов, а после получения из БД, нужно ее обратно так отобразить
  • MishaXXL, с < pre>< /pre> и хранится.
  • MishaXXL, просто как оригинальный текст, который парсится при запросе.

    Михаил Р., зачем хранить распарсеренную версию? Всё равно оригинал хранить придётся.

  • WbICHA, так с <pre> text... </pre> это правильный ответ, что просто хранить тег с текстом?
    Т.е. в прицепе в БД будет запись текста в таком виде?
    &lt;h1&gt;Мой заголовок статьи&lt;/h1&gt;&lt;pre&gt;function foo() { ... }&lt;/pre&gt;

    &lt;h1&gt;Мой заголовок статьи&lt;/h1&gt;&lt;pre&gt;function foo() { ... }&lt;/pre&gt;

    Я просто не совсем понимаю, как в таком линейном формате <pre> превращенный в просто текст запомнит все отступы

  • MishaXXL, нет, неправильный (если речь не о рич текст эдиторе). Твоя задача хранить только то, что написал пользователь в сыром виде и только. Ты видишь какие-нибудь пре и спан, когда вот прям здесь добавляешь код или делаешь текст жирным?
  • WbICHA, а как тогда правильно обрабатывать текст и хранить его в бд?
  • MishaXXL, да, по сути, никогда. Оригинал всё равно нужен всегда, можно разве что хранить оригинал и обработанную версию одновременно, но зачем?
    А оригинал нужен всегда, потому что иначе любое изменение рендера сообщений (банально класс поменять) и всё, тебе надо думать как это всё поменять в уже готовых сообщениях во всей базе.
  • WbICHA, так всё-таки вариант с тегами и<pre>?
    А то я потерял ныть к чему ты ведешь
  • MishaXXL, при чём здесь хтмл? Ты на этом сайте видишь в своих сообщениях пре и прочие хтмл теги? Или ты видишь бб коды?
  • БД тут абсолютно ни причём. Она хранит текст в том виде, в каком ты его туда поместил, вплоть до байта.
    Это браузеры по умолчанию сокращает отступы в ходе рендеринга HTML. Но есть теги вроде <pre>, которые отступы сохраняют. Также можно использовать CSS-свойство white-space со значениями pre или pre-wrap.

    snippet

    Ответы:

    pre

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Артём Dev Ответ

    Для хранения данных для кастомного блока code вам может понадобиться использовать различные методы в зависимости от конкретной ситуации и требований проекта. Ниже приведены несколько распространенных способов хранения данных для кастомного блока code:

    1. Использование базы данных: Вы можете создать таблицу в базе данных, в которой будет храниться информация о кастомных блоках code. К примеру, вы можете создать таблицу с полями для хранения кода, названия блока, даты создания и других необходимых данных. Затем вы можете использовать SQL запросы для добавления, обновления и извлечения данных из этой таблицы.

    // Пример создания таблицы для хранения данных кастомного блока code
    CREATE TABLE custom_code_blocks (
        id INT AUTO_INCREMENT PRIMARY KEY,
        code TEXT,
        block_name VARCHAR(255),
        created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
    );

    // Пример создания таблицы для хранения данных кастомного блока code CREATE TABLE custom_code_blocks ( id INT AUTO_INCREMENT PRIMARY KEY, code TEXT, block_name VARCHAR(255), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );

    2. Использование файловой системы: Вы также можете хранить данные для кастомного блока code в файлах. Например, вы можете создать отдельную папку на сервере, в которой будут храниться файлы с кодом для каждого блока. При этом вам необходимо разработать систему именования файлов и их структуру для удобного доступа к данным.

    3. Использование кэша: Если данные для кастомного блока code могут быть временными или часто обновляться, то можно использовать кэш для их хранения. Например, вы можете использовать Redis или Memcached для кэширования кода блоков и быстрого доступа к ним.

    4. Использование API: Если ваши данные для кастомного блока code должны быть доступны на других сайтах или приложениях, то можно создать API для доступа к этим данным. Вы можете использовать RESTful API для передачи данных в формате JSON или XML.

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

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно