Introdução a Vue.js

Nessa guerra de novos frameworks javaScript, Vue.js aparece como mais um player promissor, com a promessa de um framework versátil, testável e performático. Sua adoção vem crescendo dia-a-dia. Mas essa não é a principal killer point da plataforma. Ele promete ser um framework progressivo, não utilizar um único monolitico, as modulos podem ser adicionados de acordo com sua necessidade, ou seja, podemos partir de aplicações simples até complexas aplicações adicionando os módulos Vuex(redux) e Vue-router.

Uma grande diferença do Vue é sua organização os componentes agrupam HTML, CSS e JS em um mesmo arquivo, definido como separação por interesse.

Um outro ponto para muitos uma vantagem que o framework não tem nenhuma empresa proprietário, como React(Facebook) and Angular(Google). O Vue é 100% opensource.

Se você possui conhecimento básico em  HTML, CSS e JS Vue é uma boa pedida, algumas empresas estão adotando a plataforma é aprender um novo framework antes do grande hype é um diferencial. Agora vamos ao que interessa, vou mostrar alguns recursos básicos do Vue.js.

Temos a opção de utilizar vue-cli, mas para esse exemplo vamos trabalhar com a CDN.

<script src="https://cdn.jsdelivr.net/npm/vue"></script>

Adicionamos a Vue ao nosso HTML:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Test Vue</title>
</head>
<body>
  <div id="app">
    {{ message }}
  </div>
  <script src="https://cdn.jsdelivr.net/npm/vue"></script>
  <script>
  	var app = new Vue({
      el: '#app',
      data: {
        message: 'Hello Vue!'
      }
    })
  </script>
</body>
</html>

Acabamos de criar o nosso primeiro app Vue.js, ele é bem simples mas já podemos ver algumas caracteristicas importantes. Dentro da div app temos um elemento com chave duplas esse é o padrão utilizado pelo Vue para indentificar as partes dinâmicas de nosso código, lembrando que esse trecho ficará conectado com nossa aplicação qualquer alteração desse valor será refletida em nosso DOM.

Após a chamada de nossa CDN temos o nosso código JavaScript, criamos um nova instância com os seguintes atributos, Qual elementos nossa aplicação irá apontar com “el”, qual os dados de nossa aplicação com “data” e assim nossa aplicação é inicializada.

Condicionais e loops

v-if

O atributo v-if é uma condicional “if” ela funciona como um toogle, se o nosso valor for true o conteúdo dentro da tag será exibido. Como podemos ver no exemplo acima, a variável ‘can_i_see_it’ e ‘can_i_see_it_2’ são vinculado a dois elementos só o primeiro span será exibido porque seu valor é true.  Notem quando utilizamos um atributo vue não precisamos utilizar as chaves duplas.

v-else

Temos a possibilidade de trabalhar com else utilizando a propriedade v-else, se não atribuirmos nenhum valor a propriedade funciona como um else normal podemos trabalhar com uma situação “else if” passando uma outra condicional. outro detalhe para esse exemplo dentro de data eu passo um objeto “question” com dois atributos(title and are_you_ready). Por exemplo para acessa o atributo title dentro do objeto question utilizamos {{question.title}}.

Trabalhando com Inputs

No exemplo acima temos um input vinculado com uma propriedade message através do atributo v-model que cria uma conexão two-way data binding.  Se testarmos o resultado a cada alteração do input será refletido na template tag {{message}}.

Para esse post temos nosso último exemplo:

Utilizamos o último exemplo e adicionamos um botão e vinculamos um método addMessage através to atributo v-on:click em nossa instancia Vue adicionamos um novo atributo methods e passamos os métodos que nossa aplicação irá possuir, nesse caso a cada click do botão salvar adicionamos o conteúdo do campo message a um array.

Com isso temos só um pouco que o framework pode fazer por nós, como nos exemplos acima não utilizei nenhum gerenciador de tarefas ou gerenciamento de bundle, mas podemos utilizar o vue-cli para ter um markup de uma aplicação.

A documentação do Vue é bem completa e está totalmente traduzida para português você pode conferir no link abaixo:

https://br.vuejs.org/v2/guide/index.html

Por que REACT JS?

React JS é o assunto do momento no Brasil e Europa, nos EUA já faz sucesso a mais de um ano o framework do Facebook apenas confirma sua força este ano. React é a tecnologia chave requisitadas nas principais vagas de front aqui na Europa tirando o espaço do Angular ainda bastante forte. Como parte do meus estudos vou traduzir alguns artigos e tutorias que ando lendo. O primeiro deles é uma breve introdução vou utilizar como base o “Why React?” e “Getting Started“.

Por que React ?

React é uma biblioteca javascript para criar interfaces do Facebook e Instagram. O React foi criado para resolver o problema: Criar largar aplicações com dados que mudam a cada segundo.

Simples

Simplesmente expressar como sua aplicação deve olhar para qualquer ponto no tempo, e React vai automaticamente administrar todas atualizações da sua interface quando seus dados mudam.

Declarativo

Quando os dados mudam, React conceitualmente dispara o botão “refresh” e sabe quando atualizar os dados que mudaram.

Construindo ambiente “componentizável”

React é todo construído sobre componentes reutilizáveis. Na verdade, com React a única coisa que você precisa é construir componentes. Uma vez que eles são encapsulados, componentes podem fazer seu código reutilizável, “testável” e com fácil separação de interesses.

Iniciando os trabalhos

Primeiramente vamos baixar o “Starter Pack”, nesse pacote possui as versões prebuilt do React e React DOM para o seu browser, como também uma coleção de exemplos para o seu estudo. Então depois que baixar e descompactar o zip com o starter pack, temos a seguinte estrutura:

Screen Shot 2016-06-10 at 5.54.08 PM

Vamos criar o nosso primero arquivo helloworld.html na pasta raiz.

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Hello React!</title>
    <script src="build/react.js"></script>
    <script src="build/react-dom.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.23/browser.min.js"></script>
  </head>
  <body>
    <div id="example"></div>
    <script type="text/babel">
      ReactDOM.render(
        <h1>Hello, world!</h1>,
        document.getElementById('example')
      );
    </script>
  </body>
</html>

O exemplo acima foi retirado da documentação, vamos explicar alguns pontos. para executar o React precisamos de três arquivos básicos react.js , react-dom.js e o browser.min.js(babel). Adicionamos uma div com id “example” na linha seguinte adicionamos uma tag script com o type “text/babel” esse parâmetro é utilizado pelo Babel.

Para quem não conhece ele é um compilador genérico multifuncional de JavaScript. “What?” Compliquei? na real ele compila as versões mais recentes do JavaScript(ES2015 e ES2016) e React para uma versão que rode nos browsers atuais. Se quiser saber mais dá uma conferida no link: https://github.com/thejameskyle/babel-handbook/blob/master/translations/pt-BR/user-handbook.md#toc-introduction

Dentro da tag script podemos ver uma mistura de javaScript com HTML essa syntax é conhecida como JSX, no exemplo acima utilizamos uma função que renderiza o JSX “ReactDOM.render” ela recebe dois parâmetros: o nosso código JSX e o elemento que iremos adicionar o código renderizado(O h1 com hello world).

Claro esse é um exemplo de introdução, não é obrigatório o código JSX ficar dentro do html podemos criar um arquivo js separado sem problemas.

Exibindo os dados

A utilização mais básica em uma interface é exibir algum dado. O foco do React é facilitar essa tarefa e manter as interfaces atualizadas em tempo real quando os dados mudam.

Vamos criar uma segundo exemplo com alguma interação.

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Timer React</title>
    <script src="https://fb.me/react-15.1.0.js"></script>
    <script src="https://fb.me/react-dom-15.1.0.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.23/browser.min.js"></script>
  </head>
  <body>
    <div id="example"></div>
    <script type="text/babel" >
      var Relogio = React.createClass({
        render: function() {
          return (
            <p>
              Olá, são exatamente: {this.props.date.toTimeString()}
            </p>
          );
        }
      });

      setInterval(function() {
        ReactDOM.render(
          <Relogio date={new Date()} />,
          document.getElementById('example')
        );
      }, 500);
    </script>
  </body>
</html>

No exemplo acima criamos um componente classe utilizando a função “React.createClass” temos e várias maneiras de criar componentes e cada caso tem uma particularidade, no caso do createClass passamos um objeto como parâmetro e o atributo render possui um JSX como valor. Isso não determina que o JSX será compilado nesse momento. Apenas deixa pre-definido o que será “renderizado” quando chamarmos o componente “Relogio” mais a frente dentro do nosso JSX temos um ponto importante “{this.props.date.toTimeString()}” as chaves especifica que esse item é uma variável no caso quem chamar o componente precisa passar o atributo “date”.

Após o createClass temos um setInterval que irá chamar a cada 500 milisegundos ReactDOM.render e chamamos o componente que criamos anteriormente e passamos um parâmetro date. Se tudo e correr bem teremos em nossa tela o texto:

Olá, são exatamente: XX:XX:XX(hora atual)

Se quiser saber mais sobre React da uma conferida na documentação: https://facebook.github.io/react/index.html

Próximo Post irei abordar mais esse ponto de criar componentes e o modo de pensar no conteúdo utilizando React.

Como Traduzir o wordpress para versão pt_BR

Olá pessoal, este tutorial é simples e vai para aquelas pessoas que instalaram a versão inglês do wordpress e querem traduzir o painel. Claro tem a versão já em pt_BR pode instalar direto, mas por algum motivo você tem a versão em inglês, calma não precisa reinstalar tudo, apenas adicionar o arquivo de tradução e configurar o wordpress, então vamos lá.

Primeiro você precisa baixar o arquivo de tradução com a extensão “.mo” e no link a seguir você tem informações sobre as traduções :

http://codex.wordpress.org/WordPress_in_Your_Language

Uma lista meio extensa procure por pt_BR ou acesse o svn das traduções:

http://svn.automattic.com/wordpress-i18n/pt_BR/tags/

Se você não trabalha com svn, procure pelo arquivo “pt_BR.mo” no caso da verssão 3.2 está em “/3.3.2/messages” clique no link do arquivo com o botão direto e escolha “salvar link como” e baixe a tradução.

No link acima você vai encontrar as traduções das últimas versões, baixe a tradução referente a versão do seu wordpress. Para saber qual é a versão do seu wordpress pode visualizar no painel de administração de seu wordpress como na imagem abaixo :

Depois que você baixou o seu arquivo de tradução.

1. Crie uma pasta “languages” dentro de sua pasta “wp-content”. Como na imagem a seguir :

2. Adicione os arquivos que você baixou na pasta “languages”
3. Edite seu arquivo wp-cofig.php, procure a linha de comando que contém o seguinte comando :

define ('WPLANG', '');

Modifique para :

define ('WPLANG', 'pt_BR');

Se tudo der certo seu wordpress será traduzido. Se o tema que você usa tem suporte a multi idioma algumas partes do tema serão traduzidos assim como informações como de data exemplo os meses.

Como definir a largura máxima das imagens em seu tema wordpress

Existem duas maneiras para especificar o tamanho máximo das imagens utilizadas dentro dos posts. Uma via painel do WordPress e a outra forma via functions.php.

Via painel só acessar o menu > configurações > mídia :

No painel de mídia temos a opção de escolher o tamanho dos thumbs, tamanho médio e o tamanho máximo das imagens.

A segunda forma de definir o tamanho máximo das imagens é editando o arquivo functions.php adicionando o seguinte comando :


Esse comando sobrescreve as opções definidas no menu. Nesse caso, estamos definindo como 600px a largura máxima de nossas imagens. Se tudo estiver ok no painel de uploads nosso tamanho grande vai aparecer sempre como 600px de largura :

Então um dica simples que ajuda o usuário na hora de subir as imagens e respeitar a largura do tema.