Iara  Simões

Iara Simões

1656258000

Comparando NestJS e Express.js

Quando queremos construir um aplicativo em grande escala com uma estrutura, o Express.js geralmente é a primeira coisa que vem à mente. Express ganhou popularidade nos últimos anos entre os desenvolvedores. NestJS é outra estrutura popular que também pode fazer o trabalho muito bem.

Como Nest e Express são usados ​​como estruturas para aplicativos Node.js, tem havido um debate acalorado sobre qual opção é melhor para desenvolvedores que iniciam um novo projeto Node. Neste artigo, compararemos o NestJS e o Express.js para ajudar os desenvolvedores a tomar uma decisão informada.

O que é NestJS?

NestJS é uma estrutura Node.js para criar aplicativos do lado do servidor. É baseado em TypeScript e JavaScript.

Essa estrutura é inspirada no Angular, portanto, a maior parte do que você encontra no Angular também pode ser encontrado no Nest, incluindo provedores, middleware, componentes e serviços. É seguro dizer que o Nest pode ser facilmente aprendido por desenvolvedores Angular para qualquer tipo de projeto.

Nest faz uso da estrutura Express HTTP por padrão. No entanto, o Nest é independente de plataforma, o que significa que pode funcionar com qualquer estrutura Node HTTP. Por exemplo, ele pode ser configurado opcionalmente para usar Fastify , o que pode melhorar a estrutura do Node.

Uma das coisas legais sobre o NestJS é que qualquer coisa suportada no Express (ou seja, funções do Express) também é suportada no Nest.

Componentes principais do NestJS

Vamos examinar alguns dos principais componentes do NestJS.

Um módulo é uma classe que foi anotada com o @Module()decorador. O Nest usa os metadados fornecidos pelo @Module()decorador para organizar a estrutura do aplicativo.

Cada aplicativo NestJS contém pelo menos um módulo, conhecido como módulo raiz. O Nest usa o módulo raiz como ponto de partida para resolver a estrutura e os relacionamentos do aplicativo.

Os módulos dinâmicos são um recurso poderoso do sistema de módulos Nest. Esse recurso permite criar facilmente módulos personalizáveis ​​que podem registrar e configurar provedores dinamicamente.

Os provedores são muito importantes, pois o Nest depende muito deles para criar relacionamentos entre diferentes objetos. Um provedor pode ser injetado como uma dependência.

Classes como serviços, repositórios e auxiliares podem ser tratadas como provedores; basta adicionar o @Injectable()decorador do Nest para lidar com a resolução, tornando o gerenciamento de dependências extremamente simples.

Quando uma solicitação HTTP é recebida, o mecanismo de roteamento a encaminha para o controlador correto no NestJS. Os controladores lidam com solicitações recebidas e respondem ao lado do cliente do aplicativo.

Como instalar o NestJS

O Nest inclui uma excelente CLI que simplifica o scaffold de um aplicativo Nest.
No seu terminal ou prompt de comando, digite o seguinte:

npm i -g @nestjs/cli

Vamos usar o cdcomando para mudar para o diretório onde queremos construir nosso aplicativo. Execute os seguintes comandos:

nest new nest-blog-api
cd nest-blog-api
npm run start:dev

Vá para http://localhost:3000 em qualquer navegador. Você deve ver uma mensagem “Hello World”.

Características do NestJS

Vamos explorar alguns dos recursos notáveis ​​que diferenciam o NestJS.

Trabalhar com Node e Express é ótimo para criar um aplicativo pequeno e leve, onde o código é agradável e fácil de ler. No entanto, à medida que as coisas começam a ficar complexas e você adiciona mais recursos ao seu aplicativo, seu código começará a ficar um pouco mais confuso e difícil de gerenciar.

É aí que entra o NestJS. O Nest pode organizar seu aplicativo em módulos independentes, cada um com sua própria responsabilidade. Um módulo pode conter controladores e serviços relacionados e mantê-los bastante isolados do restante de seu aplicativo.

O Nest também oferece suporte à injeção de dependência . Usar injeção de dependência significa que você não precisa ter uma dependência rígida de coisas como componentes, serviços e middleware em seu código.

Os filtros de exceção são outro recurso interessante do Nest. Todos os aplicativos encontram exceções de tempos em tempos. Como você lida com exceções é realmente importante e, convenientemente, o Nest organiza tudo isso para você.

Nest inclui uma camada de exceções que é responsável por tratar todas as exceções não tratadas em um aplicativo. Quando uma exceção não é tratada pelo código do seu aplicativo, ela é capturada por essa camada, que envia automaticamente uma resposta apropriada e amigável ao usuário.

Você também obtém suporte fácil ao MongoDB com o Nest. Muitos aplicativos da Web criados com o Node usam a pilha MEAN, que consiste em MongoDB, Express, Angular e Node . Uma das bibliotecas mais populares para acessar o banco de dados Mongo é a Mongoose.

Você pode se conectar facilmente ao banco de dados MongoDB e usá-lo para criar aplicativos escaláveis ​​usando o pacote NestJS Mongoose .

Por fim, como já mencionamos, o NestJS usa o framework Express por padrão como pipeline de processamento de solicitações. Isso significa que, se você já estiver familiarizado com o processamento expresso, poderá adaptar seu middleware expresso para uso no Nest.

O que é Express.js?

Express é uma estrutura de aplicativo da Web Node.js que fornece uma ampla variedade de funcionalidades para a construção de aplicativos da Web e móveis. É uma camada construída em cima do Node que auxilia no gerenciamento de servidores e rotas.

Você pode usar o Express with Node para criar aplicativos Web de página única, várias páginas ou híbridos. Ele suporta o padrão de arquitetura MVC para projetar aplicativos da Web : Modelo, Visualização e Controlador.

Como instalar o Express.js

Para usar o Express em nosso projeto, primeiro devemos instalá-lo:

npm install express

Então queremos importar o Express dentro do nosso projeto:

import express from 'express';

Em seguida, precisamos inicializar nosso aplicativo, fornecer uma porta para ouvir e responder a uma solicitação nesse caminho:

const app = express();

app.get('/', (req, res) => {
  res.send('Hello World!');
});

app.listen(3000, () =>
  console.log('Example app listening on port 3000!'),
);

Recursos do Express.js

Vamos examinar alguns dos recursos do Express.

Middleware é um componente de programa que tem acesso a um banco de dados, solicitações de clientes e outros middlewares. Ele é o principal responsável pela organização sistemática de várias funções do Express.js.

Quando se trata de roteamento, o Express inclui um mecanismo de roteamento sofisticado que usa URLs para preservar o estado da página da web.

Por fim, o Express inclui mecanismos de modelo que permitem aos desenvolvedores criar conteúdo dinâmico para páginas da Web criando modelos HTML no lado do servidor.

NestJS x Express.js

Nesta seção, compararemos diretamente vários aspectos do Nest e do Express, incluindo exemplos de casos de uso para cada um.

NestJS x Express.js: opinativo e não opinativo

Nest é um framework com opiniões fortes. Ele adere ao paradigma de design de “convenção sobre configuração”, que permite que os desenvolvedores usem ferramentas e códigos padrão de uma maneira específica, reduzindo assim a necessidade de configuração explícita.

Além disso, o NestJS é baseado em Angular, portanto, o TypeScript é sua principal linguagem de programação , embora você também possa usar JavaScript. O uso do TypeScript garante que o aplicativo seja confiável e livre de bugs.

Express.js é um framework sem opiniões fortes — em outras palavras, sem opinião. Isso significa que ele não possui um conjunto de regras pré-definidas a serem seguidas. Os desenvolvedores costumam usar essa oportunidade para experimentar diferentes cenários e escrever código conforme necessário.

NestJS x Express.js: popularidade

Quando se trata de qual framework é o mais popular, o Express.js leva o título para casa. Com mais de 57.000 estrelas no Github , o Express é o framework mais popular. Ele se autodenomina uma estrutura rápida, sem opinião e minimalista.

Nest.js vem logo atrás. Ele tem mais de 47.000 estrelas no Github , ocupando o segundo lugar entre os principais frameworks Node.js por estrelas do Github .

NestJS x Express.js: desempenho

O Express pode executar várias operações independentemente umas das outras usando programação assíncrona. O Nest emprega a estrutura Express por padrão.

No entanto, o Nest também fornece uma maneira alternativa de alterar a estrutura subjacente de Express para Fastify para melhorar significativamente o desempenho.

