Ogni giorno un paio di nuovi moduli javascript vengono creati e pubblicati in tutto il mondo e abbiamo bisogno di pensare a lungo termine. Diciamo che oggi ho bisogno di usare un modulo ORM per andare liscio e veloce. Ma domani potrei trovarmi di fronte a un modulo deprecato o trovarne uno migliore da cambiare o magari doverlo creare da solo.
Ad esempio, il team ha deciso di utilizzare Sequelizejs
in cima al Sqlite per fornire i modelli:
const User = sequelize.define('user', {
username: Sequelize.STRING
});
User.create({
username: 'melbourne'
});
Quindi, è stato introdotto un nuovo tipo di database come Realm
e hanno programmato di passare:
class User {}
User.schema = {
name: 'User',
properties: {
username: {type: 'string'}
}
};
let realm = new Realm({schema: [User]});
realm.write(() => {
realm.create('User', {
username: 'melbourne'
});
});
Quindi, questo può portare al refactoring dell'intera applicazione e il team ha bisogno di un'interfaccia per presentare in prima pagina e ignorare la riscrittura del codice. Di conseguenza, il passaggio sarà semplice e la modifica delle associazioni non influirà sull'intero codice.
class User {
//...
define(name, dataTypes) {
ThirdParty.define(name, dataTypes);
}
create(data) {
ThirdParty.create(data);
}
//...
}
Per quanto riguarda l'esempio, quale sarebbe il buon modello di design in javascript? Come associare un'interfaccia a moduli di terze parti per sviluppare le app a prova di futuro e scalabili?