Como Integrar o Monaco Editor com Textarea para Salvar Códigos

O Monaco Editor é uma ferramenta poderosa para edição de códigos, amplamente utilizada por sua robustez e funcionalidade, como auto-completar, destaques de sintaxe e muito mais. Este guia completo ensina como integrá-lo a um <textarea> para salvar conteúdos no banco de dados ou arquivos, garantindo simplicidade e eficácia.


Passo 1: Configurando o HTML com Monaco Editor

Aqui está um exemplo de código HTML que integra o Monaco Editor e sincroniza o conteúdo com um <textarea> invisível. Isso permite que o conteúdo editado seja enviado pelo formulário ao backend:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Monaco Editor with Textarea</title>
  <script src="https://cdn.jsdelivr.net/npm/monaco-editor/min/vs/loader.js"></script>
  <style>
    #editor {
      width: 100%;
      height: 400px;
      border: 1px solid #ddd;
    }
    textarea {
      display: none; /* Oculta o textarea */
    }
  </style>
</head>
<body>
  <h1>Monaco Editor with Textarea</h1>
  
  <!-- Textarea para enviar os dados -->
  <form action="/save" method="POST">
    <textarea id="codeArea" name="code"></textarea>
    <div id="editor"></div>
    <button type="submit">Save</button>
  </form>

  <script>
    require.config({ paths: { vs: 'https://cdn.jsdelivr.net/npm/monaco-editor/min/vs' } });
    require(['vs/editor/editor.main'], function () {
      const editor = monaco.editor.create(document.getElementById('editor'), {
        value: "// Your code here\nconsole.log('Hello, world!');",
        language: 'javascript',
        theme: 'vs-dark'
      });

      // Sincronizar o conteúdo do editor com o textarea ao enviar o formulário
      const textarea = document.getElementById('codeArea');
      document.querySelector('form').addEventListener('submit', () => {
        textarea.value = editor.getValue(); // Copia o valor do editor para o textarea
      });
    });
  </script>
</body>
</html>

Passo 2: Backend Simples para Salvar os Dados

Abaixo está um exemplo de backend usando PHP, que salva o código enviado pelo formulário em um arquivo:

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $code = $_POST['code']; // Obtém o conteúdo do textarea
    
    // Salva o código em um arquivo
    file_put_contents('code.txt', $code);

    // Retorna uma mensagem de confirmação
    echo "Código salvo com sucesso: <pre>" . htmlspecialchars($code) . "</pre>";
}
?>

Testando a Solução

  1. Copie o código HTML e salve-o em um arquivo (por exemplo, index.html).
  2. Configure um servidor local (como XAMPP ou outro) e salve o arquivo PHP no mesmo diretório do HTML.
  3. Abra o index.html no navegador, escreva códigos no editor e clique em Save.
  4. Verifique o conteúdo do arquivo code.txt para confirmar que o código foi salvo corretamente.

Benefícios dessa Abordagem

  • Flexibilidade: O <textarea> invisível permite enviar o conteúdo com facilidade para o backend.
  • Compatibilidade: Funciona com qualquer linguagem de backend (PHP, Node.js, Python, etc.).
  • Expansível: Pode ser adaptado para salvar em bancos de dados ou APIs.

Dicas Extras

  • Certifique-se de que o backend esteja configurado para lidar com caracteres especiais, como aspas e acentos.
  • Garanta que o banco de dados suporte o tamanho do código armazenado (ex.: campos TEXT ou LONGTEXT no MySQL).
  • Explore outros temas do Monaco Editor ou ajuste o idioma conforme suas necessidades.
Rolar para cima