Как предотвратить определенные / неопределенные ошибки в EJS по сравнению с Handlebars? - PullRequest
0 голосов
/ 03 июля 2018

В Handlebars вы можете написать код, подобный этому

{{ object.world.entity.person.level}}

И вы не получите никакой ошибки. Если объект не существует, он просто не будет ничего печатать и двигаться дальше, то же самое со всеми свойствами. Так что это отлично подходит для быстрой разработки и создания бессхемных баз данных, где объект может существовать или не существовать. Объект не может быть определен, и если он определен, свойство может быть неопределенным. Но мораль в том, что если что-то не так, он просто ничего не печатает и движется вперед.

Мне нравится EJS, потому что у вас больше контроля над кодом, и это проще, когда вы хотите написать быструю логику, которая не нуждается в помощнике.

Но если вы хотите сослаться на что-то, это может привести к множеству ошибок. Так, например, эквивалент приведенного выше кода будет следующим.

<% if (typeof(object) !== 'undefined' &&  object.world && object.world.entity && object.world.entity.person && object.world.entity.person.level) { %>
    <%= object.world.entity.person.level %>
<% } %>

Как вы можете видеть, второй гораздо менее читабелен и невероятно раздражает, особенно когда вы пытаетесь достичь того же результата.

У меня вопрос, есть ли способ предотвратить такую ​​ошибку? Я знаю, что вы можете создать помощника и сделать что-нибудь, например.

<%if (typeof(object) !== 'undefined' && 
helper.isDefined(object.world.entity.person.level)) {
    <%= object.world.entity.person.level %>
<% } %>

Но даже это громоздко, когда вы хотите написать быстрый код. Так есть ли способ просто сделать что-то вроде

<%= object.world.entity.person.level %>

Текущий фреймворк, который я использую Sails.JS framework

...