HTML(HyperText Markup Language)은 웹 페이지의 구조를 만드는 기본 언어입니다.
텍스트, 이미지, 링크, 폼 등의 요소를 정의하며, 이를 통해 웹 브라우저가 페이지를 올바르게 표시할 수 있게 합니다.

HTML은 마크업 언어로, 문서의 각 부분이 의미하는 바를 나타내기 위해 태그(tag)를 사용합니다.
HTML 파일은 .html 확장자로 저장되며, 브라우저를 통해 쉽게 열 수 있습니다.


HTML의 기본 구조

HTML 문서는 다음과 같은 기본 구조를 가지고 있습니다.

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>My First Webpage</title>
</head>
<body>
    <h1>Welcome to My Website</h1>
    <p>This is my first HTML webpage!</p>
</body>
</html>

 

  1. <!DOCTYPE html>
    • HTML5 표준 문서임을 선언하는 코드입니다. 웹 브라우저가 이 문서를 올바르게 처리할 수 있도록 합니다.
  2. <html>
    • HTML 문서의 시작과 끝을 표시하는 루트(root) 요소입니다. 모든 HTML 코드는 이 태그 안에 작성됩니다.
  3. <head>
    • 페이지의 메타데이터(페이지 제목, 문자 인코딩 정보 등)를 포함하며, 여기의 내용은 화면에 표시되지 않습니다.
  4. <meta charset="UTF-8">
    • 문서의 문자 인코딩을 설정합니다. UTF-8은 대부분의 언어를 지원하는 표준입니다.
  5. <title>
    • 웹 브라우저 탭에 표시되는 페이지 제목입니다.
  6. <body>
    • 웹 페이지에 보이는 모든 콘텐츠(텍스트, 이미지, 링크 등)가 포함되는 부분입니다. 사용자가 볼 수 있는 모든 요소는 이 태그 안에 작성됩니다.

HTML의 주요 태그

1. 제목 태그 (<h1> ~ <h6>)

  • 제목을 나타내는 태그로, <h1>은 가장 큰 제목, <h6>은 가장 작은 제목을 나타냅니다
<h1>Main Title</h1>
<h2>Subtitle</h2>
<h3>Section Title</h3>

2. 단락 태그 (<p>)

  • 문단을 나타내며, 주로 텍스트를 블록 형태로 표시합니다.
<p>This is a paragraph of text.</p>

3. 링크 태그 (<a>)

  • 하이퍼링크를 만들 때 사용하는 태그입니다. href 속성으로 링크할 URL을 지정합니다.
<a href="https://www.example.com">Go to Example Website</a>

4. 이미지 태그 (<img>)

  • 이미지를 삽입할 때 사용하며, src 속성에 이미지 경로를 지정하고, alt 속성에 대체 텍스트를 제공합니다.
<img src="image.jpg" alt="A beautiful scenery">

5. 리스트 태그

  • 순서가 있는 리스트 (<ol>)
<ol>
    <li>First item</li>
    <li>Second item</li>
    <li>Third item</li>
</ol>
  • 순서가 없는 리스트 (<ul>)
<ul>
    <li>First item</li>
    <li>Second item</li>
    <li>Third item</li>
</ul>

6. 테이블 태그 (<table>)

  • 표를 만들 때 사용하며, <tr>는 행(row)을, <td>는 셀(cell)을 나타냅니다.
<table>
    <tr>
        <th>First Name</th>
        <th>Last Name</th>
    </tr>
    <tr>
        <td>John</td>
        <td>Doe</td>
    </tr>
</table>

7. 입력 폼 태그 (<form>)

  • 사용자 입력을 받을 수 있는 폼을 만듭니다.
<form action="/submit" method="POST">
    <label for="name">Name:</label>
    <input type="text" id="name" name="name">
    <input type="submit" value="Submit">
</form>

8. 주석 (<!-- -->)

  • 코드에 주석을 추가하며, 브라우저에 표시되지 않습니다.
<form action="/submit" method="POST">
    <label for="name">Name:</label>
    <input type="text" id="name" name="name">
    <input type="submit" value="Submit">
</form>

HTML 속성(Attribute)

각 HTML 태그는 속성을 가질 수 있으며, 속성은 태그에 추가 정보를 제공합니다. 속성은 이름과 값으로 구성됩니다.

예를 들어:

<a href="https://www.example.com" target="_blank">Example Link</a>
  • href: 링크의 목적지 URL을 나타냅니다.
  • target="_blank": 링크를 새 창이나 새 탭에서 열도록 설정합니다.

