CSS 文件路径未正确解析 angular ng-view
CSS file paths are not resolving properly with angular ng-view
我有一个 angular 应用程序设置 ng-view。我有 1 级和 2 级深度的路线,例如:
.when('/sample', {
templateUrl: 'views/sample.html',
controller: 'SampleCtrl'
})
.when('/sample/:id', {
templateUrl: 'views/sample.html',
controller: 'SampleCtrl'
})
我正在使用 html5 模式删除 scotch 路由,因此我的路由呈现为 "localhost:9000/sample" 而不是 "localhost:9000#/sample"
我也在使用节点 modrewrite 服务器来启用 html5 模式,这样我就可以在我的 url 中接受直接 links 到深度 link(对于例如 localhost:9000/sample/id),使用 connect-modrewrite npm 模块和以下 grunt 配置:
middleware: function (connect) {
return [
modRewrite(['^[^\.]*$ /index.html [L]']),
connect.static('.tmp'),
connect().use(
'/bower_components',
connect.static('./bower_components')
),
connect.static(appConfig.app)
];
}
我的 header 中定义了 css 个文件,例如:
<link rel="stylesheet" href="styles/main.css">
在我的应用程序中路由时,这工作正常。当我接受一层深度的直接 link 时它也有效,因此直接导航到 "localhost:9000/sample" 将呈现一个页面。但是,当我使用直接 link 到 2 层深的路径时,例如 "localhost:9000/sample/id",我的应用程序将无法正确呈现我的 css,我会看到如下控制台错误:
GET http://localhost:5309/snippet/styles/main.css
解决我的 javascript 依赖关系没有问题,它们使用相同类型的相对路径,只是 css 那些。我可以通过在样式 (href="/styles/main.css") 前加一条斜线来解决这个问题,但我宁愿不这样做,因为它会限制我的应用程序的部署方式,而且这也不是 wiredep 默认安装 css bower 依赖项的方式。是否有一些 angular-ng-view 友好的方式来确保我的 css 文件路径可以正确解析,无论我在什么路径?
我从来没有得到这方面的答案,所以我采用了在我的 css 文件前加上斜杠的方法,并且效果很好。如果其他人遇到这个问题并需要它,这是我对我的 Gruntfile wiredep 命令所做的修改,使其在我的 css 导入前加上斜杠
wiredep: {
app: {
fileTypes: {
html: {
replace: {
css: '<link rel="stylesheet" href="/{{filePath}}" />'
}
}
}
}
我有一个 angular 应用程序设置 ng-view。我有 1 级和 2 级深度的路线,例如:
.when('/sample', {
templateUrl: 'views/sample.html',
controller: 'SampleCtrl'
})
.when('/sample/:id', {
templateUrl: 'views/sample.html',
controller: 'SampleCtrl'
})
我正在使用 html5 模式删除 scotch 路由,因此我的路由呈现为 "localhost:9000/sample" 而不是 "localhost:9000#/sample"
我也在使用节点 modrewrite 服务器来启用 html5 模式,这样我就可以在我的 url 中接受直接 links 到深度 link(对于例如 localhost:9000/sample/id),使用 connect-modrewrite npm 模块和以下 grunt 配置:
middleware: function (connect) {
return [
modRewrite(['^[^\.]*$ /index.html [L]']),
connect.static('.tmp'),
connect().use(
'/bower_components',
connect.static('./bower_components')
),
connect.static(appConfig.app)
];
}
我的 header 中定义了 css 个文件,例如:
<link rel="stylesheet" href="styles/main.css">
在我的应用程序中路由时,这工作正常。当我接受一层深度的直接 link 时它也有效,因此直接导航到 "localhost:9000/sample" 将呈现一个页面。但是,当我使用直接 link 到 2 层深的路径时,例如 "localhost:9000/sample/id",我的应用程序将无法正确呈现我的 css,我会看到如下控制台错误:
GET http://localhost:5309/snippet/styles/main.css
解决我的 javascript 依赖关系没有问题,它们使用相同类型的相对路径,只是 css 那些。我可以通过在样式 (href="/styles/main.css") 前加一条斜线来解决这个问题,但我宁愿不这样做,因为它会限制我的应用程序的部署方式,而且这也不是 wiredep 默认安装 css bower 依赖项的方式。是否有一些 angular-ng-view 友好的方式来确保我的 css 文件路径可以正确解析,无论我在什么路径?
我从来没有得到这方面的答案,所以我采用了在我的 css 文件前加上斜杠的方法,并且效果很好。如果其他人遇到这个问题并需要它,这是我对我的 Gruntfile wiredep 命令所做的修改,使其在我的 css 导入前加上斜杠
wiredep: {
app: {
fileTypes: {
html: {
replace: {
css: '<link rel="stylesheet" href="/{{filePath}}" />'
}
}
}
}