Exercício – Criar um aplicativo Node.js no Visual Studio Code

O Visual Studio Code fornece um IDE personalizável que permite criar, testar e executar aplicativos Node.js.

No cenário de exemplo, você deseja usar o Visual Studio Code como o ambiente de desenvolvimento para criar e testar seus aplicativos Node.js.

Neste exercício, você instalará pacotes do Node que permitem configurar o Node.js para uso no Visual Studio Code. Você usará esse ambiente para escrever um aplicativo que solicita detalhes dos alunos ao usuário. Em seguida, o aplicativo criará objetos do JavaScript que capturam essas informações.

No próximo exercício, você verá como salvar esses objetos em um contêiner do Cosmos DB.

Este exercício é executado no computador desktop e usa uma área restrita do Azure para seus recursos.

Observação

Este exercício pressupõe que você já tenha instalado o Node.js e o npm no computador desktop.

Configurar o Node.js

  1. Inicie o Visual Studio Code, caso ele ainda não esteja em execução.

  2. No menu Terminal, clique em Novo Terminal.

  3. Na janela Terminal, execute o comando a seguir para criar uma pasta chamada notas para o aplicativo Node.

    mkdir grades
    
  4. Digite os seguintes comandos para ir para a pasta notas e inicialize um novo aplicativo Node:

    cd grades
    npm init -y
    

    O comando npm init cria um arquivo package.json e exibe o conteúdo dele. Esse arquivo contém os metadados iniciais para o aplicativo, contendo um nome padrão, uma descrição e um ponto de entrada.

  5. No menu Arquivo do Visual Studio Code, selecione Abrir Pasta e abra a pasta notas.

  6. Clique no arquivo package.json na janela Explorer.

    Captura de tela do Visual Studio Code. O usuário está editando o arquivo package.json.

  7. No painel do editor, altere a propriedade descrição para Manutenção de notas dos alunos e dos cursos e altere a propriedade principal para studentgrades.js. O arquivo deve ser semelhante a este:

    {
        "name": "grades",
        "version": "1.0.0",
        "description": "Student and course grades maintenance",
        "main": "studentgrades.js",
        "scripts": {
            "test": "echo \"Error: no test specified\" && exit 1"
        },
        "keywords": [],
        "author": "",
        "license": "ISC"
    }
    
  8. No menu Arquivo, clique em Salvar.

  9. Na janela Terminal, execute os seguintes comandos para instalar os pacotes readline-sync e @types/node:

    npm install readline-sync
    npm install @types/node
    

    O pacote readline-sync contém funções que permitem coletar a entrada do usuário na linha de comando. O pacote @types/node contém definições de tipos adicionais para o Node.js.

    Observação

    Você pode ignorar os avisos Nenhum campo de repositório exibidos por enquanto.

