Sie sind auf Seite 1von 21

23/12/2015

JailsOFrameworkeaArquiteturadoJavascriptTableless

MENU

FRUM

PARA INICIANTES

UX & DESIGN

JAVASCRIPT
Introduo ao
AMD com
Require.js

Fluxo de
execuo
assncrono em
JavaScript
Promises

POR JAVIANI

CSS

JQUERY

HTML

RESPONSIVE

BACK-END

DeployBot faz o
build e deploy do
seu projeto para
produo

17 DE JUNHO DE 2015

SASS

Como funciona a
Internet e a World
Wide Web

Fluxo de
execuo
assncrono em
JavaScript
Callbacks

38 comentrios

Jails O Framework
e a Arquitetura do
Javascript
Eu escrevi meu prprio framework por que estava
insatisfeito com os oferecidos no mercado. E foi
timo!

http://tableless.com.br/jailsoframeworkearquiteturajavascript/

1/21

23/12/2015

JailsOFrameworkeaArquiteturadoJavascriptTableless

Quero compartilhar algo que estive desenvolvendo h um tempo: um


framework JavaScript. Sim, mais um porm este no um MVC. Eu
no acredito muito no MVC como vem sendo difundido para o frontend. Quem j leu algo sobre o React deve imaginar que no estou s
nesta maneira de pensar.

Faz um bom tempo que trabalho com JavaScript e dentre todas as


formas que usei para elaborar um projeto, uma se destacou por ser a
mais eficaz. Estou falando da arquitetura baseada em Mdulos, ou seja,
uma Arquitetura Modular.

POR QUE MAIS UM FRAMEWORK?


A necessidade de escrever um framework nasceu aps ter trabalhado
dois anos em um e-commerce enorme e muito conhecido,
provavelmente voc deve ter comprado l algumas dezenas de vezes.
Ao chegar neste projeto, percebi que mesmo tendo sido incialmente
concebido de forma modular, usando uma biblioteca AMD, o projeto
carecia de um Framework. No basta apenas criar seus mdulos, voc
precisa saber muito mais que isso, precisa saber como classificar os
problemas, como abstrair os mdulos e como relacion-los.
http://tableless.com.br/jailsoframeworkearquiteturajavascript/

2/21

23/12/2015

JailsOFrameworkeaArquiteturadoJavascriptTableless

Ao perceber a dificuldade da manuteno e pensando em como


melhorar toda a arquitetura, fui atrs dos frameworks existentes no
mercado.

ANGULARJS, BACKBONE, EMBER E REACT.


Estes eram os que estavam no mainstream e me chamaram a ateno.
Estudei todos, no sou uma assumidade em nenhum, mas para mim
bastava entender os paradigmas de cada um deles. Feitos os estudos,
a minha concluso era de que seriam inviveis para o projeto por
diversas razes, resumindo:

AngularJS: tinha futuro incerto; no era performtico; pouco controle;


muitas coisas aconteciam por baixo dos panos; uma boa parte dos
seus componentes seriam removidos na prxima verso ( AngularJS 2 ).

Backbone: timo para programadores. Difcil para quem est


comeando, muitos mtodos para aprender, modularizado, mas ainda
necessrio um trabalho manual para arquitetar os padres no seu
projeto.

Ember: Dficil. Embora em seus screencasts tudo acontece de forma


mgica e rpida, na prtica necessrio uma curva de aprendizado
considervel para ser produtivo.

React: Embora eu goste de projetos ousados, eu ainda no me


acostumei com a idia de misturar html e construo de markup via
JavaScript. Para o React, tudo componente, o que considero o
principal motivo pelo e-commerce que eu trabalhava ter falhado numa
arquitetura ideal, o fato de que tudo a mesma coisa, no caso do meu
projeto, tudo era mdulo.
http://tableless.com.br/jailsoframeworkearquiteturajavascript/

3/21

23/12/2015

JailsOFrameworkeaArquiteturadoJavascriptTableless

CONCLUSO
O fato de ter estudado cada uma delas me deu um conhecimento que
eu no tinha, tive algumas idias Este aprendizado era o que
precisava para olhar para todos os problemas que havia passado no
projeto e imaginar qual seria a soluo. Na hora, me veio na cabea um
projeto antigo que eu tinha, havia colocado o nome Jails, no tinha
nada haver com o Rails, o nome surgiu de uma brincadeira. Era um
MVC na poca, mas seria reformulado.

A PROPOSTA.
A idia era desenvolver um framework leve, pequeno o bastante para
gastar o menor tempo possvel refatorando e fazendo atualizaes,
assim eu tambm minimizaria as falhas. Que ajudasse nas tarefas
repetitivas e como organizar melhor as funes de uma aplicao seja
ela complexa ou no e garantir um fluxo mais previsvel. E seria
modular, deveria crescer de acordo com a comunidade, assim como o
Rails.

JAILS, A FILOSOFIA.
Basicamente o Jails abstrai sua aplicao em 4 partes.
Components
Controllers
Apps
Modules
Um componente resolve um determinado problema, mais genrico,
escuta e ouve eventos, manipula o dom, no sabe da existncia de
outros elementos e classes.

Uma controladora fecha um escopo um pouco maior, menos genrico,


mais ligado alguma regra de negcio, usado onde h uma relao

http://tableless.com.br/jailsoframeworkearquiteturajavascript/

4/21

23/12/2015

JailsOFrameworkeaArquiteturadoJavascriptTableless

mais ligado alguma regra de negcio, usado onde h uma relao


entre dois ou mais componentes, escuta e dispara eventos para os
componentes.

As aplicaes so o maior escopo da pgina, escuta eventos de


componentes e controladoras, realiza as regras de negcio da pgina
numa escala mais macro, menos genrica que as controladoras.

Os mdulos so apenas estruturas de classes ou mdulos AMD, que


podem ou no utilizar o Jails e seus elementos, sendo totalmente
stand-alone, capaz de ser usado em projetos que no possuem o Jails.
A Model padro do Jails um exemplo de um mdulo, pois
independente do framework.

A COMUNIDADE ESCOLHE O PADRO


Eu no tenho a pretenso de escrever os melhores componentes e
mdulos para o framework, provvel que outros desenvolvedores o
faam muito melhor do que eu. Portanto, para mim faz todo o sentido
fazer a Model como um mdulo a parte, porque um desenvolvedor
pode criar um projeto paralelo e fazer uma Model mais sofisticada.

Da mesma forma, a View padro do Jails apenas um componente


disponibilizado no repositrio. No faz sentido a comunidade esperar
por um release para usar uma View mais sofisticada ou diferente.

FLEXIBILIDADE E ELIMINANDO ACOPLAMENTO


O MVC no front-end das formas como foi elaborado simplesmente no
escala. burocrtico, voc fica vendido um fluxo Model -> Controller
-> View que em muitas vezes no faz o menor sentido. No Jails voc
pode ou no utilizar Models ou Views. Porque so apenas
mdulos/componentes.
http://tableless.com.br/jailsoframeworkearquiteturajavascript/

5/21

23/12/2015

JailsOFrameworkeaArquiteturadoJavascriptTableless

Com isso vem a simplicidade, a curva de aprendizado baixa, voc


precisa decorar 6 mtodos que so disponibilizados igualmente para as
Controllers e Apps. Na verdade, elas so a mesma coisa, os
componentes possuem apenas 2 mtodos.

Voc apenas precisa aprender mais mtodos conforme adiciona


componentes/mdulos no seu projeto, voc no obrigado a saber
dezenas e dezenas de mtodos que pode nunca utilizar.

TEST DRIVE
Existem duas formas de trabalhar com o Jails, uma usando de forma
asscrona, bom pra prototipar e subir uma aplicao rpidamente, e
outra compilando o JavaScript pra uma sada s minificado. Vou
mostrar apenas a primeira que utiliza mdulos/componentes do
repositrio do Jails.

Crie uma estrutura de pastas padro: ( possvel mudar)

+ assets/js/
index.htm

Jails utiliza o gulp como automatizador:

1.npminstallgulpjails

Instale o gulp localmente:

1.npminstallgulp

Crie o arquivo gulpfile.js se no tiver, e carregue as tarefas do Jails:


http://tableless.com.br/jailsoframeworkearquiteturajavascript/

6/21

23/12/2015

JailsOFrameworkeaArquiteturadoJavascriptTableless

1.require('gulpjails')();

Pronto, agora j temos o automatizador do Jails.

No index.htm, adicione avarivel global usada para referenciar nosso


app inicial:

1.varglobal={page:'apps/myapp'};

Aqui estamos carregando a requirejs e falando para ela executar o


config.js, a varivel global.page dir ao nosso config.js qual app
deveremos iniciar da nossa pasta de apps nesta tela. Tudo pronto
agora s criar os arquivos. Por enquanto nossa pasta js est vazia,
mas precisamos criar o config.js e apps/my-app.js.

1.gulpjails/confignglobal.page

Este comando criar o config.js, com algumas definies e


apontamentos para o repositrio oficial.

1.require.config({
2.baseUrl:'assets/js/',
3.deps:['jquery','jails',global.page],
4.paths:{
5.jails:'//rawgit.com/Javiani/Jails/master/source/jails.min',
6.mods:'//rawgit.com/jailsorg/Modules/master',
7.comps:'//rawgit.com/jailsorg/Components/master',
8.jquery:'//code.jquery.com/jquery2.1.1.min'
9.},
10.callback:function(jquery,jails){
11.jails.start({base:jquery});
12.}
http://tableless.com.br/jailsoframeworkearquiteturajavascript/

7/21

23/12/2015

JailsOFrameworkeaArquiteturadoJavascriptTableless

13.});

Agora criamos o arquivo my-app.js

1.gulpjails/appnmyapp

myapp.js

1.define([
2.'jails'
3.],
4.function(jails){
5.jails.app('myapp',function(html,data){
6.this.init=function(){};
7.});
8.});

Criando o app e o arquivo config, temos o mnimo para rodar um


cdigo executvel, basta colocar um alert() ou um console.log()
no mtodo .init() da app.
Sem esquecer de referenciar no markup!

1.<bodydataapp="myapp">

O primeiro componente vamos criar localmente, dever ouvir uma lista


de radio buttons e disparar um evento enviando o valor do radio
clicado.

1.define(['jails'],function(jails){
2.jails.component('mycomponent',function(html,anno){
3.varcp=this,buttons;
4.

http://tableless.com.br/jailsoframeworkearquiteturajavascript/

8/21

23/12/2015

4.

JailsOFrameworkeaArquiteturadoJavascriptTableless

5.this.init=function(){
6.buttons=html.find('input[type=radio]');
7.html.append('Meucomponente!!');
8.buttons.on('change',emit);
9.};
10.
11.functionemit(){
12.cp.emit('choose',this.value);
13.}
14.});
15.});

Se voc sabe jQuery, ou Zepto, aqui voc est em casa =).


aconselhvelque voc passe um componente para um estagirio ou
um jnior que est aprendendo JavaScript. Porque geralmente
simples e num escopo fechado, ajuda no aprendizado.

O que vamos fazer utilizar um componente helloworld que est no


repositrio do projeto para interagir com o nosso componente inicial.
Vamos fazer este relacionamento usando a application mesmo:

1.define([
2.'jails',
3.'components/mycomponent',
4.'comps/helloworld/helloworld'
5.],function(jails){
6.
7.jails.app('myapp',function(html,data){
8.
9.varapp=this,cp,hello_world;
10.
11.cp=app.x('[datacomponent*=mycomponent]');
12.hello_world=app.x('[datacomponent*=helloworld]');

http://tableless.com.br/jailsoframeworkearquiteturajavascript/

9/21

23/12/2015

JailsOFrameworkeaArquiteturadoJavascriptTableless

12.hello_world=app.x('[datacomponent*=helloworld]');
13.
14.this.init=function(){
15.hello_world('greetings');
16.this.listen('mycomponent:choose',action);
17.};
18.
19.functionaction(e,value){
20.hello_world('answer',value);
21.}
22.});
23.});

Carregamos os dois mixins dos componentes da nossa aplicao. Um


