JavaScript

Object.freeze e Object.frozen – Javascript #2

No JavaScript conseguimos transformar todo objeto em um objeto imutável, para isso podemos usar a propriedade Object.freeze.  Ou seja, a partir do momento que é chamado o método no objeto não se pode adicionar propriedades, deletar propriedades, tampouco edita-las. Também conseguimos checar se um objeto está congelado através do método Object.isFrozen que retorna true caso o objeto tenha sido congelado pelo método Object.freeze.

let pessoa = {
  nome : "Guilherme",
  idade : 27
}

pessoa.idade ++;

console.log("Idade antes do freeze: " + pessoa.idade);

// Congela o objecto
Object.freeze(pessoa);

console.log("Objeto está congelado: " + Object.isFrozen(pessoa));

pessoa.idade ++;

console.log("Idade dps do freeze: " + pessoa.idade);

O código acima imprimirá:

“Idade antes do freeze: 28”
“Objeto está congelado: true”
“Idade dps do freeze: 28”

Ou seja, na primeira chamada ele incrementa a idade pois o objeto ainda é imutável, depois da congelarmos ele com o freeze tentamos novamente incrementar a idade, porém, sem sucesso pelo fato do objecto ja estar congelado.E o método frozen retorna true, pelo fato de já termos congelado o objeto.


Porque os dons e a vocação de Deus são sem arrependimento. Romanos 11:29

Anúncios

Object Assign – Javascript #1

Um dos métodos úteis da versão do ECMAScript 2015 (aka ES6) é  o método Object.assign(), com ele conseguimos copiar valores de propriedades de N objetos de origem para um objeto de destino.

A sintaxe é baseada em 2 parâmetros.

Object.assign(destino, ...origens)

Onde o primeiro parâmetro é o objeto de destino e o segundo é um array com as propriedades de objetos de origem.

Segue um exemplo de uso.

var o1 = { a: 1 };
var o2 = { b: 2 };
var o3 = { c: 3 };

var obj = Object.assign(o1, o2, o3);
console.log(obj); // { a: 1, b: 2, c: 3 }
console.log(o1);  // { a: 1, b: 2, c: 3 }

O bacana é a possibilidade de atrelar propriedades massivas em seu objeto.

Também é possível o uso do Object.assign() para clonar um objeto.

var obj = { a: 1 };

var copy = Object.assign({}, obj);

obj.a = 2;

console.log(copy, obj); 

/* 
Imprimirá 

[object Object] {
  a: 1
}
[object Object] {
  a: 2
}
*/

Detalhe importante : No IE 11 o método Object.assign não irá funcionar, para isso é possível usar alguns polyfills disponíveis em mercado. https://babeljs.io/docs/plugins/transform-object-assign/


Eu sararei a sua infidelidade, eu voluntariamente os amarei; porque a minha ira se apartou deles. Oséias 14:4

Início Leitura – React Succintly

Nesse início de 2018 começarei a estudar ReactJS, minha experiência com o framework foi de leve passagem em 2015 em um projeto de e-commerce, desde então o framework ganhou forma e mercado por trazer uma abordagem diferente de seus “concorrentes”.

O livro escolhido é o React.js Succintly por eu ter gostado do resumo do livro e também por ser gratuíto 🙂  – Link para Download : http://bit.ly/2CIXkjv

 

Em breve os feedbacks.


Estando nós ainda mortos em nossas ofensas, nos vivificou juntamente com Cristo (pela graça sois salvos),E nos ressuscitou juntamente com ele e nos fez assentar nos lugares celestiais, em Cristo Jesus; Efésios 2:5,6

Feedback Leitura – Cangaceiro Javascript

rxiahuuvyefhy39kw2diszlgvuvkg87ylkgec5pytac_large

Feliz ano novo 🙂

Na última semana de 2017 conclui a leitura do livro Cangaceiro Javascript do Flavio Almeida.

