HTML, CSS 및 JavaScript를 사용하여 나만의 라이브 웹 편집기 만들기

소개



이 자습서에서는 라이브 웹 편집기를 만듭니다. HTML, CSS, JavaScript 코드를 작성하고 결과를 실시간으로 확인할 수 있는 웹 애플리케이션입니다. 이것은 웹 개발을 배우고 코드 스니펫을 테스트하기 위한 훌륭한 도구입니다. iframe 요소를 사용하여 결과를 표시합니다. iframe 요소는 현재 HTML 문서 내에 다른 문서를 삽입하는 데 사용됩니다. iframe 요소의 src 속성은 삽입할 문서의 URL을 지정합니다.

웹 에디터란?



웹 편집기는 HTML, CSS 및 JavaScript 코드를 작성하고 결과를 실시간으로 볼 수 있는 웹 응용 프로그램입니다. 웹 편집기의 용도에는 빠른 프로토타이핑, 쉬운 테스트 및 학습 웹 개발이 포함됩니다.

라이브 웹 편집기란 무엇입니까?



라이브 웹 편집기는 코드의 결과를 실시간으로 표시하는 웹 편집기입니다.

전제 조건



이 자습서를 시작하기 전에 HTML, CSS 및 JavaScript에 대한 기본적인 이해가 있어야 합니다. 또한 DOM과 JavaScript를 사용하여 요소를 선택하는 방법에 대한 기본적인 이해가 있어야 합니다. 마지막으로 iframe 요소에 대한 기본적인 이해가 있어야 합니다.

필요한 소프트웨어:
  • 코드 편집기(Visual Studio Code, Sublime Text, Atom 등)
  • 웹 브라우저(Google Chrome, Mozilla Firefox, Microsoft Edge 등)
  • 실시간 미리보기를 위한 브라우저 확장(라이브 서버, 실시간 미리보기 등)
  • Github
  • 호스팅용 Github 페이지

  • 1단계: HTML 파일 만들기



    새 폴더를 만들고 이름을 "live-web-editor"로 지정합니다. 폴더 안에 새 파일을 만들고 이름을 "index.html"로 지정합니다. 코드 편집기에서 파일을 열고 다음 코드를 추가합니다.

    <!DOCTYPE html>
     <html>
     <head>
        <title>Real-Time Editor</title>
        <link rel="stylesheet" type="text/css" href="styles.css">
        <script defer type="text/javascript" src="app.js"></script>
        <!-- <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> -->
        <script src="https://cdnjs.cloudflare.com/ajax/libs/split.js/1.0.0/split.min.js" integrity="sha512-tTsZnBXEzNdEaqUO9Ok8fUofS73xieiBa54pD/sxOSvayIgItM9MmEM0CnUjA13LDnJT22sfwmjf20+Bo2174g==" crossorigin="anonymous"></script>
     </head>
     <body>
        <div class="container split">
            <!-- Text area for Html Code  -->
            <textarea id="htmlCode"  placeholder="Type HTML code here" spellcheck="false" oninput="update(0)" onkeydown="if(event.keyCode===9){var v=this.value,s=this.selectionStart,e=this.selectionEnd;this.value=v.substring(0, s)+'\t'+v.substring(e);this.selectionStart=this.selectionEnd=s+1;return false;}if(event.keyCode==8){update(1);}"></textarea>
            <!-- Text area for Css Code  -->
            <textarea id="cssCode"  placeholder="Type CSS code here" spellcheck="false" oninput="update(0)" onkeydown="if(event.keyCode===9){var v=this.value,s=this.selectionStart,e=this.selectionEnd;this.value=v.substring(0, s)+'\t'+v.substring(e);this.selectionStart=this.selectionEnd=s+1;return false;}if(event.keyCode==8){update(1);}"></textarea>
            <!-- Text area for Javascript Code  -->
            <textarea id="javascriptCode" spellcheck="false" placeholder="Type JavaScript code here" oninput="update(0)" onkeydown="if(event.keyCode===9){var v=this.value,s=this.selectionStart,e=this.selectionEnd;this.value=v.substring(0, s)+'\t'+v.substring(e);this.selectionStart=this.selectionEnd=s+1;return false;}if(event.keyCode==8){update(1);}"></textarea>
        </div>
        <div class="iframe-container split">
            <iframe id="viewer"></iframe>
        </div>
    
     </body>
     </html>
    
    


    코드 설명을 위해

     onkeydown="if(event.keyCode===9){var v=this.value,s=this.selectionStart,e=this.selectionEnd;this.value=v.substring(0, s)+'\t'+v.substring(e);this.selectionStart=this.selectionEnd=s+1;return false;}if(event.keyCode==8){update(1);}
    


    위의 코드는 텍스트 영역의 라이브 렌더링에 사용되며 텍스트 영역에 입력할 때 자동으로 렌더링되며 기본적으로 탭이 텍스트 영역에서 활성화되어 있지 않기 때문에 텍스트 영역에서 탭 활성화에도 사용됩니다.

    2단계: CSS 파일 만들기



    새 파일을 만들고 이름을 "styles.css"로 지정합니다. 코드 편집기에서 파일을 열고 다음 코드를 추가합니다.

    @import url('https://fonts.googleapis.com/css2?family=Open+Sans&display=swap');
    
    *{
        padding: 0;
        margin: 0;
        box-sizing: border-box;
    }
    
    body{
        height: 100vh;
        display: flex;
    }
    .container{
        background: #E7E7E7;
        display: flex;
        flex-direction: column;
        width: 50%;
        height: 100vh;
        margin: 3px;
    
    }
    .container textarea {
        background-color:  #121212;
        border:1px solid #0dddf0;
        resize: none;
        width: 100%;
        height: 33.333%;
        font-size: 1.4rem;
        padding: 10px;
        resize: vertical;
        overflow-y: scroll;
        color:white;
    }
    .container textarea:focus {
        outline: none;
        color:white;
    }
    .iframe-container{
        background: white;
        width: 50%;
        height: 100vh;
        margin: 3px;
    }
    #viewer{
        width: 100%;
        height: 100%;
    }
    .split {
      width:100%;
      height:100%;
    }
    .gutter {
      cursor: e-resize;
      height: 100%;
      background: grey;
    }
    .gutter.gutter-horizontal {
        cursor: ew-resize;
    }
    


    3단계: JavaScript 파일 생성



    새 파일을 만들고 이름을 "app.js"로 지정합니다. 코드 편집기에서 파일을 열고 다음 코드를 추가합니다.

    var j=0;
    //Function for live Rendering
    function update(i) {
        if(i==0){
        let htmlCode=document.getElementById("htmlCode").value;
        let cssCode=document.getElementById("cssCode").value;
        let javascriptCode=document.getElementById("javascriptCode").value;
        let text=htmlCode+"<style>"+cssCode+"</style>"+"<scri"+"pt>"+javascriptCode+"</scri"+"pt>";
        let iframe=document.getElementById('viewer').contentWindow.document;
        iframe.open();
        iframe.write(text);
        iframe.close();
        }
    
        else if(i==1){
    
            let htmlCode=document.getElementById("htmlCode").value;
            let html=htmlCode.slice(0,htmlCode.length);
            document.getElementById("htmlCode").value=html;
            j=1;
    
        }
    


    아래 코드에 대한 설명을 위해 텍스트 영역의 값을 가져와서 변수에 저장합니다.

    let text=htmlCode+"<style>"+cssCode+"</style>"+"<scri"+"pt>"+javascriptCode+"</scri"+"pt>";
    


    4단계: 프로젝트 실행



    모든 파일을 저장하고 라이브 서버 확장을 사용하여 브라우저에서 "index.html"파일을 엽니다. 다음 출력이 표시되어야 합니다.



    5단계: 사용해 보세요



    이제 텍스트 영역에서 자신의 코드를 시험해보고 iframe에서 출력을 볼 수 있습니다.
    텍스트 영역에서 코드를 삭제하여 라이브 렌더링을 테스트하고 iframe에서 출력을 볼 수도 있습니다.

    자원


  • Varshith V Hegde
  • Live Demo

  • 데모




  • Live Demo

  • 개량



    다음과 같은 기능을 추가하여 이 코드 편집기를 개선할 수 있습니다.
  • 코드를 zip 파일로 다운로드하는 버튼을 추가합니다.
  • HTML, CSS 및 JavaScript에 대한 자동 완성 기능이 추가되었습니다.
  • HTML에 대한 자동 태그 닫기 기능을 추가했습니다.(내 코드 편집기에 이미 이 기능을 추가했습니다. 확인하십시오here )
  • 코드 편집기를 지우는 버튼을 추가했습니다.
  • 코드 편집기의 테마를 변경하는 버튼을 추가했습니다.
  • 코드 편집기의 글꼴 크기를 변경하는 버튼을 추가했습니다.

  • 결론



    이 자습서에서는 HTML, CSS 및 JavaScript를 사용하여 라이브 코드 편집기를 만드는 방법을 배웠습니다. split.js 라이브러리를 사용하여 분할 화면 레이아웃을 만드는 방법도 배웠습니다. 이 코드 편집기를 사용하여 HTML, CSS 및 JavaScript 코드를 테스트할 수 있습니다. 이 코드 편집기를 사용하여 자신의 웹사이트를 만들 수도 있습니다.

    작가


  • Varshith V Hegde
  • Portfolio
  • 좋은 웹페이지 즐겨찾기