簡體   English   中英

Node.js和expressjs路由到另一個文件夾

[英]Node.js and expressjs routing to another folder

我需要使用ui.router進行路由的幫助。

我的文件夾結構如下所示:

在此處輸入圖片說明

在我的app.jsjavascripts如下所示:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM