<commit_before>Démarrer une [Single Page Application](http://en.wikipedia.org/wiki/Single-page_application) aujourd'hui ça commence souvent par : "mais quel putain de framework il 
faut que je prenne ?" Et, vu que c'est pas ça qui manque, ça se complique !

Parmi les multiples [technos disponibles](/posts/js/introduction-a-reactjs) il y a [Ember](http://emberjs.com). Pour que le choix 
ne se résume pas à prendre celui qui a le plus joli logo ou qui génère le plus de spam sur votre Twitter, on vous propose de découvrir 
[Ember](http://emberjs.com). Dans les posts à venir on verra comment construire concrètement une application avec ce framework.

## Les fondamentaux

Parce que l'approche "tête la première" c'est bien mais que comprendre un minimum ce qu'on fait c'est encore mieux, il me paraît sage de commencer
par expliquer la philosophie et les principaux éléments du framework, sous peine de se prendre un bon vieux [doc officielle](http://en.wikipedia.org/wiki/RTFM) 
sur le coin du pif, comme ça, en passant.

[Ember](http://emberjs.com) se définit comme : "A framework for creating **ambitious** web applications" et ça, ça claque !
Mais je vois bien que ça ne suffit pas à vous convaincre alors je vais détailler un peu. Bon alors, bien que ce soit le mot "ambitious"
qui soit mis en gras, deux autres trucs me paraissent encore plus importants :

* **web** : l'une des caractéristiques majeures d'[Ember](http://emberjs.com) est son attachement au web et aux URL en particulier. **Les URL
  et donc le routeur sont au cœur d'Ember** là ou bien d'autres frameworks les considèrent au mieux comme un addon important. 
  
* **framework** : [Ember](http://emberjs.com) est réellement un framework. Pas une lib, pas une colonne vertébrale, pas une boîte à outils : 
  un framework ! [Ember](http://emberjs.com) propose un véritable modèle de développement que vous allez tout de suite adopter ... ou rejeter
  (au moins ça aura le mérite d'être clair).


### Conventions de nommage

Ce modèle de développement commence par les conventions de nommage. [Ember](http://emberjs.com)
applique en effet le principe de "*conventions over configuration*" et repose sur un nommage cohérent des différents composants 
de votre application. Et finalement, quand on y réflechit bien, la cohérence, ça n'a pas que des mauvais côtés. 

Typiquement pour une URL `test`, [Ember](http://emberjs.com) s'attend à trouver une `TestRoute`, un `TestController`, un gabarit `test`.
Jusqu'ici, tout va bien.

Curieux ? -> [doc officielle](http://emberjs.com/guides/concepts/naming-conventions/).

<commit_msg>Typos on post: Débuter avec Ember<commit_after>Démarrer une [Single Page Application](http://en.wikipedia.org/wiki/Single-page_application) aujourd'hui ça commence souvent par : "mais quel putain de framework il 
faut que je prenne ?" Et, vu que c'est pas ça qui manque, ça se complique !

Parmi les multiples [technos disponibles](/posts/js/introduction-a-reactjs) il y a [Ember](http://emberjs.com). Pour que le choix 
ne se résume pas à prendre celui qui a le plus joli logo ou qui génère le plus de spam sur votre Twitter, on vous propose de découvrir 
[Ember](http://emberjs.com). Dans les posts à venir on verra comment construire concrètement une application avec ce framework.

## Les fondamentaux

Parce que l'approche "tête la première" c'est bien mais que comprendre un minimum ce qu'on fait c'est encore mieux, il me paraît sage de commencer
par expliquer la philosophie et les principaux éléments du framework, sous peine de se prendre un bon vieux [RTFM](http://en.wikipedia.org/wiki/RTFM) 
sur le coin du pif, comme ça, en passant.

[Ember](http://emberjs.com) se définit comme : "A framework for creating **ambitious** web applications" et ça, ça claque !
Mais je vois bien que ça ne suffit pas à vous convaincre alors je vais détailler un peu. Bon alors, bien que ce soit le mot "ambitious"
qui soit mis en gras, deux autres trucs me paraissent encore plus importants :

* **web** : l'une des caractéristiques majeures d'[Ember](http://emberjs.com) est son attachement au web et aux URL en particulier. **Les URL
  et donc le routeur sont au cœur d'Ember** là ou bien d'autres frameworks les considèrent au mieux comme un addon important. 
  
* **framework** : [Ember](http://emberjs.com) est réellement un framework. Pas une lib, pas une colonne vertébrale, pas une boîte à outils : 
  un framework ! [Ember](http://emberjs.com) propose un véritable modèle de développement que vous allez tout de suite adopter ... ou rejeter
  (au moins ça aura le mérite d'être clair).


### Conventions de nommage

Ce modèle de développement commence par les conventions de nommage. [Ember](http://emberjs.com)
applique en effet le principe de "*conventions over configuration*" et repose sur un nommage cohérent des différents composants 
de votre application. Et finalement, quand on y réflechit bien, la cohérence, ça n'a pas que des mauvais côtés. 

Typiquement pour une URL `test`, [Ember](http://emberjs.com) s'attend à trouver une `TestRoute`, un `TestController`, un gabarit `test`.
Jusqu'ici, tout va bien.

Curieux ? -> [doc officielle](http://emberjs.com/guides/concepts/naming-conventions/).


{'fraction_non_alphanumeric': 0.08506144393241168, 'fraction_numerical': 0.0, 'mean_word_length': 4.512169312169312, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7549990', 'n_tokens_mistral': 1664, 'n_tokens_neox': 1635, 'n_words': 716}