【发布时间】:2015-10-05 05:37:58
【问题描述】:
我使用 express static 指向公共目录
//app.js
app.use(express.static( __dirname + '/public'));
我怎样才能拥有它,所以 UI 的大部分路由都来自 AngularJS,截至目前,除非在 app.js 上我指定类似这样的东西,否则它不起作用
//app.js
app.get('/submit', function(req,res){
res.sendfile(__dirname + '/public/submit.html');
});
app.get('/schedule', function(req,res){
res.sendfile(__dirname + '/public/schedule.html');
});
如果我删除上述部分,并创建 /public/app.js 代替,它不起作用
// Declare app level module which depends on filters, and services
angular.module('myApp', ['page-ctrl']).
config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) {
$routeProvider.
when('/', {
templateUrl: 'index.html',
controller: LoginController
}).
when('/submit', {
templateUrl: 'submit.html',
controller: AddPostCtrl
}).
otherwise({
redirectTo: '/'
});
$locationProvider.html5Mode(true);
}]);
简单地说,我需要在 express 上指向 index.html,然后路由应该通过 Angular 完成,这样我可以检查登录身份验证并重新路由到索引页面,如果用户没有登录并尝试访问其他页面。
这就是我对 app.js (express) 的要求 --> /project/app.js
/*app.js*/
//dependencies
var fs = require('fs');
var http = require('http');
var https = require('https');
var express = require('express');
var mongoose = require('mongoose');
var bodyParser = require('body-parser');
//variables
var db;
if(process.env.ENV == 'Test')
db = mongoose.connect('mongodb://localhost/videoRequestAPI_Test');
else
db = mongoose.connect('mongodb://localhost/videoRequestAPI');
var app = express();
var port = process.env.PORT || 13337;
var debug = process.env.DEBUG || false;
/**/app.use(express.static( __dirname + '/public'));/**/
/**/app.use(bodyParser.urlencoded({extended: true}));/**/
/**/app.use(bodyParser.json()); /**/
// route middleware that will happen on every request
var routes = require('./routes');
//app.get('/', routes.index);
app.get('*', function(req, res){
res.sendfile(__dirname + '/public/index.html');
});
var httpServer = http.createServer(app);
httpServer.listen(80);
console.log("Server Running! Ports 80 open for traffic");
这是 index.html --> myproject/public/index.html
<!DOCTYPE html>
<html ng-app="page-ctrl">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.16/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="css/bootstrap.css">
<link rel="stylesheet" type="text/css" href="css/abc.css">
<script src="js/scripts/bootstrap.min.js"></script>
<script src="js/scripts/angular-local-storage.min.js"></script>
<script src="js/scripts/ui-bootstrap-custom-0.13.0.js"></script>
<script src="js/scripts/ui-bootstrap-custom-tpls-0.13.0.js"></script>
<script src="js/controllers/pageController.js"></script>
<script src="js/controllers/loginController.js"></script>
<script src="js/services/services.js"></script>
</head>
<body>
<nav class="navbar navbar-fixed-top" >
<aside class="col-sm-7" text-align="center">
<img src="img/sd.png" class="logo">
</aside>
<ul class="nav nav-pills">
<li role="presentation" class="nav-btn"><a href="/submit">Submit Content</a></li>
<li role="presentation" class="nav-btn"><a href="/schedule">Scheduled Content</a></li>
<li role="presentation" class="nav-btn active"><a href="/requests">Pending Content</a></li>
</ul>
</nav>
<div class="container">
<div ng-controller="LoginController">
<input ng-model="email" type="email" class="form-control limit" placeholder="Email">
<input ng-model="credentials" type="password" class="form-control limit" placeholder="Credentials">
<button ng-click="login()" class="btn btn-primary btn-default" type="button" data-dismiss="modal">Login</button>
</div>
</div>
<footer class="footer">
© (June 2015)
</footer>
</body>
</html>
【问题讨论】:
-
看起来您在转到“/”路线时正在“重新路由”到“index.html”。进入应用程序后,您已经在 index.html 页面上。在您的 index.html 页面中,您应该有一个元素 ,其中将显示由您的路由呈现的模板。
标签: javascript angularjs node.js express mean-stack