2016-11-22 4 views
0

Ich bin neu in Node.js und Express. Ich möchte eine grundlegende AngularJS-Anwendung erstellen, aber ich weiß nicht, wo ich anfangen soll. Hier wird die Dateiorganisation ich erreichen möchte:Create basic app - MEAN

- public 
----- app 
---------- components 
----------------- component0 
----------------------- c0controller.js 
----------------------- c0.html 
----------------------- c0Service.js 
----------------- component1 
----------------------- c1controller.js 
----------------------- c1.html 
----------------------- c1Service.js 
---------- assets [...] 
----- index.html 
----- app.js 
----- module.js 
- node_modules [...] 
- server.js 
- route.js 

Das erste, was ist es möglich, das zu tun?

Grundsätzlich ist die index.html Datei, wo ich die ui-view meiner eckigen Anwendung definiere.

Mein Hauptproblem ist, dass ich nicht herausfinden kann, wie mein Knoten Server in server.js einrichten ... Hier ist, was ich habe, aber um ehrlich zu sein verstehe ich nicht alle Linien ...

// set up ======================== 
var express = require('express'); 
var app  = express();        // create our app w/ express 
var mongoose = require('mongoose');      // mongoose for mongodb 
var morgan = require('morgan');    // log requests to the console (express4) 
var bodyParser = require('body-parser'); // pull information from HTML POST (express4) 
var methodOverride = require('method-override'); // simulate DELETE and PUT (express4) 
var routes = require('./routes.js'); 

// configuration ================= 

mongoose.connect('mongodb://localhost/test');  // connect to mongoDB database 

app.set('views', __dirname + '/public/app'); 
app.set('view engine', 'html'); 
app.use(express.static(__dirname + '/public'));     // set the static files location /public/img will be /img for users 
app.use(morgan('dev'));           // log every request to the console 
app.use(bodyParser.urlencoded({'extended':'true'}));   // parse application/x-www-form-urlencoded 
app.use(bodyParser.json());          // parse application/json 
app.use(bodyParser.json({ type: 'application/vnd.api+json' })); // parse application/vnd.api+json as json 
app.use(methodOverride()); 

app.get('/', routes.index); 
app.get('*', routes.index); 

// listen (start app with node server.js) ====================================== 
app.listen(8080); 
console.log("App listening on port 8080"); 

Und in routes.js die folgende Methode, die ich exportieren:

var exports = module.exports = {}; 

exports.index = function(req, res){ 
    res.render('index'); 
}; 

ich schon ejs Installateur, aber ich bin mir nicht sicher, was damit zu tun ... ich bin ein wenig verloren, so wäre jede Hilfe dankbar sein;)

+0

Haben Sie sich Samen angesehen? Like: https://github.com/meanie/express-seed – Alan

+0

Ich werde es morgen gehen danke;) –

Antwort

0

Nur eine kurze Erklärung jeder Zeile zu geben ....

Die folgenden sind Bibliotheken, die Sie in Ihrem Projekt verwenden erforderlich ...

// set up ======================== 
var express = require('express'); 
var app  = express();        // create our app w/ express 
var mongoose = require('mongoose');      // mongoose for mongodb 
var morgan = require('morgan');    // log requests to the console (express4) 
var bodyParser = require('body-parser'); // pull information from HTML POST (express4) 
var methodOverride = require('method-override'); // simulate DELETE and PUT (express4) 

Die Routen-Variable auf den importierten gesetzt/benötigtes Objekt aus der routes.js-Datei Ihrer App. Es wird wahrscheinlich ein modules.export-Objekt geben, dem in der routes.js-Datei ein routes-Objekt zugewiesen ist, das in die anderen Teile Ihrer App exportiert werden soll.

var routes = require('./routes.js'); 

Hier stellen Sie eine Verbindung zu Ihrem db her. Sie verwenden die Mungo-Bibliothek, um Ihnen beim Erstellen von Schemas für Ihre Modelle zu helfen. Die Zeichenfolge innerhalb der Verbindungsmethode von Mungo ist der Speicherort Ihrer Datenbank ("Test"). Sie müssen sicherstellen, dass Sie mongodb ausführen, bevor Sie versuchen, die App zu bedienen.

// configuration =================  
mongoose.connect('mongodb://localhost/test');  // connect to mongoDB database 

Hier können Sie Ansichten Ihrer Anwendung auf das Anwendungsverzeichnis innerhalb des öffentlichen Verzeichnisses festlegen. In der App können Sie Ihre HTML-Dateien erstellen.

app.set('views', __dirname + '/public/app'); 

Hier geben Sie an, dass Ihre Ansichts-Engine einfach HTML sein wird.

Sie sagen ausdrücklich, dass alle Ihre statischen Dateien wie Bilder im Verzeichnis/public gespeichert werden.

Die folgenden sind Middleware, die Sie in Ihrer Anwendungsentwicklung unterstützen müssen. Morgans ist selbstverständlich, wie es um einen Kommentar hat, bodyParser zum Parsen des Körpers Ihrer Antwort kritisch und fordert HTTP-Objekte ...

app.use(morgan('dev'));           // log every request to the console 
app.use(bodyParser.urlencoded({'extended':'true'}));   // parse application/x-www-form-urlencoded 
app.use(bodyParser.json());          // parse application/json 
app.use(bodyParser.json({ type: 'application/vnd.api+json' })); // parse application/vnd.api+json as json 
app.use(methodOverride()); 

Diese Ihre Routen sind. Wenn du die Route '/' triffst, wird alles, was sich innerhalb von routes.index befindet, ausgeführt ...

Unten geben Sie Port 8080 als den Port an, an dem Ihre App eingehende Anfragen abhören wird.

// listen (start app with node server.js) ====================================== 
app.listen(8080); 
console.log("App listening on port 8080"); 
+0

Vielen Dank für jede Details! Ich habe fast alles verstanden, was ich denke, aber ich bin mir nicht sicher über die Ansichten Teil ... Vorläufig, wenn ich localhost: 8080 blättern werde ich automatisch zu localhost: 8080/#/home umgeleitet. Es bedeutet, dass die index.html-Datei gefunden wird und der Code in app.js (wo ich eckige Routen definiere) ausgeführt wird ... Aber home.html wird nicht gerendert ... Eigentlich wird es nicht einmal gefunden, solange ich eine 500 habe Fehlercode ... Was benötige ich um die TemplateUrl zu rendern? Vielen Dank für Ihre Zeit! –

+0

#/home ist in Ihrer eckigen App definiert, da angular für die Verwendung des clientseitigen Routings konfiguriert werden kann. Ihre Express-App ist das serverseitige Rendern. Sie müssen den Winkelcode aktualisieren – Alan