NestJS x Express.js: arquitetura

A Nest oferece uma arquitetura de aplicativo pronta para uso usando controladores, provedores e módulos. Isso permite que desenvolvedores e equipes criem aplicativos simples de testar e manter.

O Express não requer uma estrutura específica , o que pode fornecer flexibilidade para equipes de desenvolvimento pequenas ou de uma pessoa. No entanto, isso pode se tornar um problema à medida que o tamanho da equipe ou a complexidade do aplicativo aumentam, especialmente com desenvolvedores trabalhando em diferentes aspectos do aplicativo.

NestJS x Express.js: teste de unidade

A Nest CLI vem com um ambiente de teste padrão baseado em Jest . Quando um serviço, interceptor ou controlador é criado, a CLI cria um arquivo de especificação. Esse arquivo inclui código de teste gerado automaticamente, eliminando a necessidade de os desenvolvedores escreverem código adicional para teste de unidade.

No Express, o teste de unidade exige a construção de códigos distintos, o que leva tempo e pode diminuir a produtividade do aplicativo.

NestJS x Express.js: casos de uso

Vamos dar uma olhada em alguns casos de uso para Nest vs. Express.

Ambos são escolhas adequadas para criar aplicativos de página única (SPAs), uma estratégia moderna de desenvolvimento de aplicativos na qual o aplicativo inteiro é roteado por meio de uma única página de índice.

O módulo serve-static no NestJS permite criar SPAs o mais rápido possível. O Express.js também é uma ótima estrutura para criar uma API que conecta esses SPAs e fornece dados regularmente.

Alguns outros exemplos do que construir com NestJS incluem aplicativos da Web de nível empresarial e aplicativos de comércio eletrônico.

Os aplicativos NestJS são bem dimensionados, tornando-os perfeitos para aplicativos grandes de nível empresarial. Não é surpresa que empresas líderes como Adidas, Roche, Trilon e outras usem Nest .

Também podemos construir facilmente sites de comércio eletrônico combinando NestJS com uma estrutura de front-end como React, Angular ou Vue.

Outros exemplos do que você pode criar com o Express.js incluem aplicativos fintech e aplicativos de streaming.

Um software de computador ou outra tecnologia usada para apoiar ou facilitar serviços bancários e financeiros é chamado de fintech. Cada vez mais instituições financeiras estão criando aplicativos fintech, e o Express é a estrutura de escolha para criar aplicativos financeiros altamente escaláveis.

Os serviços de streaming em tempo real são complexos, com vários níveis de fluxos de dados. Para criar um aplicativo desse tipo, você precisará de uma estrutura robusta, como Express.js, que possa lidar com fluxos de dados assíncronos com eficiência.

Conclusão

De acordo com alguns desenvolvedores, você está à frente do jogo se já estiver usando o NestJS. Essa estrutura oferece uma vantagem significativa desde o início e também ajuda a levar seu back-end do Node para o próximo nível , estruturando adequadamente seu aplicativo.

No entanto, o Express.js é uma das melhores e mais populares estruturas de desenvolvimento de back-end usando JavaScript e provavelmente permanecerá assim por algum tempo. Qual opção você prefere? Compartilhe seus pensamentos na seção de comentários! 

Fonte: https://blog.logrocket.com/nestjs-vs-express-js/

#nestjs #express #nodejs 

What is GEEK

Buddha Community

Comparando NestJS e Express.js

NBB: Ad-hoc CLJS Scripting on Node.js

Nbb

Not babashka. Node.js babashka!?

Ad-hoc CLJS scripting on Node.js.

Status

Experimental. Please report issues here.

Goals and features

Nbb's main goal is to make it easy to get started with ad hoc CLJS scripting on Node.js.

Additional goals and features are:

  • Fast startup without relying on a custom version of Node.js.
  • Small artifact (current size is around 1.2MB).
  • First class macros.
  • Support building small TUI apps using Reagent.
  • Complement babashka with libraries from the Node.js ecosystem.

Requirements

Nbb requires Node.js v12 or newer.

How does this tool work?

CLJS code is evaluated through SCI, the same interpreter that powers babashka. Because SCI works with advanced compilation, the bundle size, especially when combined with other dependencies, is smaller than what you get with self-hosted CLJS. That makes startup faster. The trade-off is that execution is less performant and that only a subset of CLJS is available (e.g. no deftype, yet).

Usage

Install nbb from NPM:

$ npm install nbb -g

Omit -g for a local install.

Try out an expression:

$ nbb -e '(+ 1 2 3)'
6

And then install some other NPM libraries to use in the script. E.g.:

$ npm install csv-parse shelljs zx

Create a script which uses the NPM libraries:

(ns script
  (:require ["csv-parse/lib/sync$default" :as csv-parse]
            ["fs" :as fs]
            ["path" :as path]
            ["shelljs$default" :as sh]
            ["term-size$default" :as term-size]
            ["zx$default" :as zx]
            ["zx$fs" :as zxfs]
            [nbb.core :refer [*file*]]))

(prn (path/resolve "."))

(prn (term-size))

(println (count (str (fs/readFileSync *file*))))

(prn (sh/ls "."))

(prn (csv-parse "foo,bar"))

(prn (zxfs/existsSync *file*))

(zx/$ #js ["ls"])

Call the script:

$ nbb script.cljs
"/private/tmp/test-script"
#js {:columns 216, :rows 47}
510
#js ["node_modules" "package-lock.json" "package.json" "script.cljs"]
#js [#js ["foo" "bar"]]
true
$ ls
node_modules
package-lock.json
package.json
script.cljs

Macros

Nbb has first class support for macros: you can define them right inside your .cljs file, like you are used to from JVM Clojure. Consider the plet macro to make working with promises more palatable:

(defmacro plet
  [bindings & body]
  (let [binding-pairs (reverse (partition 2 bindings))
        body (cons 'do body)]
    (reduce (fn [body [sym expr]]
              (let [expr (list '.resolve 'js/Promise expr)]
                (list '.then expr (list 'clojure.core/fn (vector sym)
                                        body))))
            body
            binding-pairs)))

Using this macro we can look async code more like sync code. Consider this puppeteer example:

(-> (.launch puppeteer)
      (.then (fn [browser]
               (-> (.newPage browser)
                   (.then (fn [page]
                            (-> (.goto page "https://clojure.org")
                                (.then #(.screenshot page #js{:path "screenshot.png"}))
                                (.catch #(js/console.log %))
                                (.then #(.close browser)))))))))

Using plet this becomes:

(plet [browser (.launch puppeteer)
       page (.newPage browser)
       _ (.goto page "https://clojure.org")
       _ (-> (.screenshot page #js{:path "screenshot.png"})
             (.catch #(js/console.log %)))]
      (.close browser))

See the puppeteer example for the full code.

Since v0.0.36, nbb includes promesa which is a library to deal with promises. The above plet macro is similar to promesa.core/let.

Startup time

$ time nbb -e '(+ 1 2 3)'
6
nbb -e '(+ 1 2 3)'   0.17s  user 0.02s system 109% cpu 0.168 total

The baseline startup time for a script is about 170ms seconds on my laptop. When invoked via npx this adds another 300ms or so, so for faster startup, either use a globally installed nbb or use $(npm bin)/nbb script.cljs to bypass npx.

Dependencies

NPM dependencies

Nbb does not depend on any NPM dependencies. All NPM libraries loaded by a script are resolved relative to that script. When using the Reagent module, React is resolved in the same way as any other NPM library.

Classpath

To load .cljs files from local paths or dependencies, you can use the --classpath argument. The current dir is added to the classpath automatically. So if there is a file foo/bar.cljs relative to your current dir, then you can load it via (:require [foo.bar :as fb]). Note that nbb uses the same naming conventions for namespaces and directories as other Clojure tools: foo-bar in the namespace name becomes foo_bar in the directory name.

To load dependencies from the Clojure ecosystem, you can use the Clojure CLI or babashka to download them and produce a classpath:

$ classpath="$(clojure -A:nbb -Spath -Sdeps '{:aliases {:nbb {:replace-deps {com.github.seancorfield/honeysql {:git/tag "v2.0.0-rc5" :git/sha "01c3a55"}}}}}')"

and then feed it to the --classpath argument:

$ nbb --classpath "$classpath" -e "(require '[honey.sql :as sql]) (sql/format {:select :foo :from :bar :where [:= :baz 2]})"
["SELECT foo FROM bar WHERE baz = ?" 2]

Currently nbb only reads from directories, not jar files, so you are encouraged to use git libs. Support for .jar files will be added later.

Current file

The name of the file that is currently being executed is available via nbb.core/*file* or on the metadata of vars:

(ns foo
  (:require [nbb.core :refer [*file*]]))

(prn *file*) ;; "/private/tmp/foo.cljs"

(defn f [])
(prn (:file (meta #'f))) ;; "/private/tmp/foo.cljs"

Reagent

Nbb includes reagent.core which will be lazily loaded when required. You can use this together with ink to create a TUI application:

$ npm install ink

ink-demo.cljs:

(ns ink-demo
  (:require ["ink" :refer [render Text]]
            [reagent.core :as r]))

(defonce state (r/atom 0))

(doseq [n (range 1 11)]
  (js/setTimeout #(swap! state inc) (* n 500)))

(defn hello []
  [:> Text {:color "green"} "Hello, world! " @state])

(render (r/as-element [hello]))

Promesa

Working with callbacks and promises can become tedious. Since nbb v0.0.36 the promesa.core namespace is included with the let and do! macros. An example:

(ns prom
  (:require [promesa.core :as p]))

(defn sleep [ms]
  (js/Promise.
   (fn [resolve _]
     (js/setTimeout resolve ms))))

(defn do-stuff
  []
  (p/do!
   (println "Doing stuff which takes a while")
   (sleep 1000)
   1))

(p/let [a (do-stuff)
        b (inc a)
        c (do-stuff)
        d (+ b c)]
  (prn d))
$ nbb prom.cljs
Doing stuff which takes a while
Doing stuff which takes a while
3

Also see API docs.

Js-interop

Since nbb v0.0.75 applied-science/js-interop is available:

(ns example
  (:require [applied-science.js-interop :as j]))

(def o (j/lit {:a 1 :b 2 :c {:d 1}}))

(prn (j/select-keys o [:a :b])) ;; #js {:a 1, :b 2}
(prn (j/get-in o [:c :d])) ;; 1

Most of this library is supported in nbb, except the following:

  • destructuring using :syms
  • property access using .-x notation. In nbb, you must use keywords.

See the example of what is currently supported.

Examples

See the examples directory for small examples.

Also check out these projects built with nbb:

API

See API documentation.

Migrating to shadow-cljs

See this gist on how to convert an nbb script or project to shadow-cljs.

Build

Prequisites:

  • babashka >= 0.4.0
  • Clojure CLI >= 1.10.3.933
  • Node.js 16.5.0 (lower version may work, but this is the one I used to build)

To build:

  • Clone and cd into this repo
  • bb release

Run bb tasks for more project-related tasks.

Download Details:
Author: borkdude
Download Link: Download The Source Code
Official Website: https://github.com/borkdude/nbb 
License: EPL-1.0

#node #javascript

Fleta  Dickens

Fleta Dickens

1626694620

Serve CSS JS and Images Files in Express JS | Use Middleware in Express | express.static

#stubborndevelopers
In this video we will learn below points:

  1. how we can use css, js and images in website created using express js in Node.js?
  2. how we can use inbuilt middleware app.use(express.static()) of express JS?

************ Node.JS Tutorial in English 2021 Playlist ************
https://www.youtube.com/watch?v=gs0X92Yx70s&list=PLllIEssCHLKdNEVWsBQ5zcCxLu8Xpsl0E&index=2

************ React.JS Tutorial in Hindi 2021 Playlist ************
https://www.youtube.com/watch?v=F2A1qXcskP8&list=PLllIEssCHLKdRqOrDJdPIeW7nrwPPfa46

#node.js #express.stati #css #js #express js

Iara  Simões

Iara Simões

1656258000

Comparando NestJS e Express.js

Quando queremos construir um aplicativo em grande escala com uma estrutura, o Express.js geralmente é a primeira coisa que vem à mente. Express ganhou popularidade nos últimos anos entre os desenvolvedores. NestJS é outra estrutura popular que também pode fazer o trabalho muito bem.

Como Nest e Express são usados ​​como estruturas para aplicativos Node.js, tem havido um debate acalorado sobre qual opção é melhor para desenvolvedores que iniciam um novo projeto Node. Neste artigo, compararemos o NestJS e o Express.js para ajudar os desenvolvedores a tomar uma decisão informada.

O que é NestJS?

NestJS é uma estrutura Node.js para criar aplicativos do lado do servidor. É baseado em TypeScript e JavaScript.

Essa estrutura é inspirada no Angular, portanto, a maior parte do que você encontra no Angular também pode ser encontrado no Nest, incluindo provedores, middleware, componentes e serviços. É seguro dizer que o Nest pode ser facilmente aprendido por desenvolvedores Angular para qualquer tipo de projeto.

Nest faz uso da estrutura Express HTTP por padrão. No entanto, o Nest é independente de plataforma, o que significa que pode funcionar com qualquer estrutura Node HTTP. Por exemplo, ele pode ser configurado opcionalmente para usar Fastify , o que pode melhorar a estrutura do Node.

Uma das coisas legais sobre o NestJS é que qualquer coisa suportada no Express (ou seja, funções do Express) também é suportada no Nest.

Componentes principais do NestJS

Vamos examinar alguns dos principais componentes do NestJS.

Um módulo é uma classe que foi anotada com o @Module()decorador. O Nest usa os metadados fornecidos pelo @Module()decorador para organizar a estrutura do aplicativo.

Cada aplicativo NestJS contém pelo menos um módulo, conhecido como módulo raiz. O Nest usa o módulo raiz como ponto de partida para resolver a estrutura e os relacionamentos do aplicativo.

Os módulos dinâmicos são um recurso poderoso do sistema de módulos Nest. Esse recurso permite criar facilmente módulos personalizáveis ​​que podem registrar e configurar provedores dinamicamente.

Os provedores são muito importantes, pois o Nest depende muito deles para criar relacionamentos entre diferentes objetos. Um provedor pode ser injetado como uma dependência.

Classes como serviços, repositórios e auxiliares podem ser tratadas como provedores; basta adicionar o @Injectable()decorador do Nest para lidar com a resolução, tornando o gerenciamento de dependências extremamente simples.

Quando uma solicitação HTTP é recebida, o mecanismo de roteamento a encaminha para o controlador correto no NestJS. Os controladores lidam com solicitações recebidas e respondem ao lado do cliente do aplicativo.

Como instalar o NestJS

O Nest inclui uma excelente CLI que simplifica o scaffold de um aplicativo Nest.
No seu terminal ou prompt de comando, digite o seguinte:

npm i -g @nestjs/cli

Vamos usar o cdcomando para mudar para o diretório onde queremos construir nosso aplicativo. Execute os seguintes comandos:

nest new nest-blog-api
cd nest-blog-api
npm run start:dev

Vá para http://localhost:3000 em qualquer navegador. Você deve ver uma mensagem “Hello World”.

Características do NestJS

Vamos explorar alguns dos recursos notáveis ​​que diferenciam o NestJS.

Trabalhar com Node e Express é ótimo para criar um aplicativo pequeno e leve, onde o código é agradável e fácil de ler. No entanto, à medida que as coisas começam a ficar complexas e você adiciona mais recursos ao seu aplicativo, seu código começará a ficar um pouco mais confuso e difícil de gerenciar.

É aí que entra o NestJS. O Nest pode organizar seu aplicativo em módulos independentes, cada um com sua própria responsabilidade. Um módulo pode conter controladores e serviços relacionados e mantê-los bastante isolados do restante de seu aplicativo.

O Nest também oferece suporte à injeção de dependência . Usar injeção de dependência significa que você não precisa ter uma dependência rígida de coisas como componentes, serviços e middleware em seu código.

Os filtros de exceção são outro recurso interessante do Nest. Todos os aplicativos encontram exceções de tempos em tempos. Como você lida com exceções é realmente importante e, convenientemente, o Nest organiza tudo isso para você.

Nest inclui uma camada de exceções que é responsável por tratar todas as exceções não tratadas em um aplicativo. Quando uma exceção não é tratada pelo código do seu aplicativo, ela é capturada por essa camada, que envia automaticamente uma resposta apropriada e amigável ao usuário.

Você também obtém suporte fácil ao MongoDB com o Nest. Muitos aplicativos da Web criados com o Node usam a pilha MEAN, que consiste em MongoDB, Express, Angular e Node . Uma das bibliotecas mais populares para acessar o banco de dados Mongo é a Mongoose.

Você pode se conectar facilmente ao banco de dados MongoDB e usá-lo para criar aplicativos escaláveis ​​usando o pacote NestJS Mongoose .

Por fim, como já mencionamos, o NestJS usa o framework Express por padrão como pipeline de processamento de solicitações. Isso significa que, se você já estiver familiarizado com o processamento expresso, poderá adaptar seu middleware expresso para uso no Nest.

O que é Express.js?

Express é uma estrutura de aplicativo da Web Node.js que fornece uma ampla variedade de funcionalidades para a construção de aplicativos da Web e móveis. É uma camada construída em cima do Node que auxilia no gerenciamento de servidores e rotas.

Você pode usar o Express with Node para criar aplicativos Web de página única, várias páginas ou híbridos. Ele suporta o padrão de arquitetura MVC para projetar aplicativos da Web : Modelo, Visualização e Controlador.

Como instalar o Express.js

Para usar o Express em nosso projeto, primeiro devemos instalá-lo:

npm install express

Então queremos importar o Express dentro do nosso projeto:

import express from 'express';

Em seguida, precisamos inicializar nosso aplicativo, fornecer uma porta para ouvir e responder a uma solicitação nesse caminho:

const app = express();

app.get('/', (req, res) => {
  res.send('Hello World!');
});

app.listen(3000, () =>
  console.log('Example app listening on port 3000!'),
);

Recursos do Express.js

Vamos examinar alguns dos recursos do Express.

Middleware é um componente de programa que tem acesso a um banco de dados, solicitações de clientes e outros middlewares. Ele é o principal responsável pela organização sistemática de várias funções do Express.js.

Quando se trata de roteamento, o Express inclui um mecanismo de roteamento sofisticado que usa URLs para preservar o estado da página da web.

Por fim, o Express inclui mecanismos de modelo que permitem aos desenvolvedores criar conteúdo dinâmico para páginas da Web criando modelos HTML no lado do servidor.

NestJS x Express.js

Nesta seção, compararemos diretamente vários aspectos do Nest e do Express, incluindo exemplos de casos de uso para cada um.

NestJS x Express.js: opinativo e não opinativo

Nest é um framework com opiniões fortes. Ele adere ao paradigma de design de “convenção sobre configuração”, que permite que os desenvolvedores usem ferramentas e códigos padrão de uma maneira específica, reduzindo assim a necessidade de configuração explícita.

Além disso, o NestJS é baseado em Angular, portanto, o TypeScript é sua principal linguagem de programação , embora você também possa usar JavaScript. O uso do TypeScript garante que o aplicativo seja confiável e livre de bugs.

Express.js é um framework sem opiniões fortes — em outras palavras, sem opinião. Isso significa que ele não possui um conjunto de regras pré-definidas a serem seguidas. Os desenvolvedores costumam usar essa oportunidade para experimentar diferentes cenários e escrever código conforme necessário.

NestJS x Express.js: popularidade

Quando se trata de qual framework é o mais popular, o Express.js leva o título para casa. Com mais de 57.000 estrelas no Github , o Express é o framework mais popular. Ele se autodenomina uma estrutura rápida, sem opinião e minimalista.

Nest.js vem logo atrás. Ele tem mais de 47.000 estrelas no Github , ocupando o segundo lugar entre os principais frameworks Node.js por estrelas do Github .

NestJS x Express.js: desempenho

O Express pode executar várias operações independentemente umas das outras usando programação assíncrona. O Nest emprega a estrutura Express por padrão.

No entanto, o Nest também fornece uma maneira alternativa de alterar a estrutura subjacente de Express para Fastify para melhorar significativamente o desempenho.

NestJS x Express.js: arquitetura

A Nest oferece uma arquitetura de aplicativo pronta para uso usando controladores, provedores e módulos. Isso permite que desenvolvedores e equipes criem aplicativos simples de testar e manter.

O Express não requer uma estrutura específica , o que pode fornecer flexibilidade para equipes de desenvolvimento pequenas ou de uma pessoa. No entanto, isso pode se tornar um problema à medida que o tamanho da equipe ou a complexidade do aplicativo aumentam, especialmente com desenvolvedores trabalhando em diferentes aspectos do aplicativo.

NestJS x Express.js: teste de unidade

A Nest CLI vem com um ambiente de teste padrão baseado em Jest . Quando um serviço, interceptor ou controlador é criado, a CLI cria um arquivo de especificação. Esse arquivo inclui código de teste gerado automaticamente, eliminando a necessidade de os desenvolvedores escreverem código adicional para teste de unidade.

No Express, o teste de unidade exige a construção de códigos distintos, o que leva tempo e pode diminuir a produtividade do aplicativo.

NestJS x Express.js: casos de uso

Vamos dar uma olhada em alguns casos de uso para Nest vs. Express.

Ambos são escolhas adequadas para criar aplicativos de página única (SPAs), uma estratégia moderna de desenvolvimento de aplicativos na qual o aplicativo inteiro é roteado por meio de uma única página de índice.

O módulo serve-static no NestJS permite criar SPAs o mais rápido possível. O Express.js também é uma ótima estrutura para criar uma API que conecta esses SPAs e fornece dados regularmente.

Alguns outros exemplos do que construir com NestJS incluem aplicativos da Web de nível empresarial e aplicativos de comércio eletrônico.

Os aplicativos NestJS são bem dimensionados, tornando-os perfeitos para aplicativos grandes de nível empresarial. Não é surpresa que empresas líderes como Adidas, Roche, Trilon e outras usem Nest .

Também podemos construir facilmente sites de comércio eletrônico combinando NestJS com uma estrutura de front-end como React, Angular ou Vue.

Outros exemplos do que você pode criar com o Express.js incluem aplicativos fintech e aplicativos de streaming.

Um software de computador ou outra tecnologia usada para apoiar ou facilitar serviços bancários e financeiros é chamado de fintech. Cada vez mais instituições financeiras estão criando aplicativos fintech, e o Express é a estrutura de escolha para criar aplicativos financeiros altamente escaláveis.

Os serviços de streaming em tempo real são complexos, com vários níveis de fluxos de dados. Para criar um aplicativo desse tipo, você precisará de uma estrutura robusta, como Express.js, que possa lidar com fluxos de dados assíncronos com eficiência.

Conclusão

De acordo com alguns desenvolvedores, você está à frente do jogo se já estiver usando o NestJS. Essa estrutura oferece uma vantagem significativa desde o início e também ajuda a levar seu back-end do Node para o próximo nível , estruturando adequadamente seu aplicativo.

No entanto, o Express.js é uma das melhores e mais populares estruturas de desenvolvimento de back-end usando JavaScript e provavelmente permanecerá assim por algum tempo. Qual opção você prefere? Compartilhe seus pensamentos na seção de comentários! 

Fonte: https://blog.logrocket.com/nestjs-vs-express-js/

#nestjs #express #nodejs 

Deploy a Node.js App to Heroku's Free Tier + Keeping the App Alive | Node.js + Express.js

In this video, we’ll be going over how to quickly deploy your Node.js app to Heroku for FREE and how we can keep this app alive/online despite Heroku’s free tier’s limitations.

Building the Mars Rover Pictures of the Day App: https://www.youtube.com/watch?v=s5sygFQ_vLE

Kaffeine: https://kaffeine.herokuapp.com/
Other alternatives to keep Heroku apps alive:

Sections:
0:00 - Intro
0:22 - Discussing how to keep Heroku’s free apps alive
1:20 - Linking your Heroku app to your GitHub repo
2:47 - Setting up the server and GET endpoint to ping
7:09 - Setting up the config to start the app
8:46 - Verifying the deployment
9:36 - Keeping the app alive/online
10:23 - Conclusion

Found this video helpful? Feel free to support this channel here: https://ko-fi.com/jacksonyuan

#express.js #express #node.js #node #heroku's

Hans  Marvin

Hans Marvin

1626747060

Learn Express JS by building a Project - BodyParser

In this video series, we are going to learn Express JS by building a project. Express is a minimal and flexible Node.js web application framework that provides a robust set of features for web and mobile applications.

Along the way we are going to learn what is Express and how it works. Along with Express, we are also going to learn about other dependencies that are required for the backend. Finally, we will create an application that uses CRUD(create, read, update and delete) functionality.

In this video, we are going to use BodyParser dependency in order to get the data from the form.


Get the entire code of this series here : https://github.com/Bishwahangdewan/Learn-Express-by-building-a-Project


#express js #express #nodejs #js