2013-03-02 70 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>