YUI 라이브러리

**YUI 라이브러리**(YUI Library, The Yahoo! User Interface Library)는 Ajax, DHTML, DOM 스크립팅과 같은 기술을 사용하여 풍부한 대화형 웹 애플리케이션을 구축하기 위한, 지금은 중단된 오픈 소스 자바스크립트 라이브러리다. YUI는 여러 핵심 CSS 리소스를 포함한다. BSD 라이선스로 제공된다. YUI의 개발은 2005년에 시작되었으며, 마이 야후!와 야후! 전면 페이지 같은 야후!의 서비스들은 그해 여름부터 YUI를 사용하기 시작했다. YUI는 2006년 2월에 공개용으로 출시되었다. 야후! 엔지니어들로 구성된 핵심 팀에 의해 활발히 개발되었다.

2009년 9월, 야후!는 라이브러리를 현대화하고 YUI 2에서 배운 교훈을 통합하기 위해 기초부터 다시 구축한 새로운 버전인 YUI 3를 출시했다. 향상된 기능 중에는 DOM 요소를 검색하기 위한 제이쿼리와 같은 CSS 선택자 구동 엔진, 모듈의 세분화에 대한 더 큰 강조, 필요할 때 다른 모듈을 로드하는 더 작은 시드 파일, 그리고 코드 작성을 더 빠르고 쉽게 만들기 위한 다양한 구문 변경이 포함되어 있다.

야후!의 YUI 라이브러리 프로젝트는 토마스 샤에 의해 설립되었으며 야후!의 공동 설립자인 제리 양의 내부 후원을 받았다. 주요 설계자는 샤, 아담 무어, 맷 스위니였다. 라이브러리 개발자들은 YUIBlog를 운영하며, YUI 커뮤니티는 커뮤니티 포럼에서 라이브러리와 그 구현에 대해 논의한다.

2014년 8월 29일, 야후!에 의한 YUI의 활발한 개발이 종료될 것이라고 발표되었다. 자바스크립트 표준의 진화, 개발자들의 대형 자바스크립트 라이브러리에 대한 관심 감소, 서버 측 솔루션의 확산 등이 그 이유로 꼽혔다. 향후 개발은 "야후! 서비스에 절대적으로 중요한" 문제를 해결하기 위한 유지 관리 릴리스로 제한될 예정이다.

## 기능
YUI 라이브러리는 웹사이트에 완벽하게 문서화되어 있으며, 라이브러리 다운로드 시 상세한 API 문서가 동봉된다. YUI 핵심, 유틸리티, UI 컨트롤, CSS 컴포넌트, 개발자 도구, 빌드 도구의 여섯 가지 구성 요소 유형이 있다.

### 핵심
YUI 핵심(Core)은 이벤트 관리 및 DOM 조작을 위한 가벼운(압축 시 31KB) 도구 세트다.

; YUI 전역 객체
: YUI 전역 객체는 언어 유틸리티, 스크립트 로더 및 YUI를 위한 기타 기본 인프라를 포함한다.
; Dom 컬렉션
: 요소 배치 및 CSS 스타일 관리를 포함하여 일반적인 DOM 스크립팅 작업을 돕는다.
; 이벤트 유틸리티
: 개발자에게 브라우저 이벤트(마우스 클릭 및 키 누름 등)에 대한 쉽고 안전한 액세스를 제공한다. 또한 사용자 정의 이벤트를 발행하고 구독하기 위한 사용자 정의 이벤트 객체를 제공한다.

### 유틸리티
; 애니메이션
: 페이지 요소의 위치, 크기, 불투명도 또는 기타 특성을 애니메이션화하여 "효과"를 만드는 데 도움을 준다.
; 브라우저 히스토리 관리자
: 웹 애플리케이션이 브라우저의 뒤로 가기 버튼과 북마크 기능을 사용할 수 있도록 돕는다.
; 커넥션 관리자
: XMLHttpRequest 트랜잭션을 크로스 브라우저 방식으로 관리하도록 돕는다. 폼 게시, 오류 처리, 콜백 및 파일 업로드를 통합 지원한다.
; 쿠키
: 단순한 API를 통해 브라우저 쿠키 및 하위 쿠키를 관리할 수 있게 한다.
; 데이터 소스
: 단순한 자바스크립트 배열부터 XHR을 통한 온라인 서버에 이르기까지, 다른 컴포넌트들이 다양한 유형의 데이터와 상호작용할 수 있도록 공통의 구성 가능한 인터페이스를 제공한다.
; 드래그 앤드 드롭
: YUI 드래그 앤드 드롭 유틸리티를 사용하면 요소를 "드래그 가능"하게 만들고 드래그 이벤트에 반응하는 드롭 대상을 쉽게 만들 수 있다.
; 엘리먼트
: DOM의 HTML 요소를 위한 래퍼를 제공하며 리스너 추가, DOM 조작, 속성 설정 및 가져오기 등의 일반적인 작업을 단순화한다.
; 겟 (Get)
: 겟 유틸리티는 스크립트 노드를 통한 데이터 및 스크립트의 비동기 로딩과 외부 CSS 파일의 동적 로딩을 지원한다.
; 이미지 로더
: YUI의 이미지 로더를 사용하면 페이지 로드 시 뷰포트에 보이지 않는 이미지의 로딩을 지연시킬 수 있다. 이는 큰 성능 향상을 가져올 수 있다.
; JSON
: JSON 유틸리티는 들어오는 JSON 데이터가 안전한지 검증하는 메서드와 자바스크립트 데이터를 JSON 형식의 문자열로 변환하는 메서드를 제공한다. 이 메서드들은 JSON.org에서 더글라스 크록포드가 작업한 내용을 바탕으로 한다.
; 리사이즈
: 모든 블록 레벨 HTML 요소를 크기 조절 가능하게 만들 수 있다.
; 셀렉터
: YUI 셀렉터 유틸리티는 CSS3 선택자 구문을 통해 HTML 요소에 대한 참조를 가져올 수 있게 한다.
; YUI 로더
: YUI 로더는 모든 YUI 컴포넌트(및 종속성)를 즉석에서 동적으로 로드할 수 있는 클라이언트 측 로더 엔진이다.

### 컨트롤
; 자동 완성
: 텍스트 입력과 관련된 사용자 상호작용을 위해 자동 완성 기능(제안 목록 및 미리 입력 기능)을 제공한다. 다양한 데이터 소스 형식을 지원하며, XMLHttpRequest를 통한 서버 측 데이터 소스도 지원한다.
; 버튼
: 전통적인 HTML 폼 버튼처럼 작동하는 풍부한 그래픽 버튼을 생성할 수 있게 한다.
; 캘린더
: 날짜 선택에 사용되는 그래픽적이고 동적인 컨트롤이다.
; 차트
: 차트 컨트롤은 데이터 소스 유틸리티를 통해 데이터를 가져와 다양한 일반 차트 형식(선, 막대, 원형 등)으로 표시한다.
; 컬러 피커
: 컬러 피커 컨트롤은 색상 선택을 위한 풍부한 시각적 인터페이스를 제공한다.
; 컨테이너
: 말풍선, 패널, 대화 상자, 단순 대화 상자, 모듈 및 오버레이를 포함한 다양한 DHTML 윈도잉 패턴을 지원한다.
; 데이터 테이블
: 웹 페이지에 스크린 리더가 접근 가능한 표 형식의 데이터를 표시하는 단순하면서도 강력한 API다. 주요 기능으로는 열 정렬, 페이지 매김, 스크롤, 행 선택, 열 크기 조절 및 인라인 편집이 있다.
; 이미지 크로퍼
: 이미지 크로퍼는 클라이언트 측 이미지 자르기를 위한 UI와 상호작용 요소를 제공한다.
; 레이아웃 관리자
: 상단, 하단, 좌측, 우측 및 중앙 레이아웃 단위를 포함하는 고정 레이아웃을 제공하여 적은 노력으로 크로스 브라우저 호환 및 픽셀 단위로 완벽한 레이아웃을 만들 수 있게 한다.
; 메뉴
: 플라이아웃 메뉴, 메뉴 바 및 컨텍스트 메뉴를 만들기 위한 쉬운 API를 제공한다.
; 리치 텍스트 에디터
: YUI 리치 텍스트 에디터는 모듈식이며 고도로 구성 가능한 정교한 클라이언트 측 텍스트 프로세서로, 모든 자유 형식의 텍스트 입력 상황에 적합하다.
; 슬라이더
: 사용자가 하나 또는 두 개의 축에서 유한한 값 범위 내에서 선택할 수 있도록 하는 일반적인 슬라이더 요소를 제공한다.
; 탭 뷰
: 콘텐츠의 탐색 가능한 탭 보기를 제공하며, XMLHttpRequest를 통한 탭 콘텐츠의 동적 로딩을 지원한다.
; 트리 뷰
: 노드를 확장하거나 축소할 수 있는 콘텐츠 트리를 생성한다.
; 업로더
: 업로드 진행 상황에 대한 피드백과 함께 여러 파일의 업로드를 허용한다.

