Ember에서 애플리케이션의 상태는 URL로 표현한다. 각 URL은 사용자에게 보이는 것을 제어하는, 상응하는 루트가 있다.
모델(Models)
모든 루트는 이와 연결되는 모델이 있으며, 애플리케이션의 현재 상태에 관한 데이터를 담고 있다.[13] 서버의 JSON 객체를 불러들여 해당 객체들을 모델로 사용하기 위해 jQuery를 사용할 수 있지만, 대부분의 애플리케이션들은 Ember 데이터 등의 모델 라이브러리를 사용하여 이를 관리한다.
템플릿(Templates)
애플리케이션의 HTML을 빌드하기 위해 템플릿을 사용할 수 있으며 HTMLBars 템플릿 언어로 작성한다. (HTMLBars는 문자열이 아닌 DOM 요소를 만드는 핸들바이다.)[14]
컴포넌트(Components)
컴포넌트는 사용자 지정 HTML 태그이다. 자바스크립트를 사용하여 동작을 구현하며 보이는 형태는 HTMLBars 템플릿을 사용하여 정의한다. 컴포넌트는 자신의 데이터를 "소유"한다. 네스트(nest) 처리할 수 있으며 액션(이벤트)를 통해 부모 컴포넌트와 통신할 수 있다. Polymer 등 다른 컴포넌트 라이브러리들을 Ember에 사용할 수도 있다.[15]
서비스(Services)
서비스는 사용자 세션 등 장기간 데이터를 보유하기 위한 싱글톤(singleton) 객체이다.[16]