Angular:HTML5 样式 URL 正在渲染,没有样式表
Angular: HTML5 style URL is rendering with no stylesheet
我在 Angular 中启用了 HTML5 样式 URLs(没有“#”),如下所示:
$locationProvider.html5Mode({
enabled: true,
requireBase: true
});
并添加了一个基本标签:
<base href="/">
现在,当我导航到 http://profile.myapp.com/show/1234
时,它呈现的页面没有应用任何样式。
但是,当我将 URL 与“#”一起使用时,页面会正确呈现。同样,如果我禁用 HTML5 样式 URL,页面将正确呈现。
我正在使用 ui-路由器,配置为:
/** @ngInject */
function routerConfig($stateProvider, $urlRouterProvider) {
$stateProvider
.state('showProfile', {
url: '/show/:id',
templateUrl: 'app/profile/profile.html',
controller: 'ProfileController',
controllerAs: 'profileController'
});
$urlRouterProvider.otherwise('/show/1234');
}
CSS 通过 Gulp 任务注入:
CSS 是通过 Gulp 任务 from this Yeoman Generator 注入的。
<!-- build:css({.tmp/serve,src}) styles/app.css -->
<!-- inject:css -->
<link rel="stylesheet" href="app/index.css">
<!-- endinject -->
<!-- endbuild -->
任务看起来像:
var 注入文件 = gulp.src([
path.join(conf.paths.src, '/app/**/*.scss'),
path.join('!' + conf.paths.src, '/app/index.scss')
], { 读: false });
var injectOptions = {
transform: function(filePath) {
filePath = filePath.replace(conf.paths.src + '/app/', '');
return '@import "' + filePath + '";';
},
starttag: '// injector',
endtag: '// endinjector',
addRootSlash: false
};
问题:
为什么会发生这种情况,除了不使用 HTML5 样式 URL 之外,我还能做些什么来解决这个问题?
这个问题似乎已经通过将基本标签 <base href="/">
从主体部分移到头部部分得到解决。
我在 Angular 中启用了 HTML5 样式 URLs(没有“#”),如下所示:
$locationProvider.html5Mode({
enabled: true,
requireBase: true
});
并添加了一个基本标签:
<base href="/">
现在,当我导航到 http://profile.myapp.com/show/1234
时,它呈现的页面没有应用任何样式。
但是,当我将 URL 与“#”一起使用时,页面会正确呈现。同样,如果我禁用 HTML5 样式 URL,页面将正确呈现。
我正在使用 ui-路由器,配置为:
/** @ngInject */
function routerConfig($stateProvider, $urlRouterProvider) {
$stateProvider
.state('showProfile', {
url: '/show/:id',
templateUrl: 'app/profile/profile.html',
controller: 'ProfileController',
controllerAs: 'profileController'
});
$urlRouterProvider.otherwise('/show/1234');
}
CSS 通过 Gulp 任务注入:
CSS 是通过 Gulp 任务 from this Yeoman Generator 注入的。
<!-- build:css({.tmp/serve,src}) styles/app.css -->
<!-- inject:css -->
<link rel="stylesheet" href="app/index.css">
<!-- endinject -->
<!-- endbuild -->
任务看起来像:
var 注入文件 = gulp.src([ path.join(conf.paths.src, '/app/**/*.scss'), path.join('!' + conf.paths.src, '/app/index.scss') ], { 读: false });
var injectOptions = {
transform: function(filePath) {
filePath = filePath.replace(conf.paths.src + '/app/', '');
return '@import "' + filePath + '";';
},
starttag: '// injector',
endtag: '// endinjector',
addRootSlash: false
};
问题:
为什么会发生这种情况,除了不使用 HTML5 样式 URL 之外,我还能做些什么来解决这个问题?
这个问题似乎已经通过将基本标签 <base href="/">
从主体部分移到头部部分得到解决。