2013-05-25 9 views
12

Attualmente sto usando Node.js per il back-end e sia extjs che backbone per il client e ora sono completamente confuso sulla struttura delle cartelle.Struttura delle cartelle per entrambe le applicazioni Web lato server e thick client

Utilizzando express mia struttura di cartelle è il seguente

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

dove app.js è il punto di entrata e utilizza router.js per gestire il routing e il rendering dei punti di vista. Funziona bene se è solo lo sviluppo lato server. Ora se voglio usare ExtJS o Backbone per il client, come dovrei organizzare il mio codice? Devo aggiungerlo alla cartella public o 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 

Se questo è il caso, dove devo inserire il modello per i miei file extjs? Se ho messo nella cartella models ci si sente come sto mescolando client e il codice del server in una cartella e sta andando ad essere fonte di confusione ...

risposta

9

al tuo posto, lo farei in questo modo:

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

L'idea principale è quello di mettere cartella pubblica al di fuori di t ha portata del tuo server javascript file.

vedere un esempio qui: https://github.com/madhums/node-express-mongoose-demo/

+0

Ho finito per utilizzare anche questa struttura – GantengX

+0

Quindi stai usando node.js? se sì, ci sono 2 modelli di mvc, uno sul lato server, un altro sul lato client? –

+0

La mia esperienza con Node.js è quella di scrivere un'architettura MVC sul lato server. E per utilizzare un'architettura MVVM sul lato client, con framework come Angular.js – Julien

2

Basta mettere l'intera /webapp sotto /public così sarete terminare la creazione, per esempio, i modelli di frontend sotto /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

Heres la mia struttura di cartelle suggerito:

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

Penso che sia molto ordinata e facile da navigare in, perché tutto il server e node_modules roba è fuori e il file Ho bisogno che l'applicazione sia nella cartella "webapp". Se hai davvero bisogno di una cartella chiamata "public" (non ricordo se espressamente ne abbia bisogno o meno), penso che puoi semplicemente rinominare la cartella "webapp" in "public", o rilasciare la cartella "webapp" all'interno di "public". Vorrei anche raccomandare l'uso di AngularJS invece di .ejs, ma fare ciò che si vuole fare. :)

Problemi correlati