Eu saí do mercado Java/PHP depois de 7 anos e comecei a trabalhar com Javascript, não que eu não mexia com JS antes, mas entrei a fundo no mercado Fullstack JS (NodeJS, Angular, React, MongoDB) e muito do que eu tinha de conhecimento (basicamente o ES5) estava obsoleto para os dias de hoje.

O livro do Cangaceiro me mostrou o quão podemos ir além com o JS e o quão ele está próximo das linguagens fortes de mercado com as mudanças do ES6-ES7. A forma como o autor ensina é fantástica, trazendo uma didática muito boa com bastante conteúdo interessante.

Recomendo a leitura, mesmo que você não tenha o JS como sua linguagem principal, vale a pena.


Não temas, quando alguém se enriquece, quando a glória da sua casa se engrandece. Salmos 49:16

AngularJS – Incluindo arquivos html com ng-include

Quem nunca precisou reaproveitar um pedaço de html em varias páginas, ou então se deparou com uma tela enorme para construir e quis quebrar em vários arquivos.

Para quem usa o AngularJS, o ng-include é uma boa saída.

Basta chamar o atributo ng-include dentro de uma tag e seu arquivo externo html será incluido.

<body ng-app="">

<div ng-include="'meuArquivo.html'"></div>

</body>

Tambem é possível chamar uma página externa com o ng-include, basta usarmos a propriedade $sceDelegateProvider.resourceUrlWhitelist e passar os domínios externos permitidos pela nossa aplicação

<body ng-app="myApp">

<div ng-include="'https://www.siteexterno.com'"></div>

<script>
var app = angular.module('myApp', [])
app.config(function($sceDelegateProvider) {
    $sceDelegateProvider.resourceUrlWhitelist([
        'https://www.siteexterno.com/**'
    ]);
});
</script>

</body>

 


Tu me cercaste por detrás e por diante, e puseste sobre mim a tua mão. Salmos 139:5

Organizando chamadas assíncronas no NodeJS – Nimble

Olá, que nunca ficou confuso em se deparar com uma tela cheia de callbacks espalhados por todo o código ? Isso é uma consequência pelo fato do NodeJS ser uma linguagem non-blocking/assíncrona.

Existe uma forma da gente organizar essas chamadas assíncronas, esse é o Nimble.

Conseguimos montar a sequencia de chamadas tanto de forma serial (series):

_.series([
    function (callback) {
        setTimeout(function () {
            console.log('one');
            callback();
        }, 25);
    },
    function (callback) {
        setTimeout(function () {
            console.log('two');
            callback();
        }, 0);
    }
]);

Mesmo que o primeiro método leve 25 segundos para terminar, ele só executa o segundo, quando o primeiro terminar. então a saída será one, two.

Também conseguimos organizar as chamadas de forma pararela (parallel), onde não saberemos sempre quem termina primeiro, pois isso vai variar de acordo com o tempo de execução de cada método.

_.parallel([
    function (callback) {
        setTimeout(function () {
            console.log('one');
            callback();
        }, 25);
    },
    function (callback) {
        setTimeout(function () {
            console.log('two');
            callback();
        }, 0);
    }
]);

Eu comecei a usar em meus projetos e estou achando fantástico o uso.

Para versão em NodeJS segue o repositório NPM: https://www.npmjs.com/package/nimble


Se vivemos em Espírito, andemos também em Espírito. Gálatas 5:25

Anatomia de uma aplicação web – NodeJS

Você conhece como o NodeJS funciona na Web ?

Basicamente uma arquitetura web de uma aplicação NodeJS é composta por 3 camadas

1 – Core do NodeJS onde roda toda a infraestutura provida pela plataforma.

2 – Módulos comunitários que é onde o Node se torna escalável. Membro de comunidades pegam APIs do Core do Node e criam módulos fácil de usar que fazem você atingir objetivos de forma mais rápida. Imagine sua vida sem o express!

3 – A camada de lógica de aplicação é onde o app NodeJS é implementado. O tamanho dessa camada depende do número de módulos usados e da complexidade da aplicação.


Ó, vinde, adoremos e prostremo-nos; ajoelhemos diante do Senhor que nos criou. Salmos 95:6