我对AngularJS处理单页路由的方式有概念上的不确定性,是否与从服务器中检索典型的CSS / JavaScript文件的方式完全类似。

假设我的渲染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');
});


我如何理解这种差异?

我很感激!

最佳答案

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模板并将其放入公用文件夹。 Express将为他们服务。
使用来自服务器的json数据填充模板。

您正在混合表达视图和angularjs模板。两者均设计用于不同用途。

08-25 10:02
查看更多