Skip to content

Commit de38483

Browse files
committed
Update Inter to v2.2.3
1 parent f98c671 commit de38483

File tree

6 files changed

+154
-15
lines changed

6 files changed

+154
-15
lines changed

index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ <h4>Sem configurações complexas</h4>
131131
<section class="lib">
132132
<h3>Inter</h3>
133133
<ul>
134-
<li><a href="https://github.com/interjs/inter/releases/tag/v2.2.2">Versão: 2.2.2</a></li>
134+
<li><a href="https://github.com/interjs/inter/releases/tag/v2.2.3">Versão: 2.2.3</a></li>
135135
<li><a href="https://github.com/interjs/inter/blob/main/LICENSE">Licensa: MIT</a></li>
136136
<li><a href="https://github.com/interjs/inter">2021 - 2024</a></li>
137137
</ul>

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "inter-docs",
3-
"version": "2.2.2",
3+
"version": "2.2.3",
44
"description": "The docs for Interjs",
55
"author": "Denis Power",
66
"license": "MIT",

script/inter.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

v2/tutorial/pt/instalacao/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ <h3><a href="#cdn" id="cdn" class="hash">CDN</a></h3>
106106
<h3><a href="#localmente" id="localmente" class="hash">Localmente</a></h3>
107107
<p>
108108
Queres usar o Inter directamente em sua máquina? É super simples, baixa
109-
ele clicando em <a href="https://github.com/interjs/inter/releases/download/v2.2.2/inter.min.js" title="Vai baixar a versão 2.2.2(A última versão)">Baixar - v2.2.2</a>, e agora é só importar ele em uma tag script.
109+
ele clicando em <a href="https://github.com/interjs/inter/releases/download/v2.2.3/inter.min.js" title="Vai baixar a versão 2.2.3(A última versão)">Baixar - v2.2.3</a>, e agora é só importar ele em uma tag script.
110110
</p>
111111

112112
<textarea id="Editor2">
@@ -175,7 +175,7 @@ <h3><a href="#cdn2" id="cdn2" class="hash">CDN</a></h3>
175175

176176
<h3><a href="#localmente1" id="localmente1" class="hash">Localmente</a></h3>
177177
<p>Para instalar a versão modular localmente, basta baixar o Inter clicando em:
178-
<a href="https://github.com/interjs/inter/releases/download/v2.2.2/inter.m.js" title="Vai baixar a versão 2.2.2(A última versão)">Baixar - v2.2.2</a>,
178+
<a href="https://github.com/interjs/inter/releases/download/v2.2.3/inter.m.js" title="Vai baixar a versão 2.2.3(A última versão)">Baixar - v2.2.3</a>,
179179
e depois é só importar a função que pretenderes usar.
180180
</p>
181181
<textarea>

v2/tutorial/pt/lista/index.html

Lines changed: 138 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@
2525
height: auto;
2626
}
2727
img {
28-
width: 30vw;
29-
height: 30vh;
28+
width: 20vw;
29+
height: 20vh;
3030
}
3131

3232
#lingsDeProgramacao {
@@ -107,6 +107,11 @@ <h1><a href="#lista" id="lista" class="hash">Lista</a></h1>
107107
<span class="hl">in</span> - Deve ser uma string que vai indicar o valor do atributo id do elemento onde a lista
108108
será renderizada.
109109
</li>
110+
<li>
111+
<span class="hl">optimize</span> - Essa propriedade foi adicionada desde a versão
112+
<a href="https://github.com/interjs/inter/releases/tag/v2.2.3" target="_blank" class="hash">2.2.3</a>, ela serve para optimizar a performance da lista, vai até a parte
113+
que fala sobre a <a href="#opcao-optimize" class="hash">opção optimize</a> nessa matéria para uma explicação mais detalhada.
114+
</li>
110115
<li>
111116
<span class="hl">each</span> - Representa os dados em que a lista será baseada, o valor dessa propriedade pode
112117
ser uma <span class="hl">Array</span> , um <span class="hl">objecto</span>, <span class="hl">Set</span>,
@@ -407,6 +412,97 @@ <h3>Lista dos teus amigos</h3>
407412

408413
<div class="space"></div>
409414
</div>
415+
<h3 id="opcao-optimize"><a href="#opcao-optimize" id="opcao-optimize" class="hash"> Opção optimize</a> </h3>
416+
<div class="warning">
417+
<p>Essa propriedade(opção) faz parte do Inter dese a versão
418+
<span class="hl">2.2.3</span>
419+
</p>
420+
</div>
421+
<p>
422+
Quando a lista for super grande, de milhares de itens e os containeres correspondentes
423+
à cada item tiverem inúmeros elementos aninhados, você vai notar uma certa queda de performance
424+
ao atualisar a lista, com a propriedade <span class="hl">optimize</span> definida para <span class="hl">true</span>
425+
a performance da lista no Inter vai até às nuvens! Mas esse ganho de performance tem uma desvantagem. Vê o exemplo:
426+
</p>
427+
428+
<textarea >
429+
430+
<div id="estudantes"></div>
431+
<script>
432+
433+
const estudantes = [
434+
{ nome: "Alberto Sampaio", nota: 14, professor: "João Costa", novoProf: false },
435+
{ nome: "Angelina Guilherme", nota: 8}
436+
]
437+
438+
renderList({
439+
in: "estudantes",
440+
each: estudantes,
441+
optimize: true,
442+
do(estudante) {
443+
444+
const { nome, nota, professor, novoProf} = estudante
445+
const buttonEvents = { onclick: () => estudante.novoProf = true };
446+
const done = { onclick: () => estudante.novoProf = false };
447+
const inputAttrs = { type: "text", value: professor, placeholder: "Digite" };
448+
const inputEvents = { oninput: (e) => estudante.professor = e.target.value }
449+
const h4Text = `Estudante: ${nome} ${nota > 10 ? "passou de ano" : "vai repetir"}`
450+
451+
return template({
452+
tag: "div", children: [{
453+
tag: "h4", text: h4Text
454+
},{
455+
tag: "p", text: `O professor: ${this[0].professor}`
456+
},{
457+
tag: "button", text: "novo Prof", renderIf: novoProf == false,
458+
events: buttonEvents
459+
},{
460+
tag: "div", renderIf: novoProf, children: [{
461+
tag: "input", attrs: inputAttrs, events: inputEvents
462+
},{
463+
tag: "button", text: "Feito", events: done
464+
}]
465+
}]
466+
})
467+
}
468+
})
469+
470+
471+
</script>
472+
</textarea>
473+
<div class="demo">
474+
<div id="estudantes"></div>
475+
<div class="space"></div>
476+
</div>
477+
478+
<p>No exemplo anterior, nós usamos a opção <span class="hl">optimize</span> para optimizar a listar,
479+
que particularmente nesse caso é disnecessário só foi usado para exemplificar a desvantagem.
480+
Nós temos a Array estudantes que vai ser usado como os dados da nossa lista, mas um detalhe curioso é que,
481+
apenas o primeiro item(objecto) da lista tem as propriedades <span class="hl">professor</span> e
482+
<span class="hl">novoProf</span>, tecnicamente não tinha como nós apresentarmos o valor da propriedade
483+
professor no segundo elemento HTML da lista, baseando-se nas propriedades do segundo objecto, então nós usamos a
484+
professor do primeiro objecto, até aí tudo bem, o outro porém, é que quando se usa a propriedade
485+
<span class="hl">optimize</span> por exemplo, se uma das propriedades
486+
do primeiro item(objecto) da lista for alterada, o sistema
487+
de renderização da lista vai atualizar apenas o elemento correspondente(o primeiro container),
488+
já que o primeiro item da lista representa o primeiro elemento HTML da lista, assim
489+
o sistema de renderização evita trabalho desnecessário ao procurar alterações em outros elementos HTML
490+
da lista. No nosso exemplo, quando uma das propriedades do primeiro objecto da Array for alterada,
491+
o Inter vai supor que apenas o primeiro elemento da lista foi atualizado, já que seu reator(objecto correspondente) foi atualizado,
492+
então não vai procurar alterações no segundo elemento HTML da lista, já que as propriedades do segundo objecto da lista estão intáctas.
493+
494+
</p>
495+
496+
<p>A lição é: Quando você utilizar essa opção para optimizar a lista, certifique-se que cada container(elemento da lista)
497+
use apenas os dados dos objectos correspondentes, por exemplo, o segundo elemento da lista use apenas os dados do segundo objecto da lista.
498+
</p>
499+
500+
<p>Eu disse que no nosso exemplo, o uso da referida propriedade não faz diferença, não é?
501+
Queres um exemplo em que ela faz a diferença(aumenta a performance)?
502+
clica em <a href="https://codepen.io/Denis-Power/pen/ZEPwvrJ?editors=0010" target="_blank">optimização
503+
da lista </a>
504+
</p>
505+
410506
<h3><a href="#observe" id="observe" class="hash">Método observe</a></h3>
411507
<div class="warning">
412508
<p>Esse método faz parte do Inter desde a versão <span class="hl">2.1.0</span>.</p>
@@ -700,7 +796,7 @@ <h3><a href="#listaAninhada" id="listaAninhada" class="hash">Lista aninhada</a><
700796

