-
Notifications
You must be signed in to change notification settings - Fork 2
Sumários
- Aula 01 - Apresentação
- Aula 02 - Enquadramento da UC de PI. Linguagem JavaScript: Variáveis e scope, tipos primitivos e objetos
- Aula 03 - Linguagem JavaScript: Funções
- Aula 04 - Linguagem JavaScript: Funções (continuação)
- Aula 05 - Aula prática
- ElasticSearch
10-09-2019
Sumário
- Apresentação da disciplina de Programação na Internet -- PI
- Regras de avaliação
- Bibliografia
- Documentação suplementar: nodeschool.io e github.com/maxogden/art-of-node
Aula 02 - Enquadramento da UC de PI. Linguagem JavaScript: Variáveis e scope, tipos primitivos e objetos
17-09-2019
-
World Wide Web (WWW)
- História
- Arquitetura
- Cliente (browser)
- Servidor de hipertexto
- Protocolo de interação entre cliente e servidor (Hypertext Transfer Protocol)
-
Arquitetura Cliente <=> Servidor
-
Distinção entre tecnologias Web de cliente (browser) e servidor.
- Cliente: HTML, CSS, JavaScript
- Servidor: Node.js, PHP, Java, .NET, C/C++, etc.
-
Evolução histórica de PI e crescendo da importância do Javascript.
-
Evolução da tecnologia de servidor até ao Node.Js.
-
Standard de uma linguagem de script. ECMA – 262
-
Evolução histórica do Javascript desde o seu aparecimento em 1995 com o objetivo inicial de uma linguagem de scripting para o browser, até à versão EcmaScript 6
-
Análise das características da linguagem de programação Javascript como: dinâmica, funcional, untyped, e interpretada.
-
Scopes:
-
leteconst– variáveis que NÃO podem ser usadas fora do bloco em que foram declaradas. Temporal Dead Zone -
var- scope da função onde é declarada. Recomendação de NÃO usar.
-
-
Sistema de tipos EcmaScript edição 6:
Objecte Primitivos (todos os outros que não sãoObject) -
Tipos Primitivos:
Undefined,Null,Boolean,Number,String. -
operador
typeofeinstanceof -
Objetos
- Um objeto em JavaScript é um contentor de pares nome-valor!
-
Objeto Literal:
{ prop1: valor1, prop: valor2, …} - propriedades são membros de um objeto que armazenam valores.
- Uma propriedade que armazena uma função é um método
- 2 sintaxes para acesso a propriedades:
-
Dot notation: -
obj.propName- Apenas pode ser usada para acesso a propriedades com nomes que são identificadores válidos
-
Subscript notation
- Aceder a uma propriedade com nome dado por uma expressão:
obj[exp] - Pode ser usada para acesso a propriedades cujo nome não é um identificador válido
- Chamar um método com nome dado por uma expressão:
obj[exp]()
- Aceder a uma propriedade com nome dado por uma expressão:
-
Dot notation: -
- Introspeção sobre objetos em Javascript :
- Enumeração sobre nomes das propriedades de um objeto –
for(var key in objRef)
- Enumeração sobre nomes das propriedades de um objeto –
-
Arrays
- Arrays literais: [“elem1”, , “elem2”] -- a posição 1 fica com o elemento undefined
- Crescem automaticamente, como List do Java ou .Net
- Não são tipificados, logo são heterogéneos.
- Os elementos são obtidos por uma chave numérica, ou em string, tal como para as outras propriedades
- A principal diferença para os objetos é que têm uma propriedade length.
Recursos
- World Wide Web - Proposta original de Tim Berners-Lee
- Node.js
- npm
- nodeschool.io
- Data Structures: Chapter 4: Objects and Arrays
19-09-2019
- As funções são declaradas como literais que criam um valor função. 2 formas (existe uma 3ª forma):
- função sem nome - definição de função - e.g.
function () {}(função anónima) - função com nome - declaração de função - e.g.
function foo(){}
- função sem nome - definição de função - e.g.
- Uma função tem uma propriedade
nameque guarda o nome declarado na função. - Funções anónimas têm a propriedade
nameigual a string vazia (""). - O nome da variável que refere uma função != da propriedade name dessa função
- O número de argumentos, não tem que coincidir com o número de parâmetros
- Scope (visibilidade) de uma função e de um bloco.
-
Closure de uma função:
- Criado um novo por cada invocação da função
- Pode ter um tempo de vida superior à execução dessa chamada à função, se ficarem acessíveis funções criadas nessa chamada
Recursos
24-09-2019
-
Todas as funções recebem dois parâmetros implícitos:
thisearguments -
argumentsé uma coleção com o mesmo comportamento de array mas sem os seus métodos -
4 formas de chamar uma função:
- Como uma função -- this igual ao objeto global ou
undefined(se em modostrict) - Como um método -- this igual ao target e.g.
target.methodName() - Como construtor -- this igual ao objeto criado e.g.
new funcName() - com apply() ou call()
- Como uma função -- this igual ao objeto global ou
-
Função Construtora - Chamada realizada com o operador prefixo
new- O operador
newaltera o significado dothisque refere o objecto criado; - O construtor retorna implicitamente o novo objecto (
this) a não ser que haja retorno explícito; - Função Construtora --- tem uma propriedade explícita
prototype; - Utilização de
Function::call()para chamar um construtor "base"
- O operador
-
Prototypes
- Objeto –––
constructor–––> função Construtora (código) –––prototype–––> objeto Protótipo. - O protótipo tem a semântica do padrão de desenho Prototype
- O protótipo serve de “modelo” à criação de novos objectos
- Cada objecto tem uma propriedade implícita que refere o seu protótipo.
- Exemplos de actualização do
prototypee reflexo nos objectos com esseprototype -
Properties Lookup (o objecto tem precedência sobre o protótipo)
- Primeiro procura no objecto uma propriedade com o nome igual
- Caso não encontre, então procura no prototype uma propriedade com esse nome prototype chain
- Sobreposição de propriedades e comportamento do prototype chain
- Objeto –––
-
Modo
strict
Recursos
26-09-2019
Esclarecimento de dúvidas dos workshops:
- ElasticSearch - schema-free + RESTful + NoSQL
- ElasticSearch - Armazena e indexa documentos JSON via HTTP
-
run:
> elasticsearch - RESTFull - baseado em HTTP + recursos identificados por URI
- HTTP GET - retorna um recurso
- HTTP PUT - actualiza um recurso identificado por um URI
- HTTP POST - quando o URI não é conhecido
- HTTP DELETE - remove um recurso
- Elastic - Recursos = Documentos JSON
- Documentos JSON URI =
elastic host``/``indice``/``type-
curl http://localhost:9200/_cat-- informação do cluster -
curl http://localhost:9200/_cat/indices-- listar índices -
curl http://localhost:9200/_all-- detalhes de todos os índice -
curl http://localhost:9200/books-- detalhes de um índice, e.g.books -
curl http://localhost:9200/books/_search-- listar documentos de um índice, e.g.books -
curl http://localhost:9200/books/book/pg1001-- detalhes de um documento com_id=pg1001etype=book
-
- Manipular:
-
curl -X PUT http://localhost:9200/books-- Criar um índice, e.g.books -
curl -X DELETE http://localhost:9200/books/book/pg1001-- Apagar o documento com_id=pg1001 -
curl -X POSTversusPUTpara criar um documento com o conteúdo do ficheiroThe-Art-of-War.json.
-