99 votes

Quel est l'avantage de la Logique de moins de modèle (comme la moustache)?

Récemment, j'ai couru dans la moustache qui est revendiquée pour être Logique-moins de modèle.

Cependant, il n'est pas d'expliquer pourquoi il est conçu dans une Logique de moins. En d'autres mots, quel est l'avantage de la Logique de moins de modèle?

106voto

Miguel Ping Points 9013

En d'autres termes, il vous empêche de se tirer une balle dans le pied. Dans l'ancien JSP jours, il est très fréquent d'avoir des fichiers JSP arrosé avec du code Java, ce qui fait de refactoring beaucoup plus difficile, puisque vous avez eu votre code dispersés.

Si vous empêcher de logique dans les modèles de par leur conception (comme la moustache ne), vous serez obligé de mettre de la logique d'ailleurs, si vos modèles finira épuré.

Un autre avantage est que vous êtes obligé de penser en termes de séparation des préoccupations: votre contrôleur ou de la logique du code avez à faire, les données de massage avant d'envoyer des données à l'INTERFACE utilisateur. Si vous passer, plus tard, votre modèle pour un autre (disons que vous commencez à utiliser un autre moteur de template), la transition ne sera pas facile, car vous n'aviez qu'à mettre en œuvre des détails de l'INTERFACE utilisateur (car il n'y a pas de logique sur le modèle, rappelez-vous).

66voto

brad Points 12878

J'ai l'impression que je suis presque le seul à mon avis, mais je suis fermement dans le camp adverse. Je ne crois pas que le mélange possible de logique métier dans les templates de votre site est une raison suffisante de ne pas utiliser la pleine puissance de votre langage de programmation.

L'argument habituel de la logique de moins de modèles, c'est que si vous avez un accès complet à votre langage de programmation vous pouvez mélanger dans une logique qui n'a pas lieu d'être dans un modèle. Je trouve cela s'apparente à un raisonnement que vous devez utiliser une cuillère à trancher la viande, car vous pourriez vous blesser si vous utilisez un couteau. Cela est très vrai, et pourtant, vous serez beaucoup plus productif si vous utilisez ce dernier, quoique soigneusement.

Par exemple, considérons le modèle suivant extrait de l'aide de moustache:

{{name}}:
<ul>
  {{#items}}
    <li>{{.}}</li>
  {{/items}}
</ul>

Je peux comprendre cela, mais je trouve la suivante (en utilisant le trait de soulignement) à être beaucoup plus simple et directe:

<%- name %>:
<ul>
<% _.each(items, function(i){ %>
  <li><%- i %></li>
<% }); %>
</ul>

Cela étant dit, je comprends que logicless modèles ont des avantages (par exemple, ils peuvent être utilisés avec plusieurs langages de programmation sans modification). Je pense que ces autres avantages sont très importants. Je ne pense pas que leur logique-moins de la nature est l'un d'entre eux.

28voto

pje Points 4475

Moustache est logique de moins?

N'est-ce pas:

{{#x}}
  foo
{{/x}}
{{^x}}
  bar
{{/x}}

Assez semblable à cela?

if x
  "foo"
else
  "bar"
end

Et n'est-ce pas que assez similaire à (lire: presque une définition de la) logique de présentation?

13voto

Jeremy Heiler Points 14320

Une logique de moins que le modèle est un modèle qui contient des trous à remplir, et non pas comment vous les remplissez. La logique est placé ailleurs et mappé directement sur le modèle. Cette séparation des préoccupations est idéal car alors le modèle peut facilement être construit avec une logique différente, ou même avec un autre langage de programmation.

De la moustache manuel:

Nous appelons cela la "logique" parce qu'il n'y sont pas si des instructions, clauses d'autre, ou pour les boucles. Au lieu de cela il y a seulement les balises. Certaines balises sont remplacés par un valeur, certains de rien, et d'autres un la série de valeurs. Ce document explique les différents types de Moustache balises.

11voto

blockhead Points 4654

Il rend vos modèles de nettoyeur, et il vous oblige à garder une logique dans un endroit où il peut être correctement l'unité testée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X