701797
return template({
702798
tag: "div", children: [{
703-
tag: "h4", text: `Encarregad(a): ${nome}`
799+
tag: "h4", text: `Encarregado(a): ${nome}`
704800
},{
705801
tag: "p", text: `${nome} tem ${filhos.length} filhos`
706802
},{
@@ -737,7 +833,7 @@ <h3>
737833
</h3>
738834
<p>Essa propriedade funciona como a <a href="#reactor-setProps">setProps do reator da lista</a>,
739835
mas só que, as propriedades do objecto que estamos a nos referir é que serão atualizadas, ou seja, ela(setProps)
740-
é usada para atualizar os valores das proprieades do objecto de uma maneira elegante e performática. A setProps aceita apenas um objecto
836+
é usada para atualizar os valores das propriedades do objecto de uma maneira elegante e performática. A setProps aceita apenas um objecto
741837
como o seu valor, e as propriedades do referido objecto devem indicar o nome das propriedades que os seus
742838
valores serão alterados, e os valores, serão os novos valores para as respectivas propriedades.
743839
</p>
@@ -909,8 +1005,8 @@ <h4 _if="temTarefas">Tens { numeroDeTarefas } tarefas agendadas.</h4>
9091005
})
9101006

9111007
ref1.observe((nome, valor) => {
912-
if(nome == "texto") _if.temValorNoInput = valor.trim().length > 0;
913-
if(nome == "numeroDeTarefas") _if.temTarefas = valor > 0;
1008+
if (nome == "texto") _if.temValorNoInput = valor.trim().length > 0;
1009+
if (nome == "numeroDeTarefas") _if.temTarefas = valor > 0;
9141010
})
9151011

9161012
const reatorDaLista = renderList({
@@ -1386,7 +1482,7 @@ <h4 _if="temTarefas">Tens { numeroDeTarefas } tarefas agendadas.</h4>
13861482

13871483
return template({
13881484
tag: "div", children: [{
1389-
tag: "h4", text: `Encarregad(a): ${nome}`
1485+
tag: "h4", text: `Encarregado(a): ${nome}`
13901486
},{
13911487
tag: "p", text: `${nome} tem ${filhos.length} filhos`
13921488
},{
@@ -1395,6 +1491,41 @@ <h4 _if="temTarefas">Tens { numeroDeTarefas } tarefas agendadas.</h4>
13951491
})
13961492
}
13971493
})
1494+
const estudantes = [
1495+
{ nome: "Alberto Sampaio", nota: 14, professor: "João Costa", novoProf: false },
1496+
{ nome: "Angelina Guilherme", nota: 8}
1497+
]
1498+
1499+
renderList({
1500+
in: "estudantes",
1501+
each: estudantes,
1502+
optimize: true,
1503+
do(estudante) {
1504+
1505+
const { nome, nota, professor, novoProf} = estudante
1506+
const buttonEvents = { onclick: () => estudante.novoProf = true };
1507+
const done = { onclick: () => estudante.novoProf = false };
1508+
const inputAttrs = { type: "text", value: professor, placeholder: "Digite novo professor " };
1509+
const inputEvents = { oninput: (e) => estudante.professor = e.target.value }
1510+
const h4Text = `Estudante: ${nome} ${nota > 10 ? "passou de ano" : "vai repetir"}`
1511+
1512+
return template({
1513+
tag: "div", children: [{
1514+
tag: "h4", text: h4Text
1515+
},{
1516+
tag: "p", text: `O professor: ${this[0].professor}`
1517+
},{
1518+
tag: "button", text: "novo Prof", renderIf: novoProf == false ,events: buttonEvents
1519+
},{
1520+
tag: "div", renderIf: novoProf, children: [{
1521+
tag: "input", attrs: inputAttrs, events: inputEvents
1522+
},{
1523+
tag: "button", text: "Feito", events: done
1524+
}]
1525+
}]
1526+
})
1527+
}
1528+
})
13981529

13991530

14001531
</script>

v2/tutorial/pt/referencia/index.html

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919
<title>Referência</title>
2020
<style>
2121
img{
22-
width: 40vw;
23-
height: 40vh;
22+
width: 20vw;
23+
height: 20vh;
2424
}
2525
.CodeMirror {
2626
border: 1px solid #eee;
@@ -122,7 +122,15 @@ <h1><a href="#referencia" id="referencia" class="hash">Referência</a></h1>
122122

123123
</div>
124124
<span class="space"></span>
125+
125126
</div>
127+
<p>
128+
Antes de explicarmos o código, preparei
129+
um editor de código online(codePen) para você acompanhar melhor
130+
o tutorial, clica em <a href="https://codepen.io/Denis-Power/pen/poYGpyy" target="_blank">
131+
Aprendendo o Interjs
132+
</a> o editor vai abrir em outra aba, assim poderás editar e criar códigos usando o Inter.
133+
</p>
126134

127135
<p>Lá na tag script, você vê a função <span class="hl">Ref</span> não é? Essa função é usada
128136
para analisar o template alvo em busca de referências, e ela deve receber apenas um objecto como o seu argumento,

0 commit comments

Comments
 (0)