de maneira externa, usando o namespacecomps definido no
config.js e outro carregado localmente da nossa pasta components.

Guardamos duas referncias para os dois componentes atravs do


mtodo .x() , a query usada um seletor jQuery.
No init executamos via evento o mtodo pblico
helloworld.greeting() que apenas exibir uma mensagem amigvel

=).

Depois ouvimos o evento disparado por nosso componente, sempre o


nome vindo antes da ao 'meucomponente:acao' , executamos outro
mtodo do componente helloworld.answer() .
Sempre utilizamosas referncias para executar mtodos pblicos dos
nossos componentes, se os componentes no existirem na pgina, ou
no possurem o mtodo, a aplicao no ir quebrar, levantando um
erro, assim, deixamos nossa aplicao desacoplada, pois se algum
grita e ningum ouve, nada acontece na vida real no mesmo?
http://tableless.com.br/jailsoframeworkearquiteturajavascript/

10/21

grita e ningum ouve, nadaJailsOFrameworkeaArquiteturadoJavascriptTableless


acontece na vida real no mesmo?

23/12/2015

Embora os scripts estejam sendo carregados, precisamos definir no


html, onde o mixin ir atuar:

1.
2.<divdatacomponent="helloworld"></div>
3.
4.<formdatacomponent="mycomponent">
5.
6.<label>Howareyou?</label>
7.<inputtype="radio"name="question"value="how"/>
8.
9.<br/>
10.<label>Whatdayistoday?</label>
11.<inputtype="radio"name="question"value="today"/>
12.
13.<br/>
14.<label>WhereshouldIstartfrom?</label>
15.<inputtype="radio"name="question"value="start"/>
16.
17.<br/>
18.<label>Bye</label>
19.<inputtype="radio"name="question"value="bye"/>
20.
21.<br/>
22.<label>Nothingtosay</label>
23.<inputtype="radio"name="question"value="nothing"/>
24.</form>
25.

O componente helloworld responde alguns parametros no mtodo


.answer() como: how , today , start , bye e nothing . Dessa forma

conseguimos fazer dois componentes disconexos funcionarem


sozinhos, e fizemos a relao entre os dois usando uma application.

http://tableless.com.br/jailsoframeworkearquiteturajavascript/

11/21

23/12/2015

JailsOFrameworkeaArquiteturadoJavascriptTableless

sozinhos, e fizemos a relao entre os dois usando uma application.


H muito mais coisas envolvidas no framework, mas no daria para
falar tudo aqui. Se quiserem saber mais ou atm mesmo ajudar essa
iniciativa escrevendo mdulos, componentes ou contribuindo de
alguma outra forma, fique vontade. Os convido a dar uma olhada no
projeto pelos links no final do post. H tambm screencasts e a
documentao do projeto. Seria muito bom ver uma iniciativa brasileira
figurar dentre os frameworks gringos do mercado.

Valeu galera, um grande abrao.

Screencast : http://jails-org.github.io/Jails/docs/#/video-components

Repositrio: https://github.com/Jails-org/

Framework: https://github.com/jails-org/Jails

Tweetar

Compartilhar

102

JAVIANI
Entusiasta em Programao
Veja mais artigos deste autor

38Comentrios
Recommend 5

Tableless

Compartilhar

Entrar

OrdenarporMaisrecente

Participedadiscusso...
http://tableless.com.br/jailsoframeworkearquiteturajavascript/

12/21

23/12/2015

JailsOFrameworkeaArquiteturadoJavascriptTableless

Matheus 5mesesatrs

issoangularjscombackbone,poremutilelegal
1

Responder Compartilhar

EduardoOttaviani>Matheus 5mesesatrs

Jamaisconseguiriafazerummicroframeworkde3kbquefaaas
mesmascoisasqueestesdoisframeworksmonstros..rsrsrs.Nope..
bemdiferentedosdois...Muitodifcilpraeuconseguirexplicarisso,s
usandooJailsparanotarexatamenteoquodiferenteeledosdois=D.
1

Responder Compartilhar

lucasfontesgaspareto 6mesesatrs

Javianiquetrabalhoexcelente,euadorei!
1

Responder Compartilhar

EduardoOttaviani 6mesesatrs

Fizumscreencastmostrandoosetupinicialpraajudartambm,porldaprater
umaidiamelhordecomoiniciarecomofazerobuilddaaplicao.

vermais

Responder Compartilhar

DiegoNeitzel 6mesesatrs

Mandoubemdemais,Aragorn!!
Tudomuitosimplesebemexplicado.
Sucesso,meuquerido!
Abrao
1

Responder Compartilhar

EduardoOttaviani>DiegoNeitzel
http://tableless.com.br/jailsoframeworkearquiteturajavascript/

6mesesatrs

13/21

23/12/2015

JailsOFrameworkeaArquiteturadoJavascriptTableless

EduardoOttaviani>DiegoNeitzel 6mesesatrs

GrandeDiegonnnn,valeumuleque!Umabraocara!

Responder Compartilhar

CssioAlmeida 6mesesatrs

Cara,essaideiadasannotationsficousensacional.Voutestar,podetercerteza.
Parabns.
1

Responder Compartilhar

EduardoOttaviani>CssioAlmeida 6mesesatrs

ValeuCssio!Euacheiatqueamaiorianoiriacurtirisso,pelofatode
sernoscomentrios,masumaformadedizerqueaquilosuma
configurao...Valeumesmo!

Responder Compartilhar

IgorAPA 6mesesatrs

Boamano!Continuesempreassim!
1

Responder Compartilhar

EduardoOttaviani>IgorAPA 6mesesatrs

ValeuIgor!Souseufctligado..
1

Responder Compartilhar

WeslleyAraujo 6mesesatrs

BoaArago,
Parabnspelainiciativameubrother!
1

Responder Compartilhar

EduardoOttaviani>WeslleyAraujo 6mesesatrs

ValeuCenouraMonstro!

Responder Compartilhar

FellipeAzambuja(femontanha) 6mesesatrs

Grandemestre,mestredoJS!
Independentedesermaisumframeworkouno,obrigadoporcompartilharseu
conhecimentoedemonstraroseuinteresseemnosensinarsempreumpouco
mais!
Abraocara
3

Responder Compartilhar

EduardoOttaviani>FellipeAzambuja(femontanha) 6mesesatrs

ValeuAzamba!Abraomestre!

Responder Compartilhar

Avatar
http://tableless.com.br/jailsoframeworkearquiteturajavascript/

14/21

23/12/2015

JailsOFrameworkeaArquiteturadoJavascriptTableless

Avatar Estecomentriofoiapagado.
WillianMartins>Guest 6mesesatrs

MedesculpeAmigo,masseucomentrioalmdebabaca,egostae
inconsistentecomacomunidadedeFrontEnd.
Precisamosdepessoasquefaamacomunidadecrescere
amadurecer.Infelizmentevocerroufeionessecomentrio.
2

Responder Compartilhar

MauricioSoares>Guest 6mesesatrs

Interessantevocfalardeatitudeidiota,egostaeinconsistente,sem
nemapresentarnenhumargumentoparaisso.
Oquevcachadeparardesermaisumhaterpanacadainternet,edar
suaopiniodeverdade?afinaldecontasocriadordoJails(eeu
tambm)iriaadorarsaberoporquevocchegounessaconcluso,para
queelepossamelhoraraatitude"idiota,egoistaeinconsistente".
3

Responder Compartilhar

leualemax>MauricioSoares 6mesesatrs

sinceraminhaopiniocara,noqueroserhaterno,seele
fosseumamigomeu,iafalarexatamentedamesmaforma,como
jfizemumcasoexatamenteigual.chegueicomumamigomeu
efalei:"cara,tutasendoidiotaeegosta."

Responder Compartilhar

leualemax>MauricioSoares 6mesesatrs

desculpasenomeexpliquei,acheiqueestavaclarocomogua,
inconsistente,porquesegundoele"estavainsatisfeito"poremo
frameworkdelenotemnadadenovo,require.js+angularfazem
exatamenteisso,egoistaporqueelepodiaestarajudandooutro
frameworkquejfazexatamenteissoamelhoraraoinvsde
fazerumoutroeidiotaporqueeleperdeutempoatoa.

