Pessoalmente, sou um grande fã da Telerik NativeScript. É uma estrutura de desenvolvimento de plataforma cruzada para criar nativo Aplicativos para Android e iOS usando um único conjunto de códigos, sendo esse conjunto de códigos o JavaScript. Tive de enfatizar a parte nativa porque essa é uma das únicas estruturas entre plataformas que não usa uma visualização da Web para exibir conteúdo. Isso, por sua vez, cria um aplicativo que tem um desempenho incrível.

Até agora, não havia uma boa solução para armazenar dados em um aplicativo NativeScript. Isso é até agora!

Com a ajuda da Telerik e da equipe do NativeScript, consegui criar um Plug-in do Couchbase Lite para NativeScript que permite que você aproveite o poder do NoSQL em seu aplicativo móvel. Quando emparelhado com o Couchbase Sync Gateway, os dados podem ser sincronizados entre dispositivos e plataformas.

Veremos o que é necessário para começar a trabalhar com Couchbase Mobile em seu aplicativo NativeScript.

Os requisitos

Há alguns requisitos para que isso seja possível.

  • NativeScript 1.7+
  • O Android SDK (se estiver criando aplicativos Android)
  • Xcode e um Mac (se estiver criando aplicativos iOS)
  • Gateway de sincronização do Couchbase (para sincronização)

Você não precisa criar para Android e iOS, mas isso certamente é conveniente.

Criação de um novo projeto NativeScript

Vamos criar um aplicativo simples de lista de nomes que sincroniza entre dispositivos. Para fazer isso, execute o seguinte em um prompt de comando (Windows) ou terminal (Mac e Linux):

Lembre-se de que, se você não estiver usando um Mac, não poderá adicionar e criar para a plataforma iOS. A partir de agora, o prompt de comando ou o terminal deve usar Projeto Couchbase como o diretório de trabalho.

Incluindo o SDK do Couchbase Lite

Com o projeto criado, é hora de incluir o plug-in do Couchbase Lite para uso. No Terminal ou no prompt de comando, execute o seguinte:

Isso incluirá o plug-in para quaisquer plataformas que tenham sido adicionadas ao projeto.

Desenvolvimento do aplicativo

Com o projeto criado, precisamos criar alguns arquivos e diretórios. Vá em frente e adicione o seguinte:

É nos arquivos acima que passaremos a maior parte do tempo, mas, antes de começarmos, abra o arquivo aplicativo/app.js e substitua a linha apropriada pela seguinte:

Isso informa ao aplicativo NativeScript que o lista será nossa primeira visualização.

Criação da lógica do aplicativo

Os arquivos de lógica do aplicativo são os arquivos JavaScript. Um arquivo conduzirá a lógica por trás de nossa exibição de lista e o outro conduzirá a lógica por trás de nosso formulário de criação de nome. Começando com a lógica da lista, abra o arquivo app/views/list/list.js e inclua o seguinte código:

Há muita coisa acontecendo no arquivo lógico acima, portanto, vamos detalhá-lo. A primeira coisa que estamos fazendo é incluir algumas bibliotecas JavaScript:

O plug-in que foi instalado deve ser importado primeiro. Todos os dados lidos do banco de dados serão armazenados em uma matriz observável. Isso serve para que possamos nos inscrever nas alterações de dados e associar os dados à interface do usuário. Por fim, o quadro é importado para que possamos navegar para outras páginas.

Para abrir um banco de dados NoSQL do Couchbase específico, executamos o seguinte comando:

O comando acima abrirá o banco de dados se ele existir ou criará e abrirá o banco de dados se ele não existir.

Se esta é a primeira vez que você trabalha com NoSQL, o trecho acima pode parecer muito estranho. Ele é a criação de uma visualização do MapReduce. Em vez de escrever uma instrução SQL como no SQLite, estamos criando exibições do MapReduce que podemos consultar para obter dados. A visualização acima retornará um par chave-valor de todos os documentos em que a chave é o ID do documento e o valor é o próprio documento. Essa visualização será chamada de pessoas.

Com a visualização instalada, ela precisa ser consultada. Isso é feito por meio da função atualizar função. Antes de chegar à função de atualização, observe a linha final da função pageLoaded function. Isso mostra que estaremos vinculando a função personList para nossa interface do usuário. Vamos dar uma olhada nisso atualizar função:

Toda vez que fizermos uma consulta, a lista será redefinida e preenchida novamente. A visualização só será consultada quando a página for carregada. Veremos o motivo mais adiante neste tutorial.

Com o app/views/list/list.js fora do caminho, podemos nos concentrar no arquivo de lógica por trás do formulário de criação. Abra o arquivo app/views/create/create.js e inclua o seguinte código:

Este arquivo é muito mais leve em comparação com o anterior. Basicamente, estamos capturando os elementos do formulário que ainda não foram criados. Quando chamamos o arquivo salvar ele pegará os valores nos campos do formulário e criará o documento no Couchbase. Não há esquemas SQL ou bobagens que o atrasem quando se trata de desenvolvimento. Um dos principais benefícios do uso do NoSQL.

A lógica está concluída, por enquanto, e podemos passar para a interface do usuário.

Projetando uma interface de usuário multiplataforma

O código da interface do usuário é curto e simples. Lembre-se de que nossa lista conterá apenas informações sobre os usuários que adicionarmos. Abra a seção app/views/list/list.xml e inclua o seguinte código:

Quando a página é carregada, ela chama a função pageLoaded função. A barra de ação tem um único botão para navegar até o criar página. Por fim, o modo de exibição de lista itera sobre os personList matriz observável que foi criada no arquivo lógico.

No que se refere ao formulário de criação, há também uma pequena quantidade de código XML a ser incluída. Abra o arquivo app/views/create/create.xml e inclua o seguinte código:

Novamente o pageLoaded é chamado no carregamento da página. A barra de ação tem um único botão para salvar os dados do Couchbase, e o formulário contém dados que são lidos por meio do arquivo lógico que criamos anteriormente.

Devemos ter um aplicativo totalmente funcional que usa o Couchbase para armazenar dados. No entanto, até o momento, esse aplicativo está apenas off-line. Os dados não estão sendo sincronizados.

Inclusão do Couchbase Sync Gateway para replicação de dados

Para sincronizar os dados do aplicativo entre o Couchbase Server e outros dispositivos, o Gateway de sincronização do Couchbase deve ser incluído junto com um arquivo de configuração especial. Para simplificar as coisas, não vamos nos aprofundar no arquivo de configuração do Sync Gateway. Algo como isto será suficiente:

O que importa para nós neste tutorial é o código que se comunica com o Sync Gateway por meio do nosso aplicativo. Agora, vamos revisitar o código app/views/list/list.js e incluir algum código no arquivo pageLoaded função. Abra o arquivo e inclua o seguinte:

No exemplo acima, estamos dizendo ao nosso aplicativo que faremos push e pull do mesmo Sync Gateway que está sendo executado localmente. As replicações ocorrerão continuamente em ambas as direções. Em seguida, finalmente iniciamos o processo.

Com os dados sendo carregados e baixados, precisamos de uma maneira de atualizar a interface do usuário quando necessário. Anteriormente, mencionei que estávamos consultando apenas uma vez quando a página era carregada. Isso ocorre porque, na verdade, usaremos um ouvinte para ouvir as alterações. Isso é mais eficiente do que consultar continuamente quantidades potencialmente enormes de dados. Dentro de seu app/views/list/list.js dentro do arquivo pageLoaded inclua o seguinte código:

O objetivo aqui é pegar uma alteração, ver se o documento já existe na lista, se não existir, adicioná-lo, caso contrário, alterá-lo. A função para descobrir onde um documento existe na lista pode ser vista abaixo:

Talvez não seja a maneira mais eficiente de atualizar uma exibição de lista, mas funciona para este exemplo.

Nesse ponto, se você executar o Sync Gateway e seu aplicativo, ele deverá sincronizar os dados.

Conclusão

Você acabou de ver como criar uma plataforma cruzada simples, nativoaplicativo para Android e iOS que sincroniza usando NativeScript e o plug-in Couchbase Lite. Mais informações sobre o plug-in podem ser vistas no site do projeto GitHub página. Mais informações sobre o Couchbase Mobile podem ser vistas na página Portal do desenvolvedor do Couchbase.

Autor

Postado por Nic Raboy, defensor dos desenvolvedores, Couchbase

Nic Raboy é um defensor das modernas tecnologias de desenvolvimento móvel e da Web. Ele tem experiência em Java, JavaScript, Golang e uma variedade de estruturas, como Angular, NativeScript e Apache Cordova. Nic escreve sobre suas experiências de desenvolvimento relacionadas a tornar o desenvolvimento móvel e da Web mais fácil de entender.

3 Comentários

  1. Uma pergunta: onde exatamente o banco de dados é armazenado? Quando instalo o aplicativo NativeScript e o executo, posso acessar o arquivo do banco de dados por meio do gerenciador de arquivos (caso eu queira fazer backups etc.)? Supondo que eu decida não usar um gateway de sincronização, é claro.

    1. O Android e o iOS armazenam todos os bancos de dados, independentemente do tipo, em uma parte protegida do dispositivo. A única maneira de acessá-los é fazer com que o dispositivo tenha acesso root ou jailbreak.

      1. Ahh, estou vendo. É bom saber disso - eu estava me perguntando onde o arquivo tinha ido parar misteriosamente! Obrigado pela informação :)

Deixar uma resposta