Мне нравится Universal Relay Boilerplate — в общем, я могу сказать, что они очень внимательно относились к тому, как они собрали все это вместе, в отличие от большинства шаблонов, для которых организация папок и т. д. кажется запоздалой (думаю, потому что вы не будете делать сначала что-нибудь важное, что ли)... но не УРБ. Или, по крайней мере, мы разборчивы в одних и тех же вещах.
Почему такой же раздражающий вещь...
... кроме одного: я не понимаю, почему они это делают.
// Class used by GraphQL Server
export default class User
{
constructor( fields )
{
this.id = fields.id
this.User_AccountName = fields.User_AccountName
this.User_AccountPassword = fields.User_AccountPassword
this.User_DisplayName = fields.User_DisplayName
this.User_ProfilePhoto = fields.User_ProfilePhoto
this.User_Email = fields.User_Email
this.User_PhoneNumberMobile = fields.User_PhoneNumberMobile
this.User_Locale = fields.User_Locale
this.UserToken2 = fields.UserToken2
}
}
...два раза в непосредственной близости без объяснения причин? а>
Вот тип, который на самом деле немного отличается от оригинала благодаря псевдониму.
export default new GraphQLObjectType( {
name: 'Viewer',
interfaces: [NodeInterface],
isTypeOf: object => object instanceof User,
fields: {
id: globalIdField('Viewer'),
User_IsAnonymous: { type: GraphQLBoolean, resolve: (obj) => obj.id.equals( Uuid_0 ) },
User_AccountName: { type: GraphQLString, resolve: (obj) => obj.User_AccountName },
User_DisplayName: { type: GraphQLString, resolve: (obj) => obj.User_DisplayName },
User_ProfilePhoto: { type: GraphQLString, resolve: (obj) => obj.User_ProfilePhoto },
User_Email: { type: GraphQLString, resolve: (obj) => obj.User_Email },
User_PhoneNumberMobile: { type: GraphQLString, resolve: (obj) => obj.User_PhoneNumberMobile },
User_Locale: { type: GraphQLString, resolve: (obj) => obj.User_Locale },
UserToken2: { type: GraphQLString, resolve: (obj) => obj.UserToken2 },
..._ViewerFields,
},
} );
Они намерены это очевидно
Это самый яркий пример разницы между model
и type
, который я смог найти в шаблоне; остальные идентичны. На самом деле я был немного раздражен, обнаружив, что ни одно другое руководство не рекомендует и даже не упоминает выполнение model.js
, а скорее начинается с type.js
.
Я мог бы понять, если бы
- Некоторые типы должны отличаться от моделей безопасностью, производительностью, эстетикой, дизайном и т. д.
- Некоторые типы преднамеренно охватывают модели
- Некоторые типы инкапсулируют модели по причинам дизайна.
Но они делают это везде, что заставляет меня думать, что я упускаю здесь что-то важное.