![](/img/trans.png)
[英]Routing in MEAN Stack - Routing help for Angular js and node.js using expressjs framework
[英]Node.js and expressjs routing to another folder
我需要使用ui.router進行路由的幫助。
我的文件夾結構如下所示:
在我的app.js
, javascripts
如下所示:
var app = angular.module('testing', ['ui.router']);
app.config(['$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('home', {
url: '/home',
templateUrl: '/home.html'
})
.state('client_form', {
url: '/request',
templateUrl: '/client.html',
controller: 'MainCtrl'
});
$urlRouterProvider.otherwise('home');
}]);
我的index.ejs
看起來像這樣:
<!DOCTYPE html>
<html>
<head>
<title>Testing</title>
<link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet">
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.10/angular.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.2.10/angular-ui-router.js"></script>
<script src="/javascripts/app.js"></script>
</head>
<body ng-app="testing">
<div class="col-md-6 col-md-offset-3">
<ui-view></ui-view>
</div>
</body>
</html>
home.ejs
:
<div class="page-header text-center" style="font-size:45px">
Hacker List
</div>
<div class="text-center">
<a href="worker.html">
<button type="submit" class="btn btn-primary btnBig">Worker</button>
</a>
<br />
<a href="Client.html">
<button type="submit" class="btn btn-primary btnBig">Client</button>
</a>
</div>
當我執行npm start
並轉到網站時,我陷入了無限循環,找不到home.html
。
我可以使在代碼home.ejs
出現,如果我使它里面的內聯index.ejs
使用<script type="text/ng-template" id="/home.html">HOME_CODE_HERE</script>
; 但是,我不想這樣做。
我不確定如何解決此問題。
ui.router
是AngularJS,而不是ui.router
。 無限循環問題可能在您的前端,而不是在NodeJS路由中。
出於AngularJS的問題,我想說Express路由位於后端,因此在請求(來自Angular,瀏覽器,鏈接,重定向等)后,所需的職責和配置在NodeJS + Express + EJS中。
假設您向/index.html
發送請求。 一旦請求進入后端,NodeJS將假定如何處理它。
因此,為確保您在NodeJS中沒有問題,請檢查app.js
(在node中使用-可能在項目的根目錄中)。 它可能具有與此類似的路由配置:
var express = require('express'); var app = express(); // EJS template config app.set('views','./views'); app.set('view engine','ejs'); app.use(bodyParser.urlencoded({ extended: true })); //support x-www-form-urlencoded app.use(bodyParser.json()); // This is your routes app.get('/', function(req, res) { // Your code for index res.render('views/index', { param : "This is a EJS test" }); }); app.get('/index.html', function(req, res) { // Your code for index res.render('views/index', { param : "This is a EJS test" }); }); app.get('/anotherPage.html', function(req, res) { // Your code for another page: can include validations here res.render('views/anotherPage', { param : "This is a EJS test" }); });
現在,您可以在NodeJS中設置路由,然后可以設置EJS文件。 您的home.ejs
可以完全相同。 index.ejs
文件將有所不同。 也許您可以這樣寫(出於測試目的,我從中刪除了AngularJS):
<!DOCTYPE html> <html> <head> <title>Testing</title> <link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet"> </head> <body> This is a parameter from the back-end: <%= param %> This is the index of EJS template. Below the snipped inserted: <div class="col-md-6 col-md-offset-3"> <% include home.ejs %> </div> </body> </html>
Express github頁面中有一些關於路由和EJS的很好的示例: https : //github.com/expressjs/express/tree/master/examples
我認為消除NodeJS的問題可以幫助您解決AngularJS中似乎存在的問題。
希望對您有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.