HTML 작성 시 유의 사항

  1. 태그 중첩 규칙
    <p>This is a <strong>bold</strong> word in a sentence.</p>
  2. HTML 태그는 중첩될 수 있지만, 올바른 순서로 닫혀야 합니다.
  3. 빈 태그(Empty Tag)
  4. 일부 태그는 닫는 태그가 필요 없으며, 예를 들어 <img> 또는 <br>(줄바꿈) 태그가 해당됩니다.
  5. 유효한 문서 작성
  6. HTML은 W3C의 표준을 준수해 작성하는 것이 좋으며, 이를 통해 다양한 브라우저에서 웹 페이지가 제대로 표시될 수 있습니다

'EDU > Web 시작하기' 카테고리의 다른 글

기초 개념 정리 (쉽게)  (0) 2024.11.02

HTML (HyperText Markup Language)

웹 페이지와 웹 애플리케이션을 만드는 데 사용되는 마크업 언어로, 문서의 구조를 정의하고 콘텐츠를 표시합니다.
HTML 문서(.html)는 브라우저(Chrome, Edge 등)에서 해석되어 사람이 읽을 수 있는 웹 페이지로 표시됩니다.

예시: 엑셀 문서(.xlsx)는 엑셀 프로그램을 통해 사람이 볼 수 있게 되는 것과 비슷한 개념입니다.


CSS (Cascading Style Sheets)

웹 페이지의 스타일과 레이아웃을 정의하는 언어로, HTML과 함께 사용하여 웹 페이지의 디자인을 구성합니다.
CSS를 사용하면 글꼴, 색상, 간격, 배치 등을 손쉽게 제어할 수 있어 정적인 HTML 문서를 더 아름답게 꾸밀 수 있습니다.


JavaScript

웹 페이지를 동적으로 만들고 상호작용을 추가하는 프로그래밍 언어입니다.
HTML이 구조를, CSS가 디자인을 담당한다면, JavaScript는 사용자 상호작용, 애니메이션, 데이터 검증, API 호출 등 웹 페이지의 동작을 제어합니다.
즉, 정적인 HTML 문서를 동적으로 만들어주는 스크립트 언어입니다.


요약

HTML 문서를 CSS로 아름답게 디자인하고, JavaScript로 상호작용을 추가하여
브라우저(Chrome, Edge 등)를 통해 최종 문서를 사용자에게 표시합니다.

 

'EDU > Web 시작하기' 카테고리의 다른 글

HTML 기초 가이드: 웹 페이지 구조 만들기  (0) 2024.11.02
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>URL Encoding/Decoding</title>
  <style>
    .container {
      max-width: 600px;
      margin-top: 2rem;
      padding: 2rem;
      background-color: #fff;
      border-radius: 5px;
      box-shadow: 0 0 5px rgba(0,0,0,0.1);
    }

    .result-text {
      color: #444;
      background-color: #f2f2f2;
    }
  </style>
</head>
<body>
  <div class="container">
    <h1 class="text-center mb-4">URL Encoding/Decoding</h1>
    <div class="form-group">
      <label for="input-textarea">Enter URL:</label>
      <textarea id="input-textarea" class="form-control" placeholder="Enter URL" rows="5"></textarea>
    </div>
    <div class="form-group">
      <button id="encode-button" class="btn btn-primary btn-block" onclick="encode()">Encode</button>
      <button id="decode-button" class="btn btn-secondary btn-block" onclick="decode()">Decode</button>
    </div>
    <div class="form-group">
      <label for="output-textarea" class="font-weight-bold">Result:</label>
      <textarea id="output-textarea" class="form-control result-text" rows="5" readonly></textarea>
    </div>
    <div class="form-group">
      <button id="copy-button" class="btn btn-secondary btn-block" onclick="copyResult()">Copy</button>
    </div>
  </div>


  <script>
    function encode() {
      const input = document.getElementById("input-textarea").value;
      const output = encodeURIComponent(input);
      document.getElementById("output-textarea").value = output;
    }

    function decode() {
      const input = document.getElementById("input-textarea").value;
      const output = decodeURIComponent(input);
      document.getElementById("output-textarea").value = output;
    }

    function copyResult() {
      const outputTextarea = document.getElementById("output-textarea");
      outputTextarea.select();
      outputTextarea.setSelectionRange(0, 99999); // For mobile devices
      document.execCommand("copy");
      alert("Result copied to clipboard.");
    }
  </script>
</body>
</html>

1. 배열에서 유니크 한 값 추출 

let numbers = [1,2,3,3,4,4,5,5,6];

// 배열에서 유니크한 값 추출
let uniqueNumbers = numbers.filter((item, index, array) => {
 return array.indexOf(item) === index;
 });

