2013-05-25 22 views
12

Obecnie używam Node.js do obsługi backendu i extjs lub szkieletu dla klienta i jestem teraz całkowicie zdezorientowany w strukturze folderów.Struktura folderów dla aplikacji sieci Web zarówno po stronie serwera, jak i grubej klienta

Korzystanie express moją strukturę folderów jest następująca

appname 
    |--controllers 
    |--models 
    | |--appmodel.js 
    |--public 
    | |--css 
    | |--js // any client-side javascripts 
    |--routes 
    | |--router.js 
    |--views 
    | |--appview.ejs 
    |--app.js 

gdzie app.js jest punktem wejścia i używa router.js obsługiwać trasy i świadczenia widokami. Działa to dobrze, jeśli jest to tylko programowanie po stronie serwera. Teraz, jeśli chcę używać ExtJS lub Backbone dla klienta, w jaki sposób powinienem uporządkować swój kod? Czy powinienem dodać go do folderu public lub views?

appname 
    |--controllers 
    | |--extbasedcontroller.js // correct location? 
    |--models 
    | |--appmodel.js 
    | |--extbasedmodels.js // correct location? 
    |--public 
    | |--css 
    | |--js 
    | | |--extjs // extjs files 
    |--routes 
    | |--router.js 
    |--views 
    | |--appview.ejs 
    | |--extbasedview.ejs // correct location? 
    |--app.js 

Jeśli tak, to gdzie powinienem umieścić model dla moich plików extjs? Jeśli mogę umieścić go w folderze models czuje jakbym mieszanie się klienta i kod serwera w jednym folderze i będzie mylące ...

Odpowiedz

9

na Twoim miejscu, chciałbym zrobić w ten sposób:

appname 
    |--ServerCode 
    | |--controllers 
    | |--models 
    | | |--appmodel.js 
    | |--routes 
    | | |--router.js 
    | |--views 
    | | |--appview.ejs 
    | |--app.js 
    |--public 
    | |--css 
    | |--js // any client-side javascripts 
    | |--models 
    | |--controllers 
    | |--... 

głównym pomysłem jest umieszczenie folderu publicznego poza t on zakres twojego serwera javascript plików.

Zobacz przykład tutaj: https://github.com/madhums/node-express-mongoose-demo/

+0

Skończyło się na użyciu tej struktury również – GantengX

+0

Więc używasz node.js? jeśli tak, są 2 modele mvc, jedna leży po stronie serwera, druga po stronie klienta? –

+0

Moje doświadczenie z Node.js polega na napisaniu architektury MVC po stronie serwera. I używać architektury MVVM po stronie klienta, z frameworkami takimi jak Angular.js – Julien

2

Wystarczy umieścić cały /webapp pod /public tak będzie koniec tworzenia, dla instancja, modele frontend wynikających /public/webapp/models

appname 
    |--models 
    | |--appmodel.js 
    |--public 
    | | |--webapp // extjs/backbone files 
    | | | |--models 
    | | | |--controllers 
    | | | |--css 
    | | | |--js 
    | | | |--img 
    | | | |--views 
    | | | | |--appview.ejs 
    | | | | |--extbasedview.ejs 
    |--routes 
    | |--router.js 
    |--app.js 
0

Herezje moja sugerowana struktura folderów:

appname 
    |--webapp 
    | |--img 
    | |--js 
    | | |--controllers 
    | | | |--controller.js 
    | | |--something.js 
    | |--css 
    | |--views 
    | | |-- appview.ejs 
    | |--index 
    | |--404 etc. 
    |--app.js 
    |--package.json 
    |--README 
    |-- etc. 

myślę, że bardzo czyste i łatwe do poruszania się, ponieważ cały serwer i node_modules rzeczy jest na zewnątrz i plików Potrzebuję aplikacji do folderu "webapp". Jeśli naprawdę potrzebujesz folderu o nazwie "public" (nie pamiętam, czy ekspresowe potrzeby jednego lub nie) Myślę, że możesz po prostu zmienić nazwę folderu "webapp" na "public", lub upuść folder "webapp" w "public". Polecam również używanie AngularJS zamiast .ejs, ale rób to, co chcesz robić. :)