What's the use of Jade or Handlebars when writing AngularJs apps

前端 未结 10 1113
情歌与酒
情歌与酒 2020-12-07 08:38

I am new(ish) to the whole javascript full stack applications, and completely new to Angular, so I was hoping somebody can put the record straight for me here.

Why w

相关标签:
10条回答
  • 2020-12-07 09:00

    I use Jade to generate templates consumed by AngularJS because I hate writing plain HTML. It looks something like:

    .control-group(
      ng-form
      name='emailGroup'
      ng-class='{"ng-error": emailGroup.$invalid}'
    )
      label.control-label Email
      .controls
        input(
          type='email'
          ng-model='user.email'
          required
          placeholder='you@example.com'
          focus-on='focusEmail'
        )
    

    … which I think is a lot cleaner than plain HTML.

    0 讨论(0)
  • 2020-12-07 09:07

    Those who unquestioningly favour Jade in an Angular environment fail to understand that view logic belongs on the client, and business logic on the server, just as the OP commented.

    Don't do it unless you have a very good reason to do it. In engineering, a system with fewer moving parts is a more reliable system, and a system where interface boundaries (client/server) are respected is more maintainable over the long term, so default to the simplest architecture and clean division of labour if possible. If you have overriding reasons, do what you must, but caveat emptor.

    Recently I reviewed some code where straight Angular templating would have done a far better job than mixing in Jade, just through maintaining simplicity.

    Aside from template extension, Jade brings nothing worthwhile to the table that Angular doesn't already supply. Let's be honest: Using the sound principle of "favour composition over inheritance" (i.e. partials), you shouldn't ever need template extensibility. Jade is hardly "easier to parse" than HTML. They are but trivially different, while Jade adds another level of indirection - best avoided.

    There is one valid, specialised case for server-side templating: Optimisation, remembering that premature optimisation is generally a Bad Thing. Where performance is truly at issue, and you have the server capacity to spare to handle this, server side templating can assist. This applies to products like Twitter and Basecamp, where the cost of doing a lot of server side work is offset by the gains of reduced requests to the server.

    As for Handlebars, there is no need to replace AngularJS's (amazing) client-side templating.

    0 讨论(0)
  • 2020-12-07 09:07

    The accepted answer is somewhat one-sided and neglects the fact that any setup of pre-compiler for HTML has a great use for ANY kind of HTML project: Composition and resulting markup flexibility.

    Working alone on an angular app? Give Jade a try.

    Jade improves your ability to modularize HTML, decreases the ammount of time you spent on debugging HTML and also encourages building markup inventories.

    During design time there can be an awful amount of iteration on HTML parts. If HTML output is based on a set of jade files, it's easy for the team to act flexible on changing requirements. Also, changing the markup via re-composing jade includes is significantly more robust than re-writing pure HTML.

    That being said, i recognize the general aversion towards mixing angular with jade in production or development stage. Introducing another required set of syntax knowledge is a bad idea for most teams and the use of jade might hide inefficient project management by abstracting away some work that would be prohibited by DRY principles (e.g. being lazy on markup preparation)

    0 讨论(0)
  • 2020-12-07 09:08

    You can include angular templates via Jade.

    script(type="text/ng-template", id="admin")
      include partials/admin
    

    For caching templates I perceive this as much less fragile than including the escaped templates in the javascript files.

    See: https://docs.angularjs.org/api/ng/service/$templateCache

    0 讨论(0)
提交回复
热议问题