The Pursuit of Happyness

반응형

이번에는 OpenUI5 를 이용해서 간단한 웹 애플리케이션을 만들어 보겠습니다.


프로그래밍 언어를 처음 배울때 늘 보게되는 Hello World 를 화면상에 나타내는 코드 입니다.


HTML에서 간단하게 Hello World 라고만 써줘도 되지만, 추후에 기능이 많고 복잡한 웹 애플리케이션을 제작하기 위해서 기본 프레임을 만들어 보는 연습을 한다고 생각하시면 되겠습니다.


이 예제에서는 Javascript View를 이용하였으며, View와 Controller를 분리하여 작성하였습니다.


웹 애플리케이션을 실행할 때 진입점이 되는 경로는 index.html 입니다.


그리고 웹 애플리케이션의 기본이 되는 코드가 담겨져 있는 app.js 파일을 js 폴더에 두었고,


View 파일과 Controller 파일을 z_fiori 라는 폴더에 생성해 두었습니다.



먼저 index.html 파일을 살펴보면, 다음과 같습니다.


<!DOCTYPE html> <html> <head> <meta http-equiv='X-UA-Compatible' content='IE=edge' /> <title>OpenUI5</title> <script id='sap-ui-bootstrap' src='https://openui5.hana.ondemand.com/resources/sap-ui-core.js' data-sap-ui-theme='sap_bluecrystal' data-sap-ui-libs='sap.m'> </script> <script type="text/javascript" src="js/app.js"></script> </head> <body class="sapUiBody"> <div id="content"></div> </body> </html>


UI5 라이브러리는 제공해주는 CDN URL을 링크해서 최신버전에 맞춰두었습니다.


그리고 애플리케이션 기본 코드인 app.js 를 포함시킵니다.



다음으로 app.js 파일을 살펴봅니다.


sap.ui.localResources("z_fiori"); var sapApp = new sap.m.App(); sapApp.placeAt("content"); sapApp.addPage( sap.ui.view("view.HelloWorld", { viewName: "z_fiori.HelloWorld" , type: sap.ui.core.mvc.ViewType.JS }) );


먼저 sap.ui.localResources 를 이용해서 z_fiori 폴더를 리소스 경로로 지정합니다.


리소스 경로로 지정하고 나면, require 기능을 이용해서 해당 폴더에 있는 파일들을 로딩할 수 있습니다.


다음으로 App 객체를 생성해서 index.html 에 있는 "content" 라는 영역에 위치시킵니다.


마지막으로 App 객체에 뷰에 해당하는 페이지를 추가하여 줍니다.


viewName으로 z_fiori.HelloWorld 를 지정해 주었으므로, 앞에서 지정한 z_fiori 리소스 폴더에 HelloWorld.view.js 파일과 HelloWorld.controller.js 파일을 생성해 줍니다.



HelloWorld.view.js 파일은 다음과 같습니다.


sap.ui.jsview("z_fiori.HelloWorld", {
    getControllerName: function() {
        return "z_fiori.HelloWorld";
    }
    , createContent: function(oController) {
        var oPage = new sap.m.Page();

        oPage.addContent(
                new sap.m.Text({text: "HelloWorld"})
        );
        
        return oPage;
    }
});


뷰에서는 컨트롤러 이름을 설정하고, 화면에 표시될 UI 컨트롤들을 배치합니다. 웹 애플리케이션의 특성상 대부분 CSS에서 보여주는 부분을 수정하겠지만, 간단한 배치는 속성값을 지정해서 처리할 수도 있습니다.



마지막으로 HelloWorld.controller.js 파일 입니다.


sap.ui.controller("z_fiori.HelloWorld", {
    onInit: function() {
    }
});


아직은 컨트롤러에서 하는 일이 없으므로 그냥 위와 같은 형태만 만들어 줍니다.


이렇게 구성하고 나서 웹브라우저로 열어보면 대략 다음과 같은 화면이 나옵니다.


처음 index.html 파일에서 SAP 의 Blue Crystal theme을 기본 theme으로 사용하겠다고 지정했기 때문에 위와 같은 바탕화면이 나오게 됩니다.


또한 sap.m.Page 는 기본 설정에서 위쪽에 흰색 바탕으로된 헤더 영역이 생기게 되며, 필요하지 않은 경우 제거할 수도 있습니다.


추후에 기본 UI 컨트롤들에 대해서 더 알아보도록 하겠습니다.




소스 코드는 아래 git 링크에서 받아 보실 수 있습니다.


https://github.com/shineum/openui5/tree/Ch01_Hello_World




반응형

반응형

오늘은 SAP 쪽에서 웹 클라이언트 개발에 많이 사용되는 OpenUI5 프레임워크에 대해서 설명해 보겠습니다.


OpenUI5 는 http://openui5.org/ 홈페이지에서 Apache 2.0 라이센스로 무료로 배포하고 있습니다.


기업용 소프트웨어를 오랜동안 서비스해서 인지, 프레임워크가 상당히 깔끔하고 안정된 느낌입니다.



웹사이트에서 소개된 Key Features의 제목은 다음과 같습니다.


1. 엔터프라이즈  웹 툴킷


2. 파워풀한 개발 컨셉


3. 풍부한 UI 컨트롤을 제공


4. 일관성 있는 사용자 경험


