Backbone.js는 자바스크립트 기반의 웹 애플리케이션을 개발할 때 사용되는 프론트엔드 웹 프레임워크입니다. Backbone.js를 사용하면 애플리케이션을 구조화하고 모듈화할 수 있으며, 데이터와 뷰 사이의 상호작용을 용이하게 만들어 줍니다.
1. Model
Model은 Backbone.js의 핵심 요소 중 하나로, 애플리케이션의 데이터를 나타냅니다. Model은 서버에서 가져온 데이터를 저장하고 관리하며, 필요한 경우 서버로부터 데이터를 업데이트하거나 전송할 수도 있습니다. Model은 데이터를 변경할 수 있는 메서드나 이벤트를 제공하므로, 애플리케이션에서 데이터의 상태 변화를 감지하고 처리할 수 있습니다.
var User = Backbone.Model.extend({
defaults: {
name: '',
age: 0
},
initialize: function() {
console.log('User model initialized');
}
});
var user = new User({ name: 'John', age: 25 });
console.log(user.get('name')); // 'John'
2. View
View는 애플리케이션의 사용자 인터페이스를 담당하는 역할을 합니다. View는 HTML 템플릿과 JavaScript 로직을 조합하여 화면에 표시될 내용을 구성합니다. Backbone.js는 View로부터 이벤트를 수신하여 필요한 로직을 처리하거나 Model과의 상호작용을 담당합니다.
var UserView = Backbone.View.extend({
el: '#user-container',
template: _.template('<p>Name: <%= name %></p>'),
events: {
'click button': 'showAge'
},
initialize: function() {
this.listenTo(this.model, 'change', this.render);
},
render: function() {
this.$el.html(this.template(this.model.attributes));
return this;
},
showAge: function() {
console.log('Age: ' + this.model.get('age'));
}
});
var userView = new UserView({ model: user });
userView.render();
3. Router
Router는 Backbone.js의 또 다른 주요한 기능으로, URL 경로와 애플리케이션의 상태를 매핑합니다. Router를 사용하면 URL의 변화에 따라 해당하는 적절한 View를 표시하거나 로직을 수행할 수 있습니다. 또한, Router는 브라우저의 뒤로 가기와 같은 기능을 구현할 수 있어 사용자 경험을 향상시킵니다.
var AppRouter = Backbone.Router.extend({
routes: {
'': 'home',
'user/:id': 'userDetails'
},
home: function() {
console.log('Home page');
},
userDetails: function(id) {
console.log('User details for: ' + id);
}
});
var appRouter = new AppRouter();
Backbone.history.start();
결론
Backbone.js는 자바스크립트 기반의 웹 애플리케이션 개발을 위한 강력한 도구입니다. Model, View, Router 등의 구성요소를 통해 애플리케이션을 구조화하고 유지보수하기 쉽게 만들어 주며, 강력한 이벤트 시스템을 통해 사용자 인터페이스와 데이터의 상호작용을 용이하게 할 수 있습니다.
참고 자료: