<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Gabriel Araujo</title>
    <description>The latest articles on DEV Community by Gabriel Araujo (@gabrielaraujof).</description>
    <link>https://dev.to/gabrielaraujof</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F135829%2F1ed72dd4-55d6-44ca-9201-75e75610cb2f.jpg</url>
      <title>DEV Community: Gabriel Araujo</title>
      <link>https://dev.to/gabrielaraujof</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gabrielaraujof"/>
    <language>en</language>
    <item>
      <title>Seja explícito!</title>
      <dc:creator>Gabriel Araujo</dc:creator>
      <pubDate>Wed, 30 Aug 2017 14:28:49 +0000</pubDate>
      <link>https://dev.to/gabrielaraujof/seja-explicito-4me8</link>
      <guid>https://dev.to/gabrielaraujof/seja-explicito-4me8</guid>
      <description>&lt;p&gt;&lt;a href="///static/b31f03116870dafe2e5cf83915c09ddd/e1596/asset-1.jpg"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LtZdxMkz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://gabrielaraujo.dev/static/b31f03116870dafe2e5cf83915c09ddd/29d31/asset-1.jpg" alt="[CLEAR ](https://www.flickr.com/photos/coofdy/14816686262/)— Martin Kenny (CC BY-NC-SA 2.0)" title="[CLEAR ](https://www.flickr.com/photos/coofdy/14816686262/)— Martin Kenny (CC BY-NC-SA 2.0)"&gt;&lt;/a&gt;&lt;a href="https://www.flickr.com/photos/coofdy/14816686262/"&gt;CLEAR &lt;/a&gt;— Martin Kenny (CC BY-NC-SA 2.0)&lt;/p&gt;

&lt;h2&gt;
  
  
  Aumente a legibilidade do seu javascript com const e let.
&lt;/h2&gt;

&lt;p&gt;Uma das novidades da versão ES6 do javascript (ou ES2015 — pra você que torceu o nariz) foi a inserção do &lt;code&gt;let&lt;/code&gt; e &lt;code&gt;const&lt;/code&gt; no reinado solitário do &lt;code&gt;var&lt;/code&gt; na declaração de variáveis. Apesar de não ser algo recente, muitos desenvolvedores ainda utilizam o velho conhecido por inúmeras razões. Mas existem algumas boas justificativas para que o uso do &lt;code&gt;var&lt;/code&gt; fique apenas no passado.&lt;/p&gt;

&lt;h3&gt;
  
  
  var e hoisting
&lt;/h3&gt;

&lt;p&gt;Quando usamos &lt;code&gt;var&lt;/code&gt; em javascript, o escopo da variável é a função onde a mesma foi declarada (ou global, caso não tenha sido declarada dentro de nenhuma função). Isso permite que algumas coisas, não tão comum em outras linguagens, funcionem. Por exemplo:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
Escopo da variável quando declarada com var




&lt;p&gt;Se por um lado isso pode ser visto como flexibilidade, por outro, isso pode ser fonte para problemas de legibilidade no código e até facilitar o aparecimento de bugs. Uma variável que é declarada em algum ponto do código pode estar visível em outra parte do código onde ela não é necessária. Como consequência, acidentalmente um desenvolvedor pode reutilizar essas variáveis e gerar efeitos inesperados. Além disso, imagine quão complicado seria identificar em que parte da função uma variável está sendo utilizada ou alterada — não vou nem falar no caso de ser uma variável global!&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Uma variável deve ter um único propósito e seu escopo deve ser o menor possível.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;E não só isso, &lt;em&gt;é possível referenciar uma variável antes dela ser declarada!&lt;/em&gt; Mas como isso pode ser possível? Calma. Na verdade, o que acontece &lt;em&gt;por baixo dos panos&lt;/em&gt; é que todas as declarações são processadas antes de qualquer código ser executado. Na prática é como se todas as declarações fossem movidas para o topo da função. Este comportamento é popularmente conhecido como &lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var#var_hoisting"&gt;&lt;em&gt;hoisting&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
Hoisting e declarações com var