5. 무료로 배포되는 오픈소스


6. 웹 브라우저 및 휴대용 기기에서 같이 사용가능한 반응형




Get Started 섹션에서는 OpenUI5를 사용하는 기본적인 방법이 소개되어 있습니다. OpenUI5를 사용법은 다음과 같습니다.


1. 웹페이지가 로딩될 때 UI5 라이브러리가 로딩될 수 있게 스크립트를 추가합니다. 


먼저 소스코드는 다음과 같은데, OpenUI5 라이브러리를 resources 폴더에 미리 준비해 두거나 (다운로드 받아서 압축 해재) sap cdn 링크로 걸어 주면 됩니다.


<!DOCTYPE html>
<html>
<head>
<meta http-equiv='X-UA-Compatible' content='IE=edge' />
<title>Hello World</title>

<script id='sap-ui-bootstrap'
    src='resources/sap-ui-core.js'
    data-sap-ui-theme='sap_bluecrystal'
    data-sap-ui-libs='sap.m'
    data-sap-ui-compatVersion='edge'
    data-sap-ui-preload='async'>
</script>

<script>
     sap.ui.getCore().attachInit(function () {
         jQuery("#content").html("Hello World - UI5 is ready");
     });
</script>

</head>
<body class='sapUiBody'>
    <div id='content'></div>
</body>
</html>


OpenUI5 에 jquery.sap 라이브러리가 포함되어 있어서 별도로 jQuery 라이브러리를 추가하지 않아도 jQuery 기능을 사용할 수 있습니다. (물론 포함되어 있는 라이브러리 버전에 따라 지원되는 내용이 다를 수 있습니다.)


AngularJS 등의 프레임워크를 사용해 보신 분들은 쉽게 이해하실 수 있는 코드라 생각됩니다. body에 div 엘리먼트를 준비해 두고, 자바스크립트를 이용하여 페이지가 로딩될 때, div 에 "Hello World - UI5 is ready" 라는 텍스트를 넣어주게 됩니다.


2. OpenUI5 컨트롤을 이용합니다.


<!DOCTYPE html>
<html>
<head>
<meta http-equiv='X-UA-Compatible' content='IE=edge' />
<title>Hello World</title>

<script id='sap-ui-bootstrap'
    src='resources/sap-ui-core.js'
    data-sap-ui-theme='sap_bluecrystal'
    data-sap-ui-libs='sap.m'
    data-sap-ui-compatVersion='edge'
    data-sap-ui-preload='async'>
</script>

<script>
    sap.ui.getCore().attachInit(function () {
        new sap.m.Text({
            text: "Hello World"
        }).placeAt("content");
    });
</script>

</head>
<body class='sapUiBody'>
    <div id='content'></div>
</body>
</html>


위에서는 jQuery를 이용하여 div 엘리먼트에 값을 넣어 주었다면, 이번에는 OpenUI5에 있는 UI 컨트롤 객체(여기서는 sap.m.Text)를 생성해서 컨트롤 객체의 메쏘드 placeAt을 이용하여 해당 div 엘리먼트에 컨트롤 객체를 설정해 주었습니다.


3. XML 뷰 (코드는 http://openui5.org/getstarted.html#step3 에서 확인하세요)

웹 애플리케이션의 View를 XML 로 만들어서 별도의 파일로 생성합니다. 나중에 나오지만 OpenUI5는 XML 이외에도 Javascript 나 HTML 형태의 View도 지원하기 때문에 필요한 형태의 View를 사용하시면 됩니다. 뷰 파일명은 *.view.xml 형식의 컨벤션을 사용합니다. 웹페이지의 설명에서는 App.view.xml 이라는 이름을 사용했습니다.


4. 컨트롤러 (코드는 http://openui5.org/getstarted.html#step4 에서 확인하세요)

뷰와 마찬가지로 컨트롤러도 별도의 파일로 생성을 합니다. 

컨트롤러에 대한 컨벤션입니다.

- 컨트롤러 이름의 첫글자는 대문자를 사용한다.

- 연관된 뷰와 1:1 로 매칭시키며, 같은 이름을 사용한다.

- 이벤트 핸들러는 "on"으로 시작한다.

- 컨트롤러 파일명은 *.controller.js 로 끝난다.


5. 데이터 바인딩 (코드는 http://openui5.org/getstarted.html#step5 에서 확인하세요)

UI 컨트롤 객체에 데이터 모델을 연결합니다.

예제에서는 컨트롤러에서 JSON 모델을 생성하고, 뷰를 가지고 와서 생성한 JSON 모델을 세팅합니다.

뷰에서는 Input (sap.m.Input) 객체를 생성하면서 value 를 모델의 /recipient/name 값에 연결시킵니다.

또한 description 도 모델의 /recipient/name 과 연결합니다.

이렇게 연결을 해 두면 사용자가 Input 의 값을 변경하면, 연결된 모델의 /recipient/name 값이 같이 변경되며, 반대로 컨트롤러에서 모델의 /recipient/name 값을 변경하면, Input 값도 같이 변경이 됩니다. (value 와 description)

XML 뷰에서의 데이터 바인딩 문법은 다음과 같습니다.

- 중괄호"{ ... }" 는 데이터 바인딩이 사용되었음을 나타냄

- "/recipient/name" 은 해당 모델에서의 경로를 선언함




반응형