posso é da seguinte maneira
eu tenho um arquivo index.js que é carregado com a pagina, ai nele eu faço isso:
let vitrineController = new VitrineController();
Arquivo VitrineController .js
==========================================
class VitrineController {
/**
* Contrutor, aqui está sendo definida as propriedades que fão parte desta classe.
*/
constructor() {
let $ = document.querySelector.bind(document);
this._VitrineView = new VitrineReferenceView($("#reference-container"));
this._vitrineDao = new VitrineDao();
this._listRecommendation = new Bind(
new ListRecommendation(),
new VitrineRecommendationView($("#slider-inner")),
"add",
"addAll",
"clean"
);
this._init();
}
/**
Método de inicialização responsavel pela chamada dos demais metodos
*/
_init() {
this._vitrineNext();
this._vitrineBack();
this._listRecommendations();
this._showReference();
}
//Este metodo carrega as informações vindas do dao e as exibe na view de referencia.
_showReference() {
let reference = this._vitrineDao
.referenceItem()
.then(e => this._VitrineView.update(e))
.catch(e => console.log(e));
}
//Este metodo carrega as recomendações, e atrvés do databind exibe os itens recomendados em uma view especifica.
_listRecommendations() {
this._vitrineDao
.listRecommendation()
.then(recommendations => {
console.log(recommendations);
this._listRecommendation.addAll(recommendations);
})
.catch(e => console.log(e));
}}
=========================================
Arquivo VitrineDao .js
=========================================
class VitrineDao {
/**
* Fornece um objeto de Reference com base no JSON recebido da função X
* Retorna uma Reference
*/
referenceItem() {
return JsonpFetch.get(
"http://linkextero.com/challenge.json?callback=X",
x => x,
"X"
).then(dataObject => {
let item = dataObject.data.reference.item;
return new Reference(
item.businessId,
item.detailUrl,
item.imageName,
item.name,
item.oldPrice,
item.price,
item.productInfo.paymentConditions
);
});
}
/**
* Processas as Recommendations recebidas da função X, motando um objeto de Recommendation adicionando-os em uma lista.
* Retorna um array de Recommendations
*/
listRecommendation() {
return JsonpFetch.get(
"http://linkextero.com/challenge.json?callback=X",
x => x,
"X"
).then(dataObject => {
let recommendations = dataObject.data.recommendation;
let listRecommendations = [];
recommendations.forEach(recommendation => {
listRecommendations.push(this._createRecommendation(recommendation));
});
return listRecommendations;
});
}
/**
*Recebe uma RecommendationData, objeto advindo da função X, o converte para um objeto Recommendation.
* @param {*} recommendationData
* Retorna uma Recommendation
*/
_createRecommendation(recommendationData) {
return new Recommendation(
recommendationData.businessId,
recommendationData.detailUrl,
recommendationData.imageName,
recommendationData.name,
recommendationData.oldPrice,
recommendationData.price,
recommendationData.productInfo.paymentConditions
);
}
}