### CSS 리소스
; CSS 베이스
: 웹 개발자들에게 익숙한 표준 브라우저 CSS 규칙에 대해 일관된 크로스 브라우저 대체 기능을 제공하기 위해 리셋(Reset) 후에 베이스(Base)를 사용한다.
; CSS 그리드
: 1000개 이상의 다양한 페이지 레이아웃을 지원하는 하위 섹션 컴포넌트가 포함된 7가지 기본 페이지 와이어프레임이다.
; CSS 폰트
: 표준화된 크로스 브라우저 글꼴 제품군 및 크기 렌더링을 제공한다.
; CSS 리셋
: CSS 선언을 통해 여백을 제거하고 공통 요소에 대해 크로스 브라우저 렌더링을 표준화한다.

### 개발자 도구
; 로거
: 로그 메시지를 화면상의 콘솔, 모질라 파이어폭스용 파이어버그 확장 기능 또는 사파리 자바스크립트 콘솔에 빠르고 쉽게 쓸 수 있는 방법을 제공한다.
; 프로파일러
: 자바스크립트를 위한 크로스 브라우저 비시각적 코드 프로파일러다.
; 프로파일 뷰어
: 프로파일러와 함께 사용하여 프로파일링 데이터를 그래픽(차트 컨트롤 사용) 및 표 형식(데이터 테이블 사용)으로 풍부하게 시각화한다.
; YUI 테스트
: YUI 테스트는 브라우저 기반 자바스크립트 솔루션을 위한 테스트 프레임워크다. YUI 테스트를 사용하면 자바스크립트 솔루션에 단위 테스트를 쉽게 추가할 수 있다. 특정 xUnit 프레임워크에서 직접 이식된 것은 아니지만, YUI 테스트는 nUnit 및 JUnit의 일부 특성을 계승했다.

### 빌드 도구
; YUI 컴프레서
: YUI 컴프레서는 자바스크립트와 CSS를 안전하게 압축(minify)하는 도구다.
; YUIDoc
: YUIDoc은 자바스크립트 코드의 검색 가능한 API 문서를 생성하는 자바스크립트 작성 도구다. 일반적으로 빌드 프로세스의 일부로 사용된다. YUIDoc은 주석 기반이며 다양한 코딩 스타일 및 프로그래밍 언어와 호환된다.

## 같이 보기
* 자바스크립트 프레임워크 비교
* CSS 프레임워크
* 자바스크립트 프레임워크
* 자바스크립트 라이브러리

## 각주

## 외부 링크
* YUI Project Site and Issue Trackers
* YUI Public Source Code Repository
* Yahoo! User Interface Blog
* Yahoo! Design Patterns Library
* YUICoder.com - Manipulating the Yahoo! User Interface

분류:Ajax
분류:자바스크립트 라이브러리
분류:BSD 라이선스 소프트웨어
분류:CSS 프레임워크