对于 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');
});
我如何理解这种差异?
我很欣赏任何光线!
最佳答案
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 数据填充模板。
您正在混合表达 View 和 angularjs 模板。两者都是为不同的用途而设计的。
关于javascript - 单页应用程序中模板检索的困惑以及与典型文件检索的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19665150/