2015-09-10 5 views
1

J'ai créé un projet en utilisant un générateur express. Puis j'ai installé la tondeuse pour obtenir le bootstrap et l'angulaire. J'utilise express pour les services Web REST. J'ai aussi défini des routes angulaires. Je peux aussi avoir ma page d'index mais mes routes angulaires ne fonctionnent pas.Projet angulaire utilisant un générateur express

app.js

var express = require('express'); 
 
var path = require('path'); 
 
var favicon = require('serve-favicon'); 
 
var logger = require('morgan'); 
 
var cookieParser = require('cookie-parser'); 
 
var bodyParser = require('body-parser'); 
 
var mongoose = require('mongoose'); 
 
var fs = require('fs'); 
 

 
//load all models defined in .js files under models dir 
 
fs.readdirSync(__dirname + '/models').forEach(function(filename){ 
 
    if(~filename.indexOf('.js')) require(__dirname + '/models/'+ filename); 
 
}) 
 

 
var routes = require('./routes/index'); 
 
var users = require('./routes/users'); 
 

 
var app = express(); 
 

 
// view engine setup 
 
app.set('views', path.join(__dirname, 'views')); 
 
app.set('view engine', 'hjs'); 
 

 
// uncomment after placing your favicon in /public 
 
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); 
 
app.use(logger('dev')); 
 
app.use(bodyParser.json()); 
 
app.use(bodyParser.urlencoded({ extended: false })); 
 
app.use(cookieParser()); 
 
app.use(require('less-middleware')(path.join(__dirname, 'public'))); 
 
app.use(express.static(path.join(__dirname, 'public'))); 
 
app.use('/bower_components', express.static(path.join(__dirname, 'bower_components'))); 
 
//app.use('/bower_components', express.static(__dirname + '/bower_components')); 
 

 
app.use('/', routes); 
 
app.use('/users', users); 
 

 

 
// catch 404 and forward to error handler 
 
app.use(function(req, res, next) { 
 
    var err = new Error('Not Found'); 
 
    err.status = 404; 
 
    next(err); 
 
}); 
 

 
// error handlers 
 

 
// development error handler 
 
// will print stacktrace 
 
if (app.get('env') === 'development') { 
 
    app.use(function(err, req, res, next) { 
 
    res.status(err.status || 500); 
 
    res.render('error', { 
 
     message: err.message, 
 
     error: err 
 
    }); 
 
    }); 
 
    mongoose.connect('mongodb://localhost/mongo'); 
 
} 
 

 
// production error handler 
 
// no stacktraces leaked to user 
 
app.use(function(err, req, res, next) { 
 
    res.status(err.status || 500); 
 
    res.render('error', { 
 
    message: err.message, 
 
    error: {} 
 
    }); 
 
}); 
 

 

 
module.exports = app;

index.js (express REST) ​​

var express = require('express'); 
 
var router = express.Router(); 
 
var mongoose = require('mongoose'); 
 

 
mongoose.model('donuts',{id:String, type:String, name:String}); 
 
//mongoose.model('users', {firstname: String, lastName: String, email: String}); 
 
//all models are now loaded from app.js file 
 
router.get('/userlist', function(req, res){ 
 
    mongoose.model('users').find(function(err, users){ 
 
    res.send(users); 
 
    }); 
 
}); 
 

 
router.get('/userlist/:userId', function(req, res){ 
 
    mongoose.model('users').find({_id: req.params.userId},function(err, users){ 
 
    res.send(users) 
 
    }); 
 
}); 
 

 
/* GET home page. */ 
 
router.get('/', function(req, res, next) { 
 
    res.render('index', { title: 'Express' }); 
 
}); 
 

 
router.get('*', function(req, res) { 
 
    res.sendfile('./public/index.html'); // load our public/index.html file 
 
}); 
 

 
module.exports = router;

MainModule.js (Module angulaire et de la route)

var myApp = angular.module('LoginRegisterApp', ['ngRoute']); 
 

 
myApp.config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider){ 
 

 
    $routeProvider.when('/login',{ 
 
     templateUrl: 'views/login', 
 
     controller: 'LoginController' 
 
    }); 
 
}]);

LoginCtrl.js (Controller angulaire)

myApp.controller('LoginController',['$scope', function($scope){ 
 

 
    $scope.hello = "Helloo world Sunil"; 
 
}]);

index.html

<!DOCTYPE html> 
 
<html lang="en" ng-app='LoginRegisterApp'> 
 
<head> 
 
    <meta charset="UTF-8"> 
 
    <title>index</title> 
 
    <!-- CSS --> 
 
    <link rel="stylesheet" href="../bower_components/bootstrap/dist/css/bootstrap.min.css"> 
 
    <link rel="stylesheet" href="stylesheets/style.css"> <!-- custom styles --> 
 

 
    <!-- JS --> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.5/angular.min.js"></script> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.5/angular-route.min.js"></script> 
 
    <!--<script src="/bower_components/angular/angular.min.js"></script> 
 
    <script src="/bower_components/angular-route/angular-route.min.js"></script> --> 
 
    <script src="/bower_components/jquery/dist/jquery.min.js"></script> 
 
    <script src="/bower_components/bootstrap/dist/js/bootstrap.min.js"></script> 
 

 
    <!-- ANGULAR CUSTOM --> 
 
    <script src="MainModule.js"></script> 
 
    <script src="javascripts/controllers/LoginCtrl.js"></script> 
 
</head> 
 
<body ng-controller="LoginController"> 
 
<nav class="navbar navbar-inverse"> 
 
    <div class="container-fluid"> 
 
     <div class="navbar-header"> 
 
      <a class="navbar-brand" href="/">WebSiteName</a> 
 
     </div> 
 
     <div> 
 
      <ul class="nav navbar-nav"> 
 
       <li class="active"><a href="#">Home</a></li> 
 
       <li class="dropdown"><a class="dropdown-toggle" data-toggle="dropdown" href="#">Page 1 <span class="caret"></span></a> 
 
        <ul class="dropdown-menu"> 
 
         <li><a href="#">Page 1-1</a></li> 
 
         <li><a href="#">Page 1-2</a></li> 
 
         <li><a href="#">Page 1-3</a></li> 
 
        </ul> 
 
       </li> 
 
       <li><a href="#">Page 2</a></li> 
 
       <li><a href="#">Page 3</a></li> 
 
      </ul> 
 
      <ul class="nav navbar-nav navbar-right"> 
 
       <li><a href="#"><span class="glyphicon glyphicon-user"></span> Sign Up</a></li> 
 
       <li><a href="/login"><span class="glyphicon glyphicon-log-in"></span> Login</a></li> 
 
      </ul> 
 
     </div> 
 
    </div> 
 
</nav> 
 
<!-- ANGULAR DYNAMIC CONTENT --> 
 
{{hello}} 
 
<div ng-view></div> 
 
</body> 
 
</html>

+0

Il convient de noter que Bower n'est pas actuellement pris en charge - plus intelligent de passer à NPM pour tout. – SomeKittens

Répondre

0
app.engine('html', require('ejs').renderFile); 
app.set('view engine', 'html'); 

Replace the code in app.js file and comment out the old code for setting the engine. 

As well as keep the index.html file in public directory and add the following code in app.js file : 

app.use(express.static("./public")); 

app.get('/', function (req, res, next) { 
    res.sendFile("./public/index.html"); 
});