Responder Compartilhar

EmilioAiolfi>leualemax 4mesesatrs

@leualemaxnofiquecominveja.Paredeperderseu
tempofazendocriticasburrasesemfundamentos.Vai
soltarpipa(papagaio)emcimadelaje,assimvoc
aproveitarmelhoroseutempo.

Responder Compartilhar

CssioAlmeida>leualemax 6mesesatrs

Semdvidasdegentecomovocqueacomunidade
precisa.Quenotentanadanovo.Parabns.(palmas)
1

http://tableless.com.br/jailsoframeworkearquiteturajavascript/

Responder Compartilhar
15/21

23/12/2015

JailsOFrameworkeaArquiteturadoJavascriptTableless

Responder Compartilhar

IgorAPA>leualemax 6mesesatrs

Oporquedanecessidadedessaabordagem?Apostoque
noconheceocaraenemsabedasboasvontadesque
eletem.Pormaisqueocaraerreouacerte,aideia
ajudarapontandoerroseacertosediscutiremuma
melhoria,dessaformatodosconseguemevoluir.
Pormaisqueexistaounoexistaalgo,aideiapraticar,
copiar,refazer,adaptarporquenofinalointuito
aprender.
Entendendoquevocdevanotergostadodealgum
coisa,masnoassimquesetrataalgum!Eseachar
quenodevaajudardealgumaforma,fechaaabaev
paraalgoquesteagrade.
Talvezvocnoqueira,masdesejoumagrandeevoluo
nasuavidaecarreira.
1

Responder Compartilhar

MauricioSoares>leualemax 6mesesatrs

Voctemquesermaismenteabertacara...
OAngulartemumaporradadefeaturesquevoc
provavelmentenuncavaiusaremumprojetomenor,esse
seriaumbomcaseparaoJailsqueextremamenteleve
(3kbminvs126kbmin)
Outra,setodomundotivesseessamentalidadede"ajudar
outroframework",provavelmenteessesframeworks
novosqueestobombandonuncateriamnascido.
Edesculpa,masasuaafirmaomaisinfelizfoia"perca
detempo",umprogramadornuncaperdetempo
desenvolvendoalgonovo,porqueeleaprendecomo
projetoqueeletrabalhou.Hojeocaraadquiriuumputa
conhecimentodepadresemetodologiasporcontado
Jails,coisaquemuitoprogramadordeveriafazer.
6

Responder Compartilhar

AndrCampos>leualemax 6mesesatrs

Entoquerdizerquesporqueexistemsupostas
soluesparaosproblemasnomercado,devamosnos
algemaraestassolues,eaindainvestironossotempo
ajudandoestassolues?Umacomunidade
colaborativa,no'obrigativa'.
http://tableless.com.br/jailsoframeworkearquiteturajavascript/

16/21

23/12/2015

JailsOFrameworkeaArquiteturadoJavascriptTableless

Comooprprioautorexplicounopost(vocleu?),a
soluodelefoiaplicadanaempresaquetrabalha(que
suponhoserumecommercenacionaldegrandeporte).
Logo:elenoperdeutempoatoa.Ele,diferenteda
'comunidade',ganhoudinheirocomasoluo.Melhor
ainda?Elecompartilhoucomacomunidadeacriaodele
(horaalgumaeleobrigadoaisto,e,aindaporcima,
poderialucrarmaisainda,casoelequisesse).
Pessoascomoele,quefazemporonde,enoapenas
copiamecolam(equidigitamalgumas10linhasde
cdigo),quefazemadiferenanomercado.
Achoquedeveramosreveroidiotaeegostaporaqui.
3

Responder Compartilhar

Kazz>AndrCampos 6mesesatrs

Dandoumarpidapassadapeloperfildocaradapra
sacaronveldoscomentriosde"dio"queele
dissemina.Tpicocritico,maisfcilnemdarbola.
3

Responder Compartilhar

LuizJunior 6mesesatrs

