繁体   English   中英

AngularJS使用Express Server进行路由

[英]AngularJS routes with Express Server

我已经一起开始使用Angular路线和Express。 当我单击路由链接时,URL更改但什么都没有发生,这是我的代码。当我单击href时,它用类似“ http:// localhost:3000 /#!#%2Fhome ”的内容更改了我的URL发生。 我曾尝试更改没有“ /”和“#”的href,但没有任何改变。

<html>
 <head>
   <base href="/" />
   <meta charset="utf-8">
   <title>Squared</title>
   <link rel="stylesheet" href="/css/skeleton.css">
   <link rel="stylesheet" href="/css/style.css">
 </head>
 <body>
   <div class="app-wrapper" ng-app = "myapp">
    <div class="row app">
     <div class="left">
         <div class="left-search-wrapper">
           <input type="text" name="search-bar" value="" placeholder="Search">
         </div>
        <div class="left-image-wrapper">
            <img src="images/profilepic.png" class="left-image">
        </div>
        <div class="left-menu-wrapper">
            <ul>
              <li><a href="#/home">Home</a></li>
              <li><a href="#/messages">Messages</a></li>
              <li><a href="#/friends">Friends</a></li>
              <li><a href="#/settings">Settings</a></li>
            </ul>
        </div>

    </div>
    <div class="columns eight right">
      <div ng-view></div>

      <script type="text/ng-template" id= "home.html">
        <h2>Home</h2>
      </script>
      <script type="text/ng-template" id= "messages.html">
        <h2>messages</h2>
      </script>
      <script type="text/ng-template" id= "friends.html">
        <h2>friends</h2>
      </script>
      <script type="text/ng-template" id= "settings.html">
        <h2>settings</h2>
      </script>
     </div>
    </div>
   </div>



 <script type="text/javascript" src="node_modules/angular/angular.min.js"></script>
 <script type="text/javascript" src="node_modules/angular-route/angular-route.min.js"></script>
 <script type="text/javascript" src="app.js"></script>
 </body>
</html>

这是我的app.js

var app = angular.module("myapp", ["ngRoute"]);
app.config(["$routeProvider", function($routeProvider){
 $routeProvider
   .when("/home", { templateUrl: "home.html"})
   .when("/messages", { templateUrl: "messages.html"})
   .when("/friends", { templateUrl: "friends.html"})
   .when("/settings", { templateUrl: "settings.html"});
 }]);

这是我的Express server.js

var express = require("express");
var app = express();
var path = require("path");


app.use(express.static(__dirname));

function routeHandler(app){
  app.get("/", function(req, res){
      res.sendFile(__dirname + "/index.html");
  });
}

routeHandler(app);
app.listen(3000);

这是我的项目目录组织:

  • 根文件夹
    • index.html
    • app.js
    • server.js
    • node_modules
    • 图片
    • 的CSS

您应该使用“ ng-href”而不是“ href”,因为在解析绑定之前跟随“ href”可能会导致错误的链接

好的,现在可以了。 我通过添加“ $ locationProvider.html5Mode(true);”解决了该问题。 现在还有另一个问题:当我重新加载URL时,我收到“无法获取消息”

定义模板网址,并在您的服务器中处理它并呈现页面。

  .when("/home", { templateUrl: "/server/home"})

该网址应在您的服务器端进行路由和匹配。 并在您的server.js中

app.get('/home', function(req, res){
res.render('home.html')
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM