Hybind for composing User Interfaces - TheOpenCloudEngine/uEngine-cloud GitHub Wiki
μ΄λ²μκ°μλ Hybind λ₯Ό ν΅νμ¬ λ§μ΄ν¬λ‘ μλΉμ€μ UIλ₯Ό μ°κ²°νλ λ°©λ²μ μ΄ν΄λ³Έλ€.
κ·Έμ μ Course.vue μ CourseManagement.vue μ μ€κ³ λ°©λ²μ μ΄ν΄λ³΄μ.
λκ°μ νμΌμ νλλ‘ λ¬Άμ΄λ μΆ©λΆν μ¬μ©μ΄ κ°λ₯νμ§λ§,
Course.vue νμΌμ μμ ν μΈλΆμ λ¨μ μ μμΌ λμλ€.
μ΄ λ§μ Course.vue λ μΈλΆμ ν΅μ νλ ajax μ½λλ μκ³ , λ¨μ§ νλ©΄λ‘μ§λ§ λ€μ΄κ° μλ€.
κ·Έλ¦¬κ³ μ΄κ²μ μΆκ°,μμ λ±μ Management μμ νλλ‘ κ΅¬νμ νμ¬ μν λΆλ¦¬λ₯Ό νμ€ν νμλ€.
μ΄λ local κ°λ° ν prod νκ²½μΌλ‘ λμ΄κ°μ κ°μ λ€λ₯Έ back-end λ₯Ό νΈμΆνλ κ²½μ°,
μ΄λ κ² λΆλ¦¬λ₯Ό νμ¬ μ¬μ¬μ©λλ₯Ό λμΌ μ μλ€.
updateCourse(course){
// 1λ²λ°©λ² : ajax call
$.ajax({
url: course._links.self.href,
method: 'PUT',
contentType: "application/json",
data: JSON.stringify(course),
success:
function(result){
alert('Successfully Updated!');
},
})
// 2λ²λ°©λ² : vue-resource
this.$http.put(course._links.self.href).then(response => {
this.someData = response.body;
alert('Successfully Updated!')
}, error => {
// error callback
});
// 3λ²λ°©λ² : hybind
course.$save().then(function(){
alert('Successfully Updated!')
});
}
μμ μμ μμ http λ₯Ό νΈμΆνλ 3κ°μ§ λ°©λ²μ κΈ°μ νμλ€.
μ¬λ¬ λͺ¨λλ€μ μ°λ©΄ λμ± λ€μν λ°©λ²μ΄ μμ§λ§ λνμ μΈ λ°©λ²λ€λ§ κΈ°μ νμλ€.
1λ² ajax λ°©μμ jquery λ₯Ό μ¬μ©ν λμ€μ μΈ λ°©λ²μ΄λ€.
2λ² λ°©λ²μ vue μμ λ§λ http λͺ¨λμ μ¬μ©νμ¬ get, post, put, delete λ±μ μ½κ² νΈμΆνλ
MVVM νλ μμν¬λ₯Ό μ¬μ©ν λ κ°μ₯ λμ€μ μΈ λ°©λ²μ΄λ€.
κ·Έλ¬λ 1,2 λ² λ°©μμ μ¬μ©ν λλ url μ νλ©΄λ¨μ 맀νμ ν΄μΌνλ€λ μ μ΄ μλ€.
HATEOAS API λ₯Ό μ¬μ©νμμλ 3λ²μ²λΌ Hybind λ₯Ό μ¬μ© νμ¬ urlμ μ¨κΈΈ μκ° μλ€.
HATEOAS μλ μκΈ° μμ μ link μ μ°κ²°λ μ μλ link μ 보 λ° κ°μ²΄μ property κΉμ§ λͺ¨λ κ°μ§κ³ λ€λλ€.
Hybind μμλ λ€μκ³Ό κ°μ΄ window.backend = hybind("http://localhost:8080/")
μ΅μμ λ§ν¬λ§ μ μΈμ ν΄ λμΌλ©΄ νμ λ§ν¬λ€μ HATEOAS API λ₯Ό ν΅νμ¬ μλμΌλ‘ μ°Ύμ 맀μΉμ ν΄μ€λ€.