&lt;p&gt;Por muito tempo recomendou-se declarar variáveis sempre no topo da função. Felizmente, isso não é mais necessário desde o ES6 com a chegada do &lt;code&gt;let&lt;/code&gt; e &lt;code&gt;const&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;let&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Diferentemente do &lt;code&gt;var&lt;/code&gt;, o uso do &lt;code&gt;let&lt;/code&gt; permite que você declare variáveis com acesso apenas ao bloco, instrução ou expressão em que foram declaradas, ou seja, possui o mais conhecido escopo de bloco (&lt;em&gt;block escope&lt;/em&gt;).&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
let e escopo de bloco




&lt;p&gt;Apesar de não ser possível acessar a variável fora do escopo em que foi declarada, isso não quer dizer que não existe &lt;em&gt;hoisting&lt;/em&gt; com o &lt;code&gt;let&lt;/code&gt;. &lt;a href="https://stackoverflow.com/a/31222689/1704862"&gt;Existe&lt;/a&gt;. A diferença é que as variáveis não são inicializadas com &lt;code&gt;undefined&lt;/code&gt;, como acontece com o &lt;code&gt;var&lt;/code&gt;. Deste modo, qualquer tentativa de acesso a uma variável antes da sua declaração irá gerar um erro de referência. Este período entre o início do escopo e a execução da declaração da variável é conhecido como &lt;strong&gt;&lt;em&gt;temporal dead zone&lt;/em&gt;&lt;/strong&gt; , ou &lt;em&gt;TDZ.&lt;/em&gt;&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
Temporal Dead Zone




&lt;h3&gt;
  
  
  const
&lt;/h3&gt;

&lt;p&gt;O &lt;code&gt;const&lt;/code&gt; obedece as mesmas regras de escopo e TDZ do &lt;code&gt;let&lt;/code&gt; mas com duas pequenas diferenças: você precisa a &lt;em&gt;inicializar a variável no momento da declaração&lt;/em&gt; e você &lt;em&gt;não pode reatribuir valores&lt;/em&gt; a ela — daí vem o nome “const” em que o objetivo é declarar valores constantes.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
Escopo e TDZ em declarações com const




&lt;p&gt;&lt;em&gt;Mas cuidado! Sua variável pode ser constante mas o objeto que ela referencia&lt;/em&gt; &lt;strong&gt;&lt;em&gt;não é imutável!&lt;/em&gt;&lt;/strong&gt; É exatamente isso. Não poder reatribuir somente garante que a variável irá referenciar sempre o mesmo objeto, mas o objeto em si continua sendo mutável. Por exemplo, uma constante inicializada com um lista não poderá mais referenciar um outro valor, mas a lista qual ela referencia pode ter suas propriedades alteradas, como adicionar ou remover itens.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
Declarações com const vs imutabilidade




&lt;p&gt;Caso você realmente precise de um objeto imutável você tem algumas outras opções como o &lt;a href="https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze"&gt;Object.freeze()&lt;/a&gt;, &lt;a href="https://facebook.github.io/immutable-js/"&gt;immutable.js&lt;/a&gt;, &lt;a href="https://swannodette.github.io/mori/"&gt;mori&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  let vs const
&lt;/h3&gt;

&lt;p&gt;O propósito de uma variável deve sempre estar explícito, e por isso, devemos evitar reusar a mesma variável a menos que isto seja essencial. Deste modo, é preferível utilizar &lt;code&gt;const&lt;/code&gt; ao invés de &lt;code&gt;let&lt;/code&gt; já que ele nos impõe este comportamento.&lt;/p&gt;