console.log(uniqueNumbers);

 결과   [1,2,3,4,5,6] 


2. Object 배열에서 유니크한 값 추출 

let objDatas = [
    {
        name : "찌끼찌기",
        age : "20"
    },{
        name : "차차",
        age : "24"
    },{
        name : "붐붐",
        age : "25"
    },{
        name : "랄랄라",
        age : "25"
    }
];

// objDatas 에서 나이가 유니크한 데이터
let uniqueObjDatas = objDatas.filter((item, index, array) => {
    return array.findIndex(i => i.age === item.age) === index;
});

console.log(uniqueObjDatas);

 결과   [{name:'찌끼찌기', age: '20'}, {name:'차차', age: '24'}, {name:'붐붐', age: '25'}] 

 

※ Code Tip 

 i.age === item.age 이부분을 i.name === item.name 처럼 수정/응용하여 사용하시면 됩니다.


Note Page 2 - End 


가끔 필요하지만 막상 쓰려보면 없는 정규표현식 !! 정리겸 모아 보겠습니다.


1. 콤마찍기

var numberWithComma = function(x) {

    return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",");

}

 

2. 콤마빼기 

var replaceComma = function(x) {

    return x.toString().replace(/,/g,"");

}

 

3. 숫자만입력

var onlyNumber = function(x) {

    return x.toString().replace(/[^-0-9]/gi, '');

}

 

4. 하이픈제거

var replaceHyphen = function(x) {

    return x.toString().replace(/-/gi, "");

}

 

5. 전화전호 하이픈 생성

var phoneHyphen = function(x) {

    return x.toString().replace(/(^02.{0}|^01.{1}|[0-9]{3})([0-9]+)([0-9]{4})/,"$1-$2-$3");

}

 

6. 주민등록번호

var juminHyphen = function(x) {

    return x.toString().replace(/(\d{6})(\d{7})/,"$1-$2");

}

 

7. 사업자등록번호

var employerNumHyphen = function(x) {

    return x.toString().replace(/(\d{3})(\d{3})(\d{4})/,"$1-$2-$3");

}

 

 

요 페이지는 시간나는 대로 무한정 추가 하도록 하겠습니다. ^^ 

 

 

Note Page 1 - End 

대부분의 SPA(Single Page Application) FrameWork 에서는 생명주기(Life Cycle)을 

가지고 있습니다.

 

UI5도 SPA FrameWork 에 해당하며 

Controller 메서드 생명주기를 가지고 있습니다.

 

하나씩 알아 보도록 하겠습니다.

 

Step1. onInit 

View 로딩시 무조껀 1번 실행되는

function 입니다. 

여기에 시작 시 동작할 function 들을

등록 합니다.

1
2
3
onInit: function() {
        
}            

 

Step2. onBeforeRendering

Xml View가 브라우저 랜더링(화면생성)전에 실행되는 function입니다.

onBeforeRendering: function() {
 
},

 

Step3. onAfterRendering

Xml View가 브라우저 랜더링(화면생성)후에 실행되는 function입니다.

onAfterRendering: function() {
        
},

 

Step4. onExit

Xml View를 떠난 후 실행되는 function입니다.

View를 벗어난 Routing 으로 인한 이동 시

초기화 해야할 것이 있거나 실행되어야 할 

function을 등록합니다.

onExit: function() {
        
}

 

Controller에 위 function 들을 등록 할 경우

위의 상황에 따라 실행되게 됩니다.

상황에 맞게 활용하여 사용 하도록 합니다.

 

 

Note Page 7 - End 


UI5 모델바인딩에 대해 알아봅시다 ^^


모델 바인딩에는 단방향 / 양방향 바인딩이 있습니다. 

 

단방향(one-way)
처음모델의 값을 뷰에 보여주는 수직적인 구조입니다.

 

양방향(two-way)
뷰에 바인딩한 모델이 실시간으로 뷰의 값이 바뀔경우 모델에 즉시

반영되는 수평적인 구조입니다.

 

두 바인딩을 코드실습으로 알아봅시다 ^^

 

Step1.프로젝트 생성

먼저  ZBindingTEST 라는 프로젝트를 생성합니다.

(프로젝트 만들기 참조)

Project Name : ZBindingTEST

 

View Type : XML

View Name : BindingTest

 

Step2.Controller 작성

Controller 아래 경로의 BindingText.controller.js를 선택하여

_oBindingModel: new sap.ui.model.json.JSONModel(), //바인딩모델

을 입력합니다.

바인딩을 할 모델을 생성하는 작업입니다.

 

UI5 생명주기 중 화면실행시 최초실행되는 onInit function을 생성하고

