0

我对 AngularJS 处理单页路由的方式有概念上的不确定性,以及这是否与从服务器检索典型的 css/javascripts 文件的方式完全相似。

假设我在渲染的 html 文件中有以下来源:

/javascripts/client.js
/css/main.css

我从来不用在我的服务器上收听它们(在 Express 中,像这样):

app.get('/:dir/:name',function(req,res){
 if (req.params.dir == 'javascripts){
  //render the client.js
  //....
  //render the main.css
 })

Express 知道在哪里可以找到它们,并在我背后取回它们。即使我试着听那些,由于某种原因,当他们来的时候我永远无法抓住他们。

另一方面,当我在 AngularJS 中创建如下所示的路由时:

.config(function($routeProvider){
$routeProvider.when('/write',{templateUrl: '/templates/mainpage'})  
});

我必须在后端收听并手动检索它。我必须这样写:

app.get('/templates/:name',function(req,res){
 res.render('templates/'+req.params.name');
});

我怎样才能理解这种差异?

我欣赏任何光!

4

1 回答 1

3

Express 不会在您背后做任何事情。Express 知道在哪里查找这些静态文件,因为您通过定义告诉 express 在哪里查找它们:

app.use(express.static(path.join(__dirname, 'public')));

不要这样做:

app.get('/templates/:name',function(req,res){
 res.render('templates/'+req.params.name');
});

创建静态 html 模板并将它们放入 public 文件夹。Express 将为他们服务。使用来自服务器的 json 数据填充模板。

您正在混合快速视图和 angularjs 模板。两者都是为不同的用途而设计的。

于 2013-10-29T17:39:37.940 回答