;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Frango é opção mais em conta para o churrasco. Experimente sete receitas

Frango no espeto: utensílio pode ser giratório ou manual - Lauri Patterson/Getty Images
Frango no espeto: utensílio pode ser giratório ou manual Imagem: Lauri Patterson/Getty Images

De Nossa

06/11/2020 10h44

A inflação dos alimentos tem sido notícia e não é à toa. Quem vai ao mercado sente que os itens do carrinho estão cada dia mais caros. Segundo a Fundação Instituto de Pesquisas Econômicas (Fipe), a carne bovina subiu 38%.

Menos atingido, o frango teve um aumento de 27%. Para garantir o churrasquinho ou o almoço do fim de semana sem esfolar a carteira, selecionamos sete receitas de frango, que usam o animal inteiro, sobrecoxa e coxa ou galeto.

Todas elas foram cedidas por José Almiro, do canal do YouTube Churrasqueadas. Confira:

Coxa e sobrecoxa

Bastam 25 minutinhos na grelha para poder servir os convidados com saborosas coxas e sobrecoxas de frango marinadas com shoyu, páprica, mostarda e limão.

Coxa e sobrecoxa de frango desossadas

Dificuldade Fácil
5 porções
40 min
Ver receita completa

Frango assado no varal

Dois frangos caipiras são pendurados sobre a brasa para defumar e assar com calma. A paciência, aliás, é uma peça-chave na receita: antes de assar, a carne ainda precisa ficar uma hora marinando.

Frango assado no varal

Dificuldade Fácil
10 porções
120 min
Ver receita completa

Frango recheado

Todo churrasco pede uma farofinha. Por que não colocá-la dentro do frango como recheio? Siga o o a o e aproveite.

Frango recheado com farofa

Dificuldade Fácil
5 porções
90 min
Ver receita completa

Frango sentado na brasa

O nome divertido é graças à posição da carne. Com o auxílio de uma lata de cerveja vazia, posicione o animal de forma com que ele pareça, de fato, sentado.

Frango sentado na brasa

Dificuldade Fácil
4 porções
120 min
Ver receita completa

Galeto achatado

Temperado com ingredientes como vinho e pimenta dedo-de-moça, esse galeto esbanja sabor. O pulo do gato da receita está na incidência do calor, que muda de acordo com a altura da grelha.

Galeto achatado à moda caipira

Dificuldade Fácil
4 porções
90 min
Ver receita completa

Galeto Al Primo Canto

Com espeto giratório automático, o trabalho fica mais fácil. Mas se tiver só a versão convencional, basta virá-lo manualmente para garantir que todos os lados assem por igual. Ervas e noz-moscada dão um gostinho único ao prato tradicional do Rio Grande do Sul.

Galeto Al Primo Canto

Dificuldade Fácil
8 porções
90 min
Ver receita completa

Galeto marinado

Para assar, só são necessárias duas horas. Mas a grande sacada desse preparo é a marinada, que expõem o galeto a uma mistura de vinho branco, shoyu e outros temperos por 24 horas.

Galeto marinado

Dificuldade Fácil
8 porções
120 min
Ver receita completa