Javascript 设置带有角度的Express
我可以使用ASP/Visual Studio轻松地在web应用程序中设置Angular,但我想进入节点世界,更具体地说是Express。我并不真正理解Express的基本路由处理程序,它将支持Angular所拥有的范例 例如,在设置Express文件时,有一百万个示例,但几乎所有示例都使用Jade作为模板,我反对Jade的语法,也不想使用它 到目前为止,我已经为我的Express服务器准备了这个(我已经注释了一些关于我目前所做决定的问题):Javascript 设置带有角度的Express,javascript,angularjs,node.js,express,Javascript,Angularjs,Node.js,Express,我可以使用ASP/Visual Studio轻松地在web应用程序中设置Angular,但我想进入节点世界,更具体地说是Express。我并不真正理解Express的基本路由处理程序,它将支持Angular所拥有的范例 例如,在设置Express文件时,有一百万个示例,但几乎所有示例都使用Jade作为模板,我反对Jade的语法,也不想使用它 到目前为止,我已经为我的Express服务器准备了这个(我已经注释了一些关于我目前所做决定的问题): var express=require('expres
var express=require('express'),
路径=要求(“路径”);
var-app=express();
var env=process.env.NODE|env | |“development”;
//1)如果我要在视图中使用角度布线,这真的有必要吗?
app.set('views',path.join('u_dirname',/app/views');
app.use(express.static(uu dirname+/public));
//2)我假设这是利用角度的理想模式。
//一个提供html文件的全面处理程序,该文件将
//把剩下的布线交给Angular?
app.get('*',函数(req,res){
res.sendFile(path.join(_dirname+'/public/index.html');
});
常数端口=3000;
app.listen(端口);
log('侦听端口:'+端口);
我的问题是:
是通过Express在Angular应用程序中必需的,还是真正用于Jade/EJS模板工作流?如果有助于确定角度,我应该将其指向什么路径?我的视角?或者只是作为所有角度视图的容器的静态html文件app.set('views',…)
- 我假设仍然需要
来确保express能够提供公共静态资源,比如css/javascriptapp.use(express.static(…)
route处理程序是否是提供一个html文件的可接受模式,该文件将包含所有必要的用法app.get('*',…){res.sendFile('path/to/index.html')}
- 对于Angular,在整个应用程序中只有一个html文件,然后只使用Angular的路由和控制器/视图来处理其余的文件,这正常吗
app.set('views',…)
是通过Express在Angular应用程序中必需的,还是真正用于Jade/EJS模板工作流?如果有助于确定角度,我应该将其指向什么路径?我的视角?或者只是作为所有角度视图的容器的静态html文件
如果需要在服务器端渲染视图,然后将其发送到客户机,则需要这样做。否则(在您的情况下)不会。您可以将文件发送给用户,或者根据用户发送给服务器的参数生成特定于用户的输出。它可以是任何东西,HTML文件、json或只是简单的文本
我假设仍然需要app.use(express.static(…)
来确保express能够提供公共静态资源,比如css/javascript
你说得对。如果您还需要提供静态内容,最好的方法是使用express.static
,但是您可以自己捕获请求并提供内容
app.get('*',…){res.sendFile('path/to/index.html')}
route处理程序是否是提供一个html文件的可接受模式,该文件将包含所有必要的用法
如果对于前一个路由未捕获的每一个请求,您需要发送完全相同的文件,可以
请记住,如果您需要将其他HTML文件作为模板提供,并且它们与您在express.static
to中指出的目录不同,则客户端无法访问HTML文件。我一会儿再讨论
然而,我相信定义所有路由是一个好的实践,而不是仅仅放置一个*
来捕获它们。最好至少定义一个模式,以后维护代码会更容易
对于Angular,整个应用程序只有一个html文件,然后只使用Angular的路由和控制器/视图来处理其余的文件,这正常吗
取决于您的应用程序。在大多数情况下是的
我已经做了几个大型的angular项目,我只有一个路由实际上服务于主html文件,还有一个路由服务于静态文件(图片、js、css)。我还有一个指向templates
目录的路由,该目录应该作为静态内容使用。这些是AngularJS需要使用的模板
对于angular应用程序和服务器之间的通信,您可能还需要其他路由。您可以创建RESTfulAPI端点,为客户机和服务器创建通信层
我通常在服务器代码中有这两行代码,以便将所有模板保存在同一文件夹中。它使管理和定义工作流程变得更容易:
app.use(express.static(path.join(__dirname, 'public')));
app.use('/templates', express.static(path.join(__dirname, 'templates')));
对于服务器和客户端之间的通信:
app.post('/login', function (req, res) {
// deal with login information ...
res.send({
done: true,
errors: []
});
});
app.post('/search', function (req, res) {
// do the search ...
res.send({
done: true,
results: []
});
});
请记住,如果您在应用程序中的某个点使用*
,则此后定义的其他路由将永远无法捕获请求
及
我反对Jade的语法,也不想使用它
是的,我也是!但也有其他选择,我个人更喜欢ejs
。如果您使用的是express generator
,只需通过-e
开关,它就会创建与ejs
兼容的所有内容
$ express -e
另外,看看。只要读一读就可以了