&lt;p&gt;A verdade é que na ampla maioria dos casos não precisamos reutilizar variáveis. Somos tentados a fazer por facilidade. Quando você achar que precisa utilizar um &lt;code&gt;let&lt;/code&gt;, desafie você mesmo e refatore. E verá que você realmente não precisava — não acredita? dê uma olhada nos exemplos do artigo abaixo.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;a href="https://hackernoon.com/lets-use-const-here-s-why-6549dcb80708"&gt;Let’s use const! Here’s why.&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;É claro que existem casos em que a presença de um &lt;code&gt;let&lt;/code&gt; é indiscutível, como o uso de contadores e acumuladores em loops, flags em algoritmos matemáticos, etc. Mas de maneira geral, recomenda-se:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Sempre&lt;/strong&gt; use &lt;code&gt;const&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Raramente&lt;/strong&gt; use &lt;code&gt;let&lt;/code&gt; (quando estritamente necessário);&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nunca&lt;/strong&gt; use &lt;code&gt;var&lt;/code&gt;;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;E se você está achando que vai ser difícil lembrar ou se disciplinar a isto, eu tenho uma ótima notícia: &lt;em&gt;linters!&lt;/em&gt; (&lt;a href="https://eslint.org/"&gt;eslint&lt;/a&gt;, &lt;a href="https://palantir.github.io/tslint/"&gt;tslint&lt;/a&gt;, &lt;a href="https://jshint.com/"&gt;jshint&lt;/a&gt;, &lt;a href="https://www.jslint.com/"&gt;jslint&lt;/a&gt;, etc). Eles irão lembrar por você e garantir que você não cometa nenhuma atrocidade com a legibilidade. Os leitores do seu código irão te agradecer por isso — incluindo você.&lt;/p&gt;




&lt;h4&gt;
  
  
  --verbose
&lt;/h4&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="https://medium.com/javascript-scene/javascript-es6-var-let-or-const-ba58b8dcde75" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ofGERWDP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/fit/c/96/96/0%2AWgY9B-Lm4DnCEHlO.jpeg" alt="Eric Elliott"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://medium.com/javascript-scene/javascript-es6-var-let-or-const-ba58b8dcde75" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;JavaScript ES6+: var, let, or const? - JavaScript Scene - Medium&lt;/h2&gt;
      &lt;h3&gt;Eric Elliott ・ &lt;time&gt;Oct 17, 2019&lt;/time&gt; ・ 3 min read
      &lt;div class="ltag__link__servicename"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_EkM13RG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/medium_icon-2c57b3ec653e92a3d6207e708f1e4987099fc69342e556aaf9f035b1968b3f26.svg" alt="Medium Logo"&gt;
        Medium
      &lt;/div&gt;
    &lt;/h3&gt;
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;



&lt;div class="ltag__link"&gt;
  &lt;a href="https://medium.com/humans-create-software/var-let-and-const-what-why-and-how-es6-javascript-features-92f1833f56d0" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FOos3H63--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/fit/c/96/96/1%2AMAwkGo9PDodj1ZA3b6EtzA.png" alt="Mattias Petter Johansson"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://medium.com/humans-create-software/var-let-and-const-what-why-and-how-es6-javascript-features-92f1833f56d0" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;var, let and const — What, why and how — ES6 JavaScript Features&lt;/h2&gt;
      &lt;h3&gt;Mattias Petter Johansson ・ &lt;time&gt;Jul 11, 2016&lt;/time&gt; ・ 1 min read
      &lt;div class="ltag__link__servicename"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_EkM13RG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/medium_icon-2c57b3ec653e92a3d6207e708f1e4987099fc69342e556aaf9f035b1968b3f26.svg" alt="Medium Logo"&gt;
        Medium
      &lt;/div&gt;
    &lt;/h3&gt;
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;



&lt;div class="ltag__link"&gt;
  &lt;a href="https://medium.com/free-code-camp/what-is-variable-hoisting-differentiating-between-var-let-and-const-in-es6-f1a70bb43d" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7uy63w_g--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/fit/c/96/96/1%2Ar9NE_FvEbAv7oKnBMLY_tg%402x.jpeg" alt="Bhuvan Malik"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://medium.com/free-code-camp/what-is-variable-hoisting-differentiating-between-var-let-and-const-in-es6-f1a70bb43d" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;A guide to JavaScript variable hoisting 🚩 with let and const&lt;/h2&gt;
      &lt;h3&gt;Bhuvan Malik ・ &lt;time&gt;Jan 16, 2018&lt;/time&gt; ・ 5 min read
      &lt;div class="ltag__link__servicename"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_EkM13RG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/medium_icon-2c57b3ec653e92a3d6207e708f1e4987099fc69342e556aaf9f035b1968b3f26.svg" alt="Medium Logo"&gt;
        Medium
      &lt;/div&gt;
    &lt;/h3&gt;
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;