oData 변수에 Json형태의 Name : “홍길동”을 추가 합니다.

( UI5 생명주기와 , JSON데이터구조는 다음에 자세히 다루도록 합니다.)

 

oBindingModel에 데이터를 셋팅

this._oBindingModel 을 불러와

.setData() : 모델에데이터삽입

에 oData를 넣어줍니다.

this._oBindingModel.setData(oData); 을 입력합니다.

 /**

   * 최초실행

   */

   onInit: function() {

       var oData = {

            Name : "홍길동"

        };

       this._oBindingModel.setData(oData);       

   }

 

oBindingModel을 View에 바인딩.

this.getView() 로 View 를 가져와 .setModel() 메서드로 바인딩 합니다.

바인딩 대상 모델은 this._oBindingModel 을 바인딩합니다.

this.getView().setModel(this._oBindingModel); 을 입력합니다.

       /**

         * 최초실행

         */

        onInit: function() {

            var oData = {

                Name : "홍길동"

            };

            this._oBindingModel.setData(oData);  

            this.getView().setModel(this._oBindingModel);     

       }

Step3.Xml뷰 작성

View 아래 경로의 BindingTest.view.xml 를 선택

<Content></Conternt> 사이에

 <Panel>

       <Text text="{/Name}" /> <!--단방향-->

       <Input type="Text" value="{/Name}" />

       <!--양방향-->

</Panel>

코드를 입력합니다.

각각 단방향  text 에  {/Name}을

양방향 input value 에  {/Name}을 입력하면

단방향/양방향 바인딩 구성이 완료됩니다. 

 

Step4.프로젝트 실행

자 이제 실행해 보겠습니다.

프로젝트 우클릭 > Run > Run as > Web Application 으로 실행합니다.

 

oBindingModel 의 Name 필드의 “홍길동“ 이 표시 되어집니다.

 

이제 아래의 input필드에  GOOD 라는 단어를 쓰고 엔터를 쳐봅시다.

위와같이 단방향 바인딩된 Text 도 함께 바뀌게 됩니다. 

양방향 바인딩으로  oBindingModel 의 Name 도 “홍길동 GOOD” 로 실시간으로 바뀌게 됩니다.

UI5는 대부분의 Json데이터를  바인딩 기반으로  View와  Controller간 데이터를 주고받습니다.  꼭 숙지하셔야 됩니다 ^^

감사합니다.

 

 

Note Page 6 - End 

UI5 에서 제공하는 샘플 및 컴포넌트 들은 최신화 되면서 버전이 올라가게 됩니다. 

클라우드 버전과는 다르게 On-premise 환경에서는 해당 버전을 다운받아 적용하여 기능을 사용합니다.

SAP UI5 시작하기 1편. 개발환경 구축  부터 시작하시는 분이라면 꼭 필수적으로 적용해주셔야 합니다.

On-premise 환경 버전업이라고 생각하시면 됩니다 ^^


Step1. 현재 내 UI5 버전 확인하기 

현재 사용중인 버전을 확인하는 방법 입니다. 

확인 하고자 하는 프로젝트( ZHELLO_WORLD ) 우클릭 > Project Settings를 클릭합니다.

SAPUI5 항목을 클릭합니다 > SAPUI5 Version을 확인합니다 ( 현재 1.52.13 ).  

 

변경할 수 있는 버전을 확인해보니 1.52.13이 최신버전입니다.

( On-premise 환경 최신버전으로 버전업을 진행하도록 해보겠습니다. )

 

 

 

 

 

Step2. UI5 최신버전 다운로드  

https://sapui5.hana.ondemand.com 주소로 이동 후 Down load 버튼을 클릭 해줍니다.

 

다음 페이지 에서 1.71  버전을 다운로드 합니다.

사용가능한 버전 확인은 here을 눌러보시면 클라우드 버전&버전별 지원기간 등을 확인 할 수 있습니다.

 

 

Step3. 다운로드 파일 적용

다운로드 파일을 Plugins에 적용합니다.

1) 폴더경로  eclipse > plugins > com.sap.webide.orionplugin_1.53.9 > ui5 이동.

2) 현재 경로에 다운받은 sapui5-sdk-1.71.24 압축을 푼뒤 폴더명을 1.71.24 로 변경합니다.

 

Step4. neo-app.json 수정 

neo-app.Json 더블클릭 > 메모장 선택

 

스크롤을 아래로 내려  1.52.13 아래에 1.71.24 내용을 추가합니다.

 

 

Step5. versionoverview.json 수정

폴더경로  eclipse > plugins > com.sap.webide.orionplugin_1.53.9 > ui5templates 이동합니다.

versionoverview.json을 수정합니다. 