BelaIniciativa!
Sempretiveaideiadequevocsdominaumaferramenta,processo,
frameworkoumetodologiaquandovocsabeahoracertadeuslos,jque,
nemsempre,oframeworkdamodanomercadovaiseroidealparaoseu
projeto/problema.
Parabns!
2

Responder Compartilhar

EduardoOttaviani>LuizJunior 6mesesatrs

ValeuBrbara=).Exatamente!Eupensodamesmaforma...
1

Responder Compartilhar

PedroAraujo 6mesesatrs

Poxa,bemlegal.Adoreiaideiadousodosannotations.
Parabns
1

Responder Compartilhar

EduardoOttaviani>PedroAraujo 6mesesatrs

ValeuPedro!
Nossacara,euvouconfessarquegostotambm,masqueriaquefosse
opcional,muitagentedevefazercarafeiapraissoarsrsrs,oque
completamenteaceitvel...
http://tableless.com.br/jailsoframeworkearquiteturajavascript/

17/21

23/12/2015

JailsOFrameworkeaArquiteturadoJavascriptTableless

Responder Compartilhar

LuisRudge 6mesesatrs

>euaindanomeacostumeicomaidiademisturarhtmleconstruode
markupviaJavaScript
Talvezsejahoradeolharproreactdenovo.Nohtml.umafuno.Sevoc
pensarnojsxcomoumanovasintaxe,aoinvsdepensarquetmisturando
algo,tudofazsentido.Comcertezafazmaissentidodoquecriarumframework
novo.
1

Responder Compartilhar

EduardoOttaviani>LuisRudge 6mesesatrs

Talvezfaa,masa"mistura"dojscomohtmlapenasumaopinio
pessoalmesmo,noeraanicamotivao,secolocssemosoreactno
projetonoresolveramososproblemasquepassamos,emboraficasse
maisorganizado.
1

Responder Compartilhar

Iconic 6mesesatrs

Parecemuyinteressante,achamquevaleapenainvestir?
1

Responder Compartilhar

NOSSA NEWSLETTER
EmailAddress

FirstName

Subscribe

http://tableless.com.br/jailsoframeworkearquiteturajavascript/

18/21

23/12/2015

JailsOFrameworkeaArquiteturadoJavascriptTableless

MAIS VISUALIZADOS
Diga ol ao TypeScript e adeus ao
JavaScript
Centralizando um objeto na Horizontal
e Vertical com CSS
Criando um Menu Horizontal com CSS
Criando uma aplicao simples com
AngularJS
Design Responsivo na prtica 2: do
layout ao HTML

MAIS RECENTES
Diga ol ao TypeScript e adeus ao
JavaScript
Uma viso detalhada sobre
instanciao de variaveis no
JavaScript
WP Rest API O futuro do WordPress
Como automatizar a criao de Virtual
Hosts
O novo software que substitui o Flash
http://tableless.com.br/jailsoframeworkearquiteturajavascript/

19/21

23/12/2015

JailsOFrameworkeaArquiteturadoJavascriptTableless

JavaScript
Diga ol ao TypeScript e adeus ao JavaScript
Uma viso detalhada sobre instanciao de variaveis no JavaScript
Detectando navegadores com Bowser
ES2015 Babel 6 com Browserify e Babelify
Introduo ao Electron

CSS
Como usar variveis no CSS de forma nativa
Acessibilidade na web: Como tornar seu site acessvel.
Use as facilidades do CSS 4 hoje
Afinal, como usar herana no CSS?
Centralizando contedo na vertical e horizontal com CSS Flexbox

Tcnicas e Prticas

http://tableless.com.br/jailsoframeworkearquiteturajavascript/

20/21

23/12/2015

JailsOFrameworkeaArquiteturadoJavascriptTableless

Tcnicas e Prticas

Uma viso detalhada sobre instanciao de variaveis no JavaScript


Detectando navegadores com Bowser
Usando GIT para atualizar arquivos no servidor de hospedagem II
Final
Introduo ao Electron
10 Dicas Simples Para Acelerar Seu Site At 278 Vezes

Feito pela e para a comunidade web brasileira. Ajude.

http://tableless.com.br/jailsoframeworkearquiteturajavascript/

21/21

Das könnte Ihnen auch gefallen