&lt;div class="ltag__link"&gt;
  &lt;a href="https://medium.com/free-code-camp/learn-es6-the-dope-way-i-const-let-var-ae828580472b" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BzYXPCVK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/fit/c/96/96/2%2ANbM4LwbA-S83apdyFEeliQ.jpeg" alt="Mariya Diminsky"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://medium.com/free-code-camp/learn-es6-the-dope-way-i-const-let-var-ae828580472b" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Learn ES6 The Dope Way Part I: const, let &amp;amp; var - freeCodeCamp.org - Medium&lt;/h2&gt;
      &lt;h3&gt;Mariya Diminsky ・ &lt;time&gt;Oct 1, 2017&lt;/time&gt; ・ 3 min read
      &lt;div class="ltag__link__servicename"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_EkM13RG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/medium_icon-2c57b3ec653e92a3d6207e708f1e4987099fc69342e556aaf9f035b1968b3f26.svg" alt="Medium Logo"&gt;
        Medium
      &lt;/div&gt;
    &lt;/h3&gt;
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;h4&gt;
  
  
  &lt;a href="https://hacks.mozilla.org/2015/07/es6-in-depth-let-and-const/"&gt;ES6 In Depth: let and const&lt;/a&gt;
&lt;/h4&gt;

&lt;h4&gt;
  
  
  &lt;a href="https://wesbos.com/let-vs-const/"&gt;ES6 let VS const variables&lt;/a&gt;
&lt;/h4&gt;

</description>
      <category>javascript</category>
      <category>beginners</category>
      <category>hoisting</category>
    </item>
    <item>
      <title>TODO App em Angular 2 — Parte 1</title>
      <dc:creator>Gabriel Araujo</dc:creator>
      <pubDate>Sat, 04 Jun 2016 13:58:47 +0000</pubDate>
      <link>https://dev.to/gabrielaraujof/todo-app-em-angular-2-parte-1-3187</link>
      <guid>https://dev.to/gabrielaraujof/todo-app-em-angular-2-parte-1-3187</guid>
      <description>&lt;p&gt;&lt;strong&gt;[Atualizado em 16/09/2016]&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="///static/f60690fc44490c25ed99369541abe0c4/6a068/asset-1.jpg"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qzpMBs8s--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://gabrielaraujo.dev/static/f60690fc44490c25ed99369541abe0c4/29d31/asset-1.jpg" alt="asset 1" title="asset 1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cerca de dois anos após os primeiros anúncios, o framework web Angular 2 foi oficialmente lançado como uma versão estável. E mesmo após esse curto período já detém de todo um ecossistema de desenvolvimento mobile e desktop — como foi amplamente divulgado na última &lt;a href="https://www.youtube.com/watch?v=gdlpE9vPQFs"&gt;ng-conf&lt;/a&gt;. A última versão do framework não só é mais performático que seu antecessor, como também mais otimizado e voltado à filosofia de &lt;a href="https://www.w3.org/wiki/WebComponents/"&gt;componentes web&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Nesta série de artigos faremos um passo-a-passo na criação de um app em Angular 2 para o gerenciamento simples de tarefas. O código dessa primeira parte pode ser encontrado &lt;a href="https://gitlab.com/avantez/todo-ng2/tree/part1"&gt;aqui&lt;/a&gt;.&lt;/p&gt;




&lt;h4&gt;
  
  
  Criando o projeto
&lt;/h4&gt;

&lt;p&gt;Um dos principais esforços nessa nova versão do framework é facilitar ainda mais a vida dos desenvolvedores e promover um padrão de projeto entre a comunidade. Para isto, o time do angular desenvolveu uma ferramenta de apoio na criação de aplicações angular 2, a &lt;a href="https://github.com/angular/angular-cli"&gt;Angular CLI&lt;/a&gt; (que atualmente está em versão beta). Deste modo, os únicos pré-requisitos para o nosso projeto são os da própria ferramenta, sendo eles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Node.js v.4+&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;E nada mais. Sim! O node é a única dependência que você vai precisar se preocupar em instalar. Todas as outras dependências básicas do projeto serão gerenciadas pelo npm—aliás, a Angular CLI faz o “trabalho sujo” e instala todas elas pra você na criação do projeto. Então chega de conversa e vamos criar nosso projeto. Mas antes, instalamos a Angular CLI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
npm install -g angular-cli

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Com a CLI em mãos, podemos criar nosso primeiro projeto utilizando seu comando &lt;strong&gt;&lt;em&gt;new&lt;/em&gt;&lt;/strong&gt; &lt;em&gt;:&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
ng new todo-ng2

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Será criado um diretório chamado &lt;em&gt;todo-ng2&lt;/em&gt;, e dentro dele uma estrutura inicial do projeto. Automaticamente também serão instaladas todas as dependências do projeto via npm. Esta etapa pode levar alguns poucos minutos, então seja paciente e aguarde enquanto as dependências são baixadas e instaladas.&lt;/p&gt;

&lt;h4&gt;
  
  
  Estrutura do projeto
&lt;/h4&gt;

&lt;p&gt;A estrutura criada para o projeto deverá ser similar ao seguinte:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
todo-ng2/

|- e2e/

|- src/

| |- environments/ 

| |- app/

| |- shared/

| |- ...

| |- todo-angular2.component.css

| |- todo-angular2.component.html

| |- todo-angular2.component.spec.ts

| |- todo-angular2.component.ts

| |- ...

| |- index.html

| |- styles.css

| |- main.ts

| |- tsconfig.json

|- ...

|- angular-cli.json

|- package.json

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Nosso foco inicial será o diretório &lt;strong&gt;&lt;em&gt;src/&lt;/em&gt;&lt;/strong&gt; , pois é lá onde estarão os principais arquivos utilizados pelo build da aplicação, ou seja, tudo aquilo que vai para o servidor no processo de deploy. Na raiz de &lt;strong&gt;&lt;em&gt;src/&lt;/em&gt;&lt;/strong&gt; temos alguns arquivos importantes. São eles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;index.html&lt;/em&gt;&lt;/strong&gt; : página inicial da nossa aplicação.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;main.ts&lt;/em&gt;&lt;/strong&gt; : responsável pela inicialização da aplicação.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;styles.css&lt;/em&gt;&lt;/strong&gt; : folha de estilo global da aplicação.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;tsconfig.json&lt;/em&gt;&lt;/strong&gt; : configurações de compilação do Typescript.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Nota: A configuração da aplicação e o conteúdo desses arquivos está fora do escopo deste post. Por enquanto usaremos as configurações predefinidas pela Angular CLI na criação do projeto.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Na maior parte do tempo estaremos trabalhando em &lt;strong&gt;&lt;em&gt;src/app/&lt;/em&gt;&lt;/strong&gt; , pois é lá onde estará o nosso código Angular (components, services, directives, pipes, templates…). Dentro de &lt;strong&gt;&lt;em&gt;src/app/&lt;/em&gt;&lt;/strong&gt; temos alguns arquivos que definem o componente raiz da nossa aplicação:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;todo-angular2.component.ts&lt;/em&gt;&lt;/strong&gt; : definição do componente.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;todo-angular2.component.html&lt;/em&gt;&lt;/strong&gt; : template utilizado pelo componente.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;todo-angular2.component.css&lt;/em&gt;&lt;/strong&gt; : folha de estilo utilizada pelo componente.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;todo-angular2.component.spec.ts&lt;/em&gt;&lt;/strong&gt; : testes unitários do componente.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A estrutura de pastas e arquivos gerada pela Angular CLI segue o &lt;a href="https://angular.io/styleguide"&gt;Angular 2 Style Guide&lt;/a&gt;, criado pelo próprio time do Angular — e eu fortemente recomendo que você dê uma lida nele!&lt;/p&gt;

&lt;h4&gt;
  
  
  Executando o projeto
&lt;/h4&gt;

&lt;p&gt;Agora vamos testar o nosso projeto e verificar se está tudo funcionando corretamente. Para isso utilizamos o comando &lt;strong&gt;&lt;em&gt;serve&lt;/em&gt;&lt;/strong&gt; da Angular CLI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
ng serve

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Acesse a aplicação em &lt;a href="https://localhost:5100"&gt;https://localhost:5100&lt;/a&gt; e, se tudo estiver funcionando como o esperado, a página exibida será similar ao seguinte:&lt;/p&gt;

&lt;p&gt;&lt;a href="///static/ced2941ac250107f9c6609a44ca7d368/08115/asset-2.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LJU-O7HT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://gabrielaraujo.dev/static/ced2941ac250107f9c6609a44ca7d368/08115/asset-2.png" alt="asset 2" title="asset 2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No próximo artigo falaremos em detalhes sobre componentes Angular 2 e criaremos a primeira funcionalidade da nossa aplicação. Até lá!&lt;/p&gt;




&lt;h4&gt;
  
  
  Indo além
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://angular.io/docs/ts/latest/quickstart.html"&gt;5 min Quickstart&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/angular/angular-cli"&gt;Angular CLI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Python? Mas por onde começo?</title>
      <dc:creator>Gabriel Araujo</dc:creator>
      <pubDate>Sat, 21 Mar 2015 13:00:17 +0000</pubDate>
      <link>https://dev.to/gabrielaraujof/python-mas-por-onde-comeco-4b85</link>
      <guid>https://dev.to/gabrielaraujof/python-mas-por-onde-comeco-4b85</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Porque você deveria aprender Python?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A resposta é relativamente simples, como foi detalhado &lt;a href="https://readwrite.com/2014/07/08/what-makes-python-easy-to-learn" rel="noopener noreferrer"&gt;num artigo da readwrite&lt;/a&gt;. Desde 2008 Python é classificada como uma das oito linguagens de programação mais populares do mundo. Muito disso é devido a ampla adoção do Python por grandes empresas de tecnologia como o Google, Yahoo e NASA. Mas não é só o mercado que indica e impulsiona tal popularidade. Oito das dez melhores faculdades de computação dos Estados Unidos atualmente ensinam Python nas disciplinas de introdução a programação. Isso porque a curva de aprendizado da linguagem é mínima se comparada com a maioria das linguagens.&lt;/p&gt;

&lt;p&gt;Além disso, temos uma outra razão: &lt;em&gt;a configuração necessária para você começar a programar em Python em qualquer computador é&lt;/em&gt; &lt;strong&gt;&lt;em&gt;muito&lt;/em&gt;&lt;/strong&gt; &lt;em&gt;simples&lt;/em&gt;. Então chega de conversa e vamos ao que interessa!&lt;/p&gt;

&lt;p&gt;&lt;a href="/static/3c3b709e32ba6c1949cd765c0eddcce9/8ae3e/asset-1.png"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgabrielaraujo.dev%2Fstatic%2F3c3b709e32ba6c1949cd765c0eddcce9%2F8c557%2Fasset-1.png" title="fonte: [https://www.python.org/community/logos/](https://www.python.org/community/logos/)" alt="fonte: [https://www.python.org/community/logos/](https://www.python.org/community/logos/)"&gt;&lt;/a&gt;fonte: &lt;a href="https://www.python.org/community/logos/" rel="noopener noreferrer"&gt;https://www.python.org/community/logos/&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Instalando o Python
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Linux
&lt;/h4&gt;

&lt;p&gt;A maioria dos sistemas GNU/Linux já vem com o Python pré-instalado, então você não tem absolutamente &lt;strong&gt;nada a fazer&lt;/strong&gt; neste quesito — que maravilha! Entretanto, algumas distros trazem apenas a versão 2.x do Python. Se você prefere a versão 3.x você precisará instalá-la, mas isto é bastante simples. (&lt;em&gt;Eu fortemente recomendo utilizar a versão 3. A versão 2 será descontinuada em&lt;/em&gt; &lt;a href="https://pythonclock.org/" rel="noopener noreferrer"&gt;&lt;em&gt;breve&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;)&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Nota: Este passo-a-passo é baseado em uma distribuição derivada do Debian. Para outras distribuições você precisará compilar o Python antes de instalá-lo.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Abra o terminal e execute os seguinte comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
$ sudo apt-get update &amp;amp;&amp;amp; sudo apt-get install python3

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Pronto, você já tem o Python 3 instalado e pronto para usar!&lt;/strong&gt; No mesmo terminal execute o comando python3 e você entrará no modo interativo do Python. Você verá algo como:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
$ python3

Python 3.4.0 (default, Apr 11 2014, 13:05:11) [GCC 4.8.2] on linux Type “help”, “copyright”, “credits” or “license” for more information.

&amp;gt;&amp;gt;&amp;gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A partir daí você já pode executar seus comandos em Python. Para sair do modo interativo, basta executar &lt;strong&gt;&lt;em&gt;quit()&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  Mac OSX
&lt;/h4&gt;

&lt;p&gt;Assim como os sistemas GNU/Linux, a versão 2.x do Python já vem pré-instalada no Mac OSX. Se você for utilizar a versão 3.x, precisaremos instalá-la. Baixe a versão mais atual do &lt;a href="https://www.python.org/downloads/" rel="noopener noreferrer"&gt;Python 3.x para Mac OSX&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Em seguida, duplo clique no arquivo  &lt;strong&gt;.pkg&lt;/strong&gt; baixado para iniciar a instalação (&lt;em&gt;é possível que você precise informar seu usuário e senha de administrador&lt;/em&gt;). Siga as instruções na tela que aparece, aceite os termos de licença e confirme a instalação.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pronto, o Python 3 já está pronto para usar no seu Mac!&lt;/strong&gt; Navegue até &lt;em&gt;Aplicações &amp;gt; Utilitários&lt;/em&gt; e execute o Terminal. Na tela do terminal, execute o comando python3 que levará você ao modo interativo do Python, de onde vocẽ já poderá executar seus comandos. Você verá algo semelhante a isto:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
$ python3

Python 3.4.1 (default, Apr 11 2014, 13:05:11) [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin Type “help”, “copyright”, “credits” or “license” for more information.

&amp;gt;&amp;gt;&amp;gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para sair do modo interativo e retornar ao terminal, basta executar a função &lt;strong&gt;&lt;em&gt;quit()&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  Windows
&lt;/h4&gt;

&lt;p&gt;O windows não vem com o Python instalado de fábrica, então será preciso instalar manualmente. Baixe o instalador da versão mais atual do &lt;a href="https://www.python.org/downloads/" rel="noopener noreferrer"&gt;Python 3.x para Windows&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Nota: Escolha o instalador apropriado para a arquitetura do seu Windows: x86 (32 bits) ou x86–64 (64 bits)&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Duplo clique no instalador baixado para iniciar a instalação. Siga as instruções e aguarde a finalização do processo de instalação. &lt;strong&gt;Pronto, seu Windows já tem o Python instalado!&lt;/strong&gt; &lt;em&gt;Importante&lt;/em&gt;: se você estiver instalando a versão 2.x do Python, é bem provável que você precise configurar as variáveis de ambiente. No caso da versão 3.x, o instalador já realiza esta etapa automaticamente. Uma vez instalado, você já pode se divertir programando em Python. Basta executar o prompt de comando e entrar no modo interativo.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
C:\Users\Gabriel Araujo&amp;gt; python

Python 3.4.2 (v3.4.2:ab2c023a9432, Apr 11 2014, 13:05:11) [MSC v.1600 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information.

&amp;gt;&amp;gt;&amp;gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Use o modo interativo!
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Dica:&lt;/strong&gt; principalmente para quem está começando a programar, o modo interativo do python (ou shell) é muito importante. Com ele você pode executar comando a comando e assim ter o feedback da execução de forma imediata.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;O modo interativo é útil, por exemplo, para você fazer “testes rápidos” com alguns comandos — sabe aquele momento que você não lembra de uma sintaxe ou não sabe se ela vai realmente funcionar? Então, execute no modo interativo apenas este pedaço de código e você tem uma resposta imediata. Como no seguinte exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
&amp;gt;&amp;gt;&amp;gt; print 'Olá, mundo!'

  File "&amp;lt;stdin&amp;gt;", line 1

    print 'Olá, mundo!'

                      ^

SyntaxError: invalid syntax

&amp;gt;&amp;gt;&amp;gt; print('Olá, mundo!')

Olá, mundo!

&amp;gt;&amp;gt;&amp;gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;&lt;em&gt;Originally published at&lt;/em&gt; &lt;a href="https://www.gabrielaraujo.dev/posts/python-mas-por-onde-comeco/" rel="noopener noreferrer"&gt;&lt;em&gt;gabrielaraujo.dev&lt;/em&gt;&lt;/a&gt; &lt;em&gt;on March 21, 2015.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