versionoverview.json 더블클릭 > 메모장 선택

 

versions 아래에 1.71.2.* 내용을 추가합니다.

수정은 여기까지!! 

 

 

Step6. 버전 변경 / 확인

프로젝트의 버전변경을 진행하고 확인 합니다 아래 순서로 진행하세요 ^^

1) 서버를 중지후 orion.exe 를 재실행 합니다.

2)  Web-IDE에 접속하여 > 1. 내 UI5 버전 확인 방법을 재진행 합니다.

3) SAPUI5 버전 항목에 1.71.24 버전 확인 후 SAVE 버튼을 눌러 저장합니다.

 

여기까지 온프렘 환경에서 UI5 버전업 하기 입니다. 감사합니다.

 

 

 

Note Page 5 - End 

UI5 프로젝트 생성시 폴더구조 및 기능 알아보기!! 


3편 Hello world 까지 완료 하였다면 프로젝트 구조가 자동으로 생성된 상태 입니다.

이제 프로젝트 하위에 있는 폴더들과 파일이 어떠한 역할을 하는지 알아봅니다.

 

1. controller

화면을  Control 하는 Controller.js 들이 위치하는 폴더 입니다.

대부분 View와 1:1 연동되는 js 형태로 쓰이게 됩니다.

 

 

2. css

css 파일이 모이는 경로입니다.

기본적으로 style.css 가 생성되며 추가로 css를 만들어 등록 하기만하면 사용이 가능합니다.

 

 

3. i18n

i18n 이란?(위키참조).

기본적으로 i18n.properties 가 생성되며 등록하여 사용합니다.

 

 

4. view

XML화면이 있는 경로입니다.

controller와 1:1을 이루며 UI5 View를 작성합니다.

 

 

5. component.js

화면 실행시 선행으로 읽는 js입니다.

공통적인 부분들을 이곳에 작성하면 유용합니다.

 

 

6. index.html

Run as WepApplication으로 실행시 최초 실행되는 html입니다.

 

 

7. manifest.json

프로젝트를 설정하는 부분입니다.

js, css 파일을 사용하기위한 등록, Routing/Navigation기능 구현을 위한 등록,  oData를 사용하기위한 Model 사용등록, XMlL화면옵션제어등 다양한 제어를 정의하는 json 입니다. 

 

UI5 프로젝트 구조정리끝!!! 감사합니다.

 

 

Note Page 4 - End 

 

 

Wed-IDE 설치가 완료 되었다면 프로그램의 시작!!

UI5 Hello Wold 띄우기를 진행 해보겠습니다. 

 UI5 Web-IDE 실행 하기 시작 후 진행 합니다.


Step1. Workspace 에서 시작하기

모든 작업은 Workspace 위에서 시작합니다. Workspace 위에서 프로젝트 생성을 진행합니다.

화면 좌측 </> 클릭  >  workspace 우클릭 >  New   >  Project from Template 실행.

 

Template Selection 화면 : 생성 할 화면을 결정합니다 

카테고리(Category) 를 선택하여 All categories로 지정

전체 사용 가능한 Template들이 보여지며 이 중 SAPUI5 Application 을 선택 합니다.

 

 

Basic Information : Project Name 을 입력합니다.

Project Name에 ZHELLO_WORLD를 입력, Next 버튼을 누릅니다.

 

 

Template Customization : View Name과 Type을 결정합니다.

View Type XML을 지정합니다  이전버전에서 JavaScript View Type을 주로 사용하였으나 현재 UI5버전업이  XML 베이스를 지향하고 

XML View 위에서 Javasciprt View 코딩 및 기타 View 적용이 가능하여  XML View 로 진행하도록 합니다.

View Name 에 HelloWorld를 입력, Finish를 눌러 View생성을 완료 합니다.

 

Step2. Hello World 작성

XML View에 Text Hello Word 를 작성합니다.

1) 경로 :  Workspace > ZHELLO_WORLD > webapp > view > HelloWorld.view.xml 로   이동합니다.

2) <content> 태그 사이에 <Text text=“Hello World” />를  입력합니다.     

Xml은 html과 같이 한쌍의 태그로 이루어저 있습니다

( 내부 태그가 필요 없을시 />처리가능)            

 

 

Step3. Project 실행

Web-IDE 로컬 서버로 실행됩니다.

1) 실행 할 Project 클릭( ZHELLO_WORLD ).

 2) 마우스 우클릭 후 Run > Run as  >  Web Application  

 

 

Hello World를 확인합니다.

 

 

 

Hello world 완성 !! 감사합니다.

 

 

Note Page 3 - End 

 

+ Recent posts