关于单页面应用程序中模板检索的困惑以及与典型文件检索的区别

时间:2013-10-29 17:25:54

标签: javascript node.js http angularjs express

我对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');
});

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

我感激任何光明!

1 个答案:

答案 0 :(得分:3)

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模板。两者都是为不同用途而设计的。