Criar o aplicativo studentgrades

  1. No Visual Studio Code, no menu Arquivo, clique em Novo Arquivo.

  2. No menu Arquivo, clique em Salvar Como. Salve o novo arquivo com o nome studentgrades.js.

  3. Na janela do editor, adicione as seguintes linhas à parte superior do arquivo studentgrades.js:

    //@ts-check
    var question = require('readline-sync').question;
    

    A diretiva @ts-check permite a verificação de tipo avançada, usando o módulo @types/node que você adicionou ao aplicativo na tarefa anterior. A instrução require importa a função question do módulo readline-sync. Você usará a função question para solicitar ao usuário a entrada posteriormente neste aplicativo.

  4. Após a instrução require, adicione a seguinte definição de classe ao arquivo:

    class Student {
        constructor(ID, studentNumber, forename, lastname) {
            this.id = ID;
            this.StudentNumber = studentNumber;
            this.Forename = forename;
            this.Lastname = lastname;
            this.CourseGrades = [];
            this.addGrade = function (coursename, grade) {
                this.CourseGrades.push({Course: coursename, Grade: grade});
            };
            this.toString = function () {
                return `${this.StudentNumber}: ${this.Forename}, ${this.Lastname}\n`;
            };
            this.getGrades = function () {
                let grades = "";
                this.CourseGrades.forEach (function(coursegrade) {
                    grades = `${grades}${coursegrade.Course}:${coursegrade.Grade}\n`;
                });
                return grades;
            };
        }
    }
    

    A classe Student representa um aluno. Ela tem as propriedades id, StudentNumber, Forename, Lastname e CourseGrades. A propriedade CourseGrades é um objeto. Esse objeto conterá os pares chave-valor código de curso/nota do curso referente ao aluno. O método addGrade permite que um usuário adicione um par código de curso/nota do curso a essa propriedade. A função getGrades retorna uma cadeia de caracteres formatada listando os códigos e as notas de cursos referentes ao aluno. A função toString retorna uma cadeia de caracteres contendo os outros detalhes do aluno.

    Observação

    É importante distinguir entre o campo id, que é usado pelo Cosmos DB para identificar o documento, e o campo StudentNumber, que é usado para referenciar um aluno. Os dados do campo id são imutáveis, enquanto o campo StudentNumber pode ser alterado ao longo do tempo.

  5. Adicione a função getStudentData mostrada abaixo ao arquivo studentgrades.js, após a classe Student:

    function getStudentData () {
        let ID = question("Please enter the student's document ID: ");
        let studentNumber = question("Enter the student's number: ");
        let forename = question("Enter the student's forename: ");
        let lastname = question("Enter the student's last name: ");
        let student = new Student(ID, studentNumber, forename, lastname);
        return student;
    };
    

    Essa função solicita ao usuário os detalhes de um aluno e cria um objeto Student.

  6. Adicione a seguinte função ao arquivo studentgrades.js:

    function test () {
        let student1 = getStudentData();
        student1.addGrade("Computer Science", "A");
        student1.addGrade("Applied Mathematics", "C");
    
        process.stdout.write(student1.toString());
        process.stdout.write(student1.getGrades());
    
        let student2 = getStudentData();
        student2.addGrade("Computer Science", "A");
    
        process.stdout.write(student2.toString());
        process.stdout.write(student2.getGrades());
    }
    

    Essa função é um agente de teste que solicita ao usuário a inserção de informações sobre dois alunos. A função adiciona notas para cada aluno e exibe os resultados.

  7. Adicione a seguinte instrução ao final do arquivo:

    test();
    

    Essa instrução executa o agente de teste.

Testar o aplicativo studentgrades

Agora você executará o aplicativo e verificará se a classe Student cria objetos de aluno e pode atribuir notas corretamente. Você usará o agente de teste para solicitar ao usuário os detalhes de dois alunos. Os detalhes dos alunos e as notas dos cursos atribuídas pelo agente de teste serão exibidos.

O aplicativo não armazena informações de alunos no banco de dados do Cosmos DB. Você verá como fazer isso no próximo exercício.

  1. Na janela Terminal, inicie o aplicativo studentgrades usando o Node:

    node studentgrades.js
    
  2. Nos avisos, insira os valores mostrados na seguinte tabela:

    Aviso Valor
    Insira a ID do documento do aluno: S001
    Insira o número do aluno: 001
    Insira o primeiro nome do aluno: EEE
    Insira o sobrenome do aluno: FFF

    As mensagens a seguir deverão ser exibidas, geradas pelas instruções process.stdout.write(student1.toString()); e process.stdout.write(student1.getGrades()); na função test.

    001: EEE, FFF
    Computer Science:A
    Applied Mathematics:C
    
  3. No próximo conjunto de avisos, insira os seguintes valores:

    Aviso Valor
    Insira a ID do documento do aluno: S002
    Insira o número do aluno: 002
    Insira o primeiro nome do aluno: GGG
    Insira o sobrenome do aluno: HHH

    As seguintes mensagens deverão ser exibidas:

    002: GGG, HHH
    Computer Science:A
    

    Esses são os detalhes do segundo aluno e a nota do único curso que o aluno fez.

Você acabou de ver como usar o Visual Studio Code para criar, editar e executar um aplicativo Node.js.