我最近切换到 grunt 0.4.5,并且它改变了 connect 的工作方式。
我之前使用了 connect-modrewrite,效果还不错(对于 /:parameter 生成的 URL 有些问题)。
这是旧版本,在使用 grunt 0.4.1 和 generator-angular 0.8.0 中正常工作的代码,其中中间件部分由我修改以使用 html5mode。
connect: {
options: {
port: 9000,
hostname: '*IP HERE*',
livereload: 35729,
middleware: function (connect, options) {
var optBase = (typeof options.base === 'string') ? [options.base] : options.base;
return [require('connect-modrewrite')(['!(\\..+)$ / [L]'])].concat(
optBase.map(function(path){ return connect.static(path); })
);
}
},
livereload: {
options: {
open: true,
base: [
'.tmp',
'<%= yeoman.app %>'
]
}
},
这是来自generator-angular 0.9.0-1的新版本。
connect: {
options: {
port: 9000,
hostname: '*IP HERE*',
livereload: 35729
},
livereload: {
options: {
open: true,
middleware: function (connect) {
return [
connect.static('.tmp'),
connect().use(
'/bower_components',
connect.static('./bower_components')
),
connect.static(appConfig.app)
];
}
}
},
如何将此更改为使用mod-rewrite或任何其他方法来实现html5mode?
我尝试使用这里提供的方法:https://gist.github.com/nnarhinen/7719157 我将其组合起来创建了以下内容:
middleware: function (connect) {
return [
connect.static(modRewrite(['^[^\\.]*$ /index.html [L]'])),
connect.static('.tmp'),
connect().use(
'/bower_components',
connect.static('./bower_components')
),
connect.static(appConfig.app)
];
}
这让我能够查看正常视图,但是modRewrite部分似乎没有按照需要的方式来通过URL获取其他视图。