<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>desenvolvaWeb</title>
	
	<link>http://www.desenvolvaweb.com.br</link>
	<description>Desenvolvimento Web sem complicações.</description>
	<lastBuildDate>Mon, 21 Dec 2009 13:00:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1-alpha</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/desenvolvaweb" /><feedburner:info uri="desenvolvaweb" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>5 dicas para desenvolvimento em jQuery</title>
		<link>http://feedproxy.google.com/~r/desenvolvaweb/~3/WCmMN2WHDng/</link>
		<comments>http://www.desenvolvaweb.com.br/2009/12/21/5-dicas-para-desenvolvimento-em-jquery/#comments</comments>
		<pubDate>Mon, 21 Dec 2009 13:00:44 +0000</pubDate>
		<dc:creator>Hilder  Santos</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[dicas]]></category>
		<category><![CDATA[DRY]]></category>
		<category><![CDATA[produção]]></category>

		<guid isPermaLink="false">http://www.desenvolvaweb.com.br/?p=17</guid>
		<description><![CDATA[Desenvolver scripts em jQuery ainda é um bicho-de-sete-cabeças para muitos. Desorganização e falta de planejamento são geralmente, assim como em qualquer tarefa de desenvolvimento, fatores principais para insucesso em aplicações que utilizam este e outros frameworks/linguagens de programação. Ao longo deste tempo desenvolvendo scripts nesta plataforma, descobri algumas rotinas que tendem a evitar erros e [...]]]></description>
			<content:encoded><![CDATA[<p>Desenvolver scripts em <strong><a href="http://www.jquery.com" target="_blank">jQuery</a> </strong>ainda é um bicho-de-sete-cabeças para muitos. Desorganização e falta de planejamento são geralmente, assim como em qualquer tarefa de desenvolvimento, fatores principais para insucesso em aplicações que utilizam este e outros frameworks/linguagens de programação.</p>
<p>Ao longo deste tempo desenvolvendo scripts nesta plataforma, descobri algumas rotinas que tendem a evitar erros e otimizar o tempo de produção e carregamento da aplicação, o que no final das contas vai deixar você mais tranquilo, sem noites de insônia e com o corpo livre de cafeína e Red Bull. :)<br />
<span id="more-17"></span><br />
Vamos a elas:</p>
<h2>01. Sempre&#8230; SEMPRE declare uma variável para não conflitar seus scripts</h2>
<p>Já aconteceu de você desenvolver um script/aplicação qualquer que está rodando &#8220;redondo&#8221; naquela paginazinha html que você fez para testar os efeitos e, quando você colocou no ambiente de homologação/produção, simplesmente ela parou de funcionar, mesmo estando com o mesmo código e as mesmas referências?</p>
<p>Pois é. O que acontece é que frameworks javascript que utilizam o <code>$</code> como atalho para suas bibliotecas tendem a conflitar com o jQuery&#8230; que também utiliza o <code>$</code>. Resultado? Um site sem funcionar uma biblioteca ou outra (por exemplo, se você estiver utilizando a <a href="http://www.prototypejs.org/" target="_blank">Prototype </a>- a biblioteca, não o jogo. ;) )</p>
<p>Mas e se você não estiver utilizando mais nenhum framework, não tem necessidade de utilizar o <code>noConflict</code> do jQuery, correto?</p>
<p>ERRADO. Para dar um exemplo real, o proxy de lá do trabalho é meio louco, e acaba barrando QUALQUER aplicação que utilize o <code>$</code> como atalho, ou seja: sites como o da <a href="http://www.locaweb.com.br">Locaweb</a> são IMPOSSÍVEIS de se navegar, só porque o desenvolvedor esqueceu de declarar o <code>noConflict</code> afim de evitar estes problemas. Em dias que preciso conversar com o suporte de lá, simplesmente preciso ir a outra máquina que esteja em um proxy desbloqueado para isso.</p>
<p>Portanto, pegue o hábito: a primeira linha de seu script em jQuery deve ser o código abaixo, obrigatoriamente. Adicionar o <code>$j</code> antes de cada referência à biblioteca nem doi tanto asssim.<br />

<pre class="brush:javascript">
var $j = jQuery.noConflict(); // evita conflitos com outras bibliotecas... ou com alguns proxys.
</pre>
</p>
<h2>02. Utilize a filosofia DRY &#8211; Don&#8217;t Repeat Yourself</h2>
<p>Esta vem de algumas plataformas, principalmente a <acronym title="Ruby on Rails">RoR</acronym>: para quê repetir código, quando você pode otimizar a sua produção fazendo o máximo para não repeti-lo?</p>
<p>Apesar de óbvia, esta filosofia só se torna real na prática. Leva um certo tempo até que você se acostume a não criar duas rotinas para um botão de voltar e prosseguir num slider de destaques, por exemplo.</p>
<p>Enfim&#8230; Para saber mais sobre a DRY, acesse <a href="http://en.wikipedia.org/wiki/Don%27t_repeat_yourself" target="_blank">este link da Wikipedia</a> (em inglês).</p>
<h2>03. Comente o máximo que você puder o seu código</h2>
<p>Isso é óbvio, mas muita gente acha que o desenvolvimento do script está sendo feito somente para ele, e que não pode vir outro desenvolvedor para prestar manutenção no mesmo. Na verdade, até a manutenção própria é complicada quando não há um bom esclarecimento do código.</p>
<p>Algo que muita gente ainda não sabe: a prática de comentar o que você está fazendo poupa horas &#8211; quiçá dias &#8211; de trabalho e estresse. Portanto&#8230; Faça isso.</p>
<h2>04. Se a aplicação desenvolvida for muito grande, considere separar o seu código em arquivos diferentes</h2>
<p>Digamos que você está desenvolvendo um mega portal, e há uma animação para os destaques na home-page, outra para o menu da barra lateral, outra para o formulário na página de contato, mais uma requisição AJAX do login&#8230;</p>
<p>Já imaginou se você coloca tudo isso em apenas <strong>1</strong> arquivo? Primeiro, o tamanho dele ficaria gigantesco. Segundo, e se você precisa mudar uma letra ou uma referência sequer, imagine ter que localiza-la nas suas mais de 1000 linhas de código?</p>
<p>A melhor solução é separar os seus scripts em arquivos diferentes. Desta forma, além de otimizar a sua manutenção, você ainda pode referenciar somente os arquivos necessários para que aquela parte da sua aplicação funcione, a depender de qual seção você esteja. Simples, mas eficaz.</p>
<h2>05. Seja conciso: evite detalhes desnecessários</h2>
<p>Imagine que você tenha um script responsável por expandir/contrair um menu que tenha subitens, e que adicione uma classe (por exemplo, classe <code>ativa</code>) aos expandidos, para que você possa formatá-los via css.</p>
<p>Um código capaz de fazer com que isso aconteça, mas levemente &#8220;pesado&#8221;, seria este:</p>
<p>
<pre class="brush:javascript">
var $j = jQuery.noConflict(); // evita conflitos com outras bibliotecas... e alguns proxys.

$j(document).ready(function() {
	
    $j('ul#menu li:has(ul)').next().slideUp(0); // Faço sumir todos os subitens da lista com o id #menu

	$j('ul#menu li:has(ul)').click(function() {
    	if($j(this).is('.ativa') {
        	$j(this).removeClass('ativa').next().slideUp('slow');
        } else {
        	$j(this).addClass('ativa').next().slideDown('slow');
        }
    });
});
</pre>
</p>
<p>Tudo ok: temos um script que, em primeiro lugar, dá um <code>slideUp</code> em todos os subitens, e logo após, testa se aquele item <code>li</code> tem a classe <code>ativa</code>, fazendo com que contraia em caso positivo ou expanda em caso negativo, adicionando ou removendo a classe quando necessário. Simples.</p>
<p>Porém&#8230; Existe uma palavra mágica no jQuery, e esta palavra é a <strong>toggle</strong>. Quando você junta esta palavra a algum tipo de animação, efeito ou coisa parecida, ela tem o poder de magicamente colocar um interruptor virtual em suas rotinas, ligando ou desligando o que for necessário. Portanto&#8230; se precisamos de um script para expandir/contrair (uma analogia seria ligar/desligar), o <strong>toggle</strong> se encaixa como uma luva neste caso.</p>
<p>Vejamos como ficaria o código utilizando esta palavra mágica:</p>
<p>
<pre class="brush:javascript">
var $j = jQuery.noConflict(); // evita conflitos com outras bibliotecas... e alguns proxys. ;)

$j(document).ready(function() {
	
    $j('ul#menu li:has(ul)').next().slideUp(0); // Faço sumir todos os subitens da lista com o id #menu

	$j('ul#menu li:has(ul)').click(function() {
        	$j(this).toggleClass('ativa').next().slideToggle('slow');
    });
});
</pre>
</p>
<p>Viu? Poupamos tempo, linhas de código e velocidade de carregamento. Este é só um pequeno exemplo de como ser conciso facilita &#8211; e muito &#8211; o desenvolvimento e manutenção do seu código.</p>
<p>Existem dezenas &#8211; ou até centenas &#8211; de outras práticas que podem te ajudar no desenvolvimento de aplicações para a web, sejam elas em jQuery, Ruby on Rails, PHP ou qualquer outra plataforma de desenvolvimento. O mais importante neste caso, é não seguir especificamente esta ou aquela, ou querer seguir todas de vez: encontre um norte, alguma que realmente otimize o seu tempo, e torne-se adepto dela. As que dei aqui são generalistas, e se aplicam a quase qualquer escopo; digamos que seja o &#8220;basicão&#8221; do bom desenvolvimento, não só em jQuery.</p>
<p>E você, tem alguma dica interessante para desenvolvimento em jQuery? Que tal compartilha-las conosco?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.desenvolvaweb.com.br/2009/12/21/5-dicas-para-desenvolvimento-em-jquery/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.desenvolvaweb.com.br/2009/12/21/5-dicas-para-desenvolvimento-em-jquery/</feedburner:origLink></item>
		<item>
		<title>Estréia do desenvolvaWeb – portal de desenvolvimento web</title>
		<link>http://feedproxy.google.com/~r/desenvolvaweb/~3/V8ukJ8xNk0s/</link>
		<comments>http://www.desenvolvaweb.com.br/2009/12/19/estreia-desenvolvaweb/#comments</comments>
		<pubDate>Sat, 19 Dec 2009 14:09:37 +0000</pubDate>
		<dc:creator>Hilder  Santos</dc:creator>
				<category><![CDATA[Notícias]]></category>

		<guid isPermaLink="false">http://www.desenvolvaweb.com.br/?p=1</guid>
		<description><![CDATA[Olá, pessoal! É com um imenso prazer que inauguro na noite deste sábado o desenvolvaWeb &#8211; o mais novo portal de desenvolvimento Web do Brasil. Há muito tempo estou querendo um espaço para compartilhar com vocês tudo o que tenho aprendido ao longo destes 3 anos envolvido com desenvolvimento de websites em xHTML, CSS, WordPress, [...]]]></description>
			<content:encoded><![CDATA[<p>Olá, pessoal!</p>
<p>É com um imenso prazer que inauguro na noite deste sábado o <strong>desenvolvaWeb</strong> &#8211; o mais novo portal de desenvolvimento Web do Brasil.</p>
<p>Há muito tempo estou querendo um espaço para compartilhar com vocês tudo o que tenho aprendido ao longo destes 3 anos envolvido com desenvolvimento de websites em xHTML, CSS, WordPress, PHP, Flash e jQuery. Cometi muitos erros, mas também aprendi bastante, e é sobre isso &#8211; sobre a maneira mais ágil de fazer determinadas tarefas e o que fazer para evitar determinados erros &#8211; que vou falar neste nosso espaço.</p>
<p>Espero ensinar e aprender com vocês, e que juntos possamos obter excelência em nossos conhecimentos relacionados a desenvolvimento Web. Postarei notícias, tutoriais (principalmente) e tudo o que mais se relacione com este assunto. Espero que todos nós cresçamos juntos, e façamos a diferença, seja no mercado de trabalho, seja nos nossos projetos pessoais, ou até mesmo em nossos estudos descompromissados. Este portal é para todos nós.</p>
<p>Ainda existe muita coisa a vir pela frente, mas vamos começar com o básico: firmar o nome do <strong>desenvolvaWeb </strong>e se tornar uma das referências no assunto desenvolvimento. Para isso, conto com a ajuda de todos vocês; por isso, compartilhem, comentem, critiquem, sugiram, elogiem. Qualquer feedback é bem vindo.</p>
<p><a href="http://feeds.feedburner.com/desenvolvaweb" target="_blank">Assine o nosso feed</a> ou guarde o blog em seus favoritos/delicious, e acompanhe sempre os nossos artigos.</p>
<p>Em breve, começaremos pra valer.</p>
<p>Sucesso para todos nós!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.desenvolvaweb.com.br/2009/12/19/estreia-desenvolvaweb/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.desenvolvaweb.com.br/2009/12/19/estreia-desenvolvaweb/</feedburner:origLink></item>
	</channel>
</rss>
