2013-03-02 25 views
2

我有一个node.js后端与一个express服务器。我想默认所有请求角应用程序,并使用角路由处理请求。快递服务器将处理来自角度应用程序的所有api调用。我已经建立了我的特快线在顶部的所有API调用,下面的代码在底部:Express.js和AngularJS - 使用静态页面而不是快速视图

app.get('*', function(req, res){ 
    res.sendfile('index.html', { root: path.resolve(__dirname + '/../../app') }); 
}); 

此为默认主页的伟大工程,但如果有一个虚假的文件夹,它不能很好地工作。例如。

www.example.com (works) 
www.example.com/product1 (works) 
www.example.com/products/1 (does not work) 

我的HTML文件引用采用以下结构脚本:

<script src="scripts/app.js"></script> 

当我尝试访问的URL与一个虚假的文件夹(www.example.com/products/1)我得到以下错误: 找不到文件'products/scripts/app.js'

它试图使用url中的文件夹来查找文件。有没有办法解决这个问题?或者我应该使用快递而不是角度的路由?

回答

3

尝试将<base href="/">添加到HTML文档的头部。这为我解决了同样的问题。

+0

由于这个固定为我。 – rorymadden 2013-03-23 22:57:01

2

angular-express-seed非常适合让你开始使用角度和表达。

app.js

app.get('*', routes.index); 

routes.js

exports.index = function(req, res){ 
    res.render('index'); 
}; 

你不必用玉。你可以使用任何你想要的模板引擎或只是静态的html文件。请注意,res.sendfile不会缓存该文件,因此不应在生产中使用。种子也有一个例子来展示客户端和服务器之间的json通信。

exports.name = function (req, res) { 
    res.json({ 
    name: 'Bob' 
    }); 
}; 

如果您使用express进行路由,您将失去单页面应用程序的感觉。

0

给脚本(和CSS文件)的绝对路径在HTML

<script src="/scripts/app.js"></script>