Chcę użyć wersji bluebird otwartego standardu Promise/A+ i zastąpić native ES6 Promises. Chcę również, aby implementacja bluebird była dostępna wszędzie w moich później importowanych modułach bez konieczności wymagania jej w każdym z nich. Bluebird za Getting started strona mówi mi:Czy mogę przesłonić obietnicę ES6 przez wdrożenie bluebird w globalnym zasięgu węzła?
var Promise = require("bluebird");
, co powoduje nadpisanie rodzimy element, obiecuję. Ponieważ bluebird jest nadzbiorem specyfikacji, nie złamie istniejącego kodu i dlatego powinien być bezpieczny w użyciu.
Jednakże, ponieważ wiem, że to jest uważane za złą praktyką:
- rozszerzyć lub wymienić tubylców językowych i
- zdefiniowanie globalnych do wykorzystania w sieci wymaga, że zależy od niego
, Jestem ostrożny, gdy chcę uwzględnić to w skrypcie podstawowym aplikacji węzła:
import Promise from 'bluebird';
global.Promise = Promise;
Czy to jest zła praktyka? Czy powinienem trzymać się importu bluebirda w każdym pliku?
Tylko dlatego, że jestem ciekawy: dlaczego chcesz zastąpić podstawową realizację obietnicy? –
Generalnie szybsze, bezpieczniejsze, lepsze błędy i niesamowicie pomocne dodatki API. Sprawdź te: http://bluebirdjs.com/docs/why-bluebird.html http://bluebirdjs.com/docs/api-reference.html –
> * Chcę również, aby implementacja bluebird była dostępna wszędzie w moim późniejszym importowane moduły bez konieczności ich stosowania w każdym z nich *. Czemu? 'var Promise = require (" bluebird ");' jest wyraźne, jasne, samo-dokumentujące, a nie magiczne. –