如何避免为我的每个html文件添加ExpressJS app.get()
How to avoid adding ExpressJS app.get() for each of my html files?
我有以下项目结构(为简洁起见,省略了不相关的文件):
- app
- authentication
- authentication.controller.js
- authentication.routes.js
- authentication.scss
- registration.html
- user.model.js
- app.js
- app.scss
- server
- server.controller.js
- server.js
- server.routes.js
- views
- index.html
问题是,当我使用html文件作为AngularJS路由的模板URL时,我会收到一个"无法获取/path/to/someFile.html"错误。
(function() {
angular
.module('appName', [
'ngMessages',
'ngResource',
'ui.router'
])
.config(function($stateProvider) {
$stateProvider
.state('registration', {
url: '/registration',
templateUrl: '/app/authentication/registration.html',
controller: 'AuthenticationController'
});
});
})();
这是否意味着我必须在server.js文件中为我使用的每个html文件添加以下代码块?
app.get('/app/authentication/registration.html', function(request, response) {
response.sendFile(path.resolve('app/authentication/registration.html'));
});
这似乎是一种巨大的痛苦。我目前还必须为我拥有的每个css和js文件做这件事。我可以使用gull来连接它们,所以我只需要为一个css和一个js文件提供一个app.get,但我不能为html文件这样做。
有更好的方法来处理这个问题吗?为每个html文件设置一个角度路由和一个快速路由没有多大意义。
您可以使用Express:轻松地提供静态文件
app.use(express.static('views'));
// http://localhost/ -> views/index.html
要将目录服务到特定路径,可以使用:
app.use('/app', express.static('app'));
// http://localhost/app/authentication/registration.html
// -> app/authentication/registration.html
这将解析路径并为页面提供服务。
如果你只想提供特定的页面(例如视图),我建议你把它们都放在一个目录中,只提供静态目录。
另请参阅:Express API
相关文章:
- 正在添加'X'按钮,在文本字段旁边使用javascript
- 如何在映射数组中添加换行符
- 无法导出函数expressjs/requestjs中的变量
- 正在将数据主题添加到所有项目
- ZeroClipboard-在复制之前添加到值
- nodejs-expressjs上传图像并显示它们
- 我可以在json对象中添加一个函数吗
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 正在SharePoint 2013母版页中添加JQuery移动文件
- 如何添加浮动和非浮动,其他
- 添加文字和评论功能更新Div
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- 在函数中添加数组元素的数值
- 如何避免为我的每个html文件添加ExpressJS app.get()
- AngularJS + ExpressJS + 猫鼬:添加删除功能
- Expressjs在partial中为li元素添加类
- 运行时添加路由(ExpressJs)
- 在ExpressJS中添加一个异常app.use()
- ExpressJS在将记录添加到数据库后重新查询数据库