AngularJS + node.js(web-server.js)从url中删除hashtag并由服务器端支持它

时间:2014-02-09 14:42:20

标签: javascript node.js angularjs angularjs-routing

据我所知,为了从angularJS中删除主题标签,我需要添加以下代码:

config(function($locationProvider) {
    $locationProvider.html5Mode(true);
}).

添加此代码后,我从我的简单服务器(web-server.js)获得404,这是一个提供角度tuotorial的简单服务器。

从stackoverflow我找到了2个链接,帮助我理解我需要添加路由到我的服务器以支持此操作。

AngularJs Routing without hashtag in link?

routing and clean path (no hashtag) not working in angularJS

好吧,我不明白如何添加web-server.js我需要的路由

我之前的链接是:/app/index.html/#cars 现在他是/app/index.html/car

我应该如何更改web-server.js以满足我的新路由需求?

感谢。

1 个答案:

答案 0 :(得分:1)

使用路由设置节点服务器的最简单,最快捷的方法是使用Express框架。

使用Express非常简单的webapp骨架看起来像这样:

var http = require('http');
var express = require('express');

var app = express();

app.configure(function() {
    app.set('views', __dirname + '/app');
    app.set('view engine', 'ejs');       //EJS template engine (no HTML for now)
    app.use('/public', express.static(__dirname + '/public'));  //specify path to your static files
});

//"car", "bus", and "van" are the pages of your app
app.get('/:page(|car|bus|van)', function(req, res) {
    res.render('index', {
        page: req.params.page     //pass page to the view (just in case)
    });
});

http.createServer(app).listen(80);

然后你必须创建/app/index.ejs文件,这个文件实际上是带有一些附加功能的html文件。

因此,当您在浏览器中导航到/car/bus/van时,您会看到index.ejs文件的内容。

希望这有帮助!

修改

我刚刚更正了/:page(|car|bus|van)部分。请尝试上一个版本

修改2

哦,我忘了说,你必须从命令行npm install ejs开始使用EJS模板