我有一个Angular 2服务,意思是一些组件正在使用的typescript类,它通过http从Web服务获取数据。 ng服务使用Angular的http,以及rxjs Observables和observable操作符。 我需要在一个完全不同的应用程序中重用这个ng服务,这个应用程序是vanilla JS(没有角度,没有打字稿)。
是否可以只编译ng服务及其依赖项(http,rxjs)并将其打包成一个可以在浏览器中使用的独立的自给自足的JavaScript模块?
答案 0 :(得分:0)
您仍然可以使用现代 JavaScript。使用ECMAScript6
。
模块化HTTP请求示例(可在整个应用程序中轻松重复使用):
export default obj => {
return new Promise((resolve, reject) => {
let xhr = new XMLHttpRequest();
xhr.open(obj.method || "GET", obj.url);
if (obj.headers) {
Object.keys(obj.headers).forEach(key => {
xhr.setRequestHeader(key, obj.headers[key]);
});
}
xhr.onload = () => {
if (xhr.status >= 200 && xhr.status < 300) {
resolve(xhr.response);
} else {
reject(xhr.statusText);
}
};
xhr.onerror = () => reject(xhr.statusText);
xhr.send(obj.body);
});
};
更新1:
用于在ECMAScript6(JavaScript)中构建等效的Angular2 http服务的有用文档: