Szukaj…


Wprowadzenie

Na strukturę projektu nodejs wpływają osobiste preferencje, architektura projektu i stosowana strategia wprowadzania modułów, a także łuk oparty na zdarzeniach, który wykorzystuje mechanizm dynamicznej instancji modułu. Aby mieć strukturę MVC, konieczne jest oddzielenie kodu źródłowego po stronie serwera i klienta, ponieważ kod po stronie klienta zostanie prawdopodobnie zminimalizowany i wysłany do przeglądarki i ma charakter publiczny. A po stronie serwera lub zaplecza zapewni interfejs API do wykonywania operacji CRUD

Uwagi

Powyższy projekt wykorzystuje moduły browserify i vue.js jako widok podstawowy aplikacji i biblioteki minimalizacji. Dlatego struktura projektu może ulec drobnym zmianom w zależności od używanego frameworku mvc, np. Publiczny katalog kompilacji będzie musiał zawierać cały kod mvc. Możesz mieć zadanie, które zrobi to za Ciebie.

Prosta aplikacja nodejs z MVC i API

  • Pierwszą istotną różnicą są dynamicznie generowane katalogi, które będą używane do hostowania i katalogów źródłowych.
  • Katalogi źródłowe będą miały plik konfiguracyjny lub folder w zależności od ilości konfiguracji, jaką możesz mieć. Obejmuje to konfigurację środowiska i konfigurację logiki biznesowej, którą możesz umieścić w katalogu konfiguracji.
 |-- Config
        |-- config.json
        |-- appConfig
            |-- pets.config
            |-- payment.config
  • Teraz najważniejsze katalogi, w których rozróżniamy moduły po stronie serwera / zaplecza i modułów frontendu. Serwer 2 katalogi i webapp reprezentują backend i frontend odpowiednio których możemy wybrać, aby umieścić wewnątrz mianowicie katalogu źródłowego. src .

    Możesz wybrać inną nazwę serwera lub aplikacji internetowej w zależności od tego, co ma dla ciebie sens. Upewnij się, że nie chcesz, aby był zbyt długi lub skomplikowany, ponieważ znajduje się on w końcowej wewnętrznej strukturze projektu.

  • W katalogu serwera możesz mieć kontroler App.js / index.js, który będzie głównym plikiem nodejs i punktem początkowym. Serwer reż. może również mieć katalog dto, który przechowuje wszystkie obiekty przesyłania danych, które będą używane przez kontrolery API.

     |-- server
          |-- dto
              |-- pet.js
              |-- payment.js
          |-- controller
              |-- PetsController.js
              |-- PaymentController.js
          |-- App.js
    
  • Katalog aplikacji webowej można podzielić na dwie główne części public i mvc , na co znów ma wpływ strategia kompilacji, której chcesz użyć. Używamy przeglądarki, aby zbudować część MVC aplikacji internetowej i zminimalizować zawartość z katalogu mvc po prostu.

    | - webapp | - public | - mvc

  • Teraz katalog publiczny może zawierać wszystkie zasoby statyczne, obrazy, css (możesz również mieć pliki saas) i, co najważniejsze, pliki HTML.

|-- public 
    |-- build  // will contianed minified scripts(mvc)
    |-- images
        |-- mouse.jpg
        |-- cat.jpg
    |-- styles
        |-- style.css
    |-- views
        |-- petStore.html
        |-- paymentGateway.html
        |-- header.html
        |-- footer.html
    |-- index.html
  • Katalog MVC będzie zawierać logikę front-end w tym modeli, kontrolerów widzenia i innych Utils moduły mogą być potrzebne jako część UI. Również plik index.js lub shell.js, w zależności od tego, który pakiet Ci odpowiada, jest również częścią tego katalogu.

     |-- mvc
         |-- controllers
             |-- Dashborad.js
             |-- Help.js
             |-- Login.js
         |-- utils
         |-- index.js
    

Podsumowując, cała struktura projektu będzie wyglądać jak poniżej. Proste zadanie kompilacji, takie jak gulp Browserify , zminimalizuje skrypty mvc i opublikuje je w katalogu publicznym . Następnie możemy udostępnić ten katalog publiczny jako zasób statyczny za pośrednictwem interfejsu express.use (satic ('public')) .

    |-- node_modules
    |-- src
        |-- server
            |-- controller
            |-- App.js   // node app
        |-- webapp
            |-- public
                |-- styles
                |-- images
                |-- index.html
            |-- mvc
                |-- controller
                |-- shell.js  // mvc shell
    |-- config
    |-- Readme.md
    |-- .gitignore
    |-- package.json


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow