【发布时间】:2019-10-12 05:25:40
【问题描述】:
我有一个应用程序,我必须在其中配置和使用 less 来实现动态主题。问题是我们没有使用 angular-cli 并且这里的配置有点奇怪,所以我们手动引导 angular 模块。
下面是app的配置:
package.json
"dependencies": {
"@angular/common": "^4.0.0",
"@angular/compiler": "^4.0.0",
"@angular/core": "^4.0.0",
"@angular/forms": "^4.0.0",
"@angular/http": "^4.0.0",
"@angular/platform-browser": "^4.0.0",
"@angular/platform-browser-dynamic": "^4.0.0",
"@angular/router": "^4.0.0",
"@angular/upgrade": "^4.0.0",
"@angular/animations": "^4.0.1",
"bootstrap": "^3.3.7",
"core-js": "^2.4.1",
"reflect-metadata": "^0.1.8",
"rxjs": "^5.0.1",
"systemjs": "0.19.39",
"zone.js": "^0.8.4"
},
and so on..
main.ts
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './app.module';
import { ThemeModule } from "./theme.module";
window.appnamespace.platform = platformBrowserDynamic();
window.appnamespace.AppModule = AppModule
window.appnamespace.ThemeModule = ThemeModule;
theme.module.ts
import { NgModule } from "@angular/core";
import { BrowserModule } from "@angular/platform-browser";
import { ThemeComponent } from "./theme.component";
import { ThemeToolbar } from "./Themes/theme-toolbar/theme-toolbar.component";
import { ThemePreview } from "./Themes/theme-preview/theme-preview.component";
import { ThemeService } from "./services/themeManagement.service";
const PERFECT_SCROLLBAR_CONFIG: PerfectScrollbarConfigInterface = {
suppressScrollX: true
};
@NgModule({
imports: [
BrowserModule,
],
declarations: [
ThemeComponent,
ThemeToolbar,
ThemePreview,
SetFocusDirective
],
providers: [ThemeService, LocalizeThemeService, CommonService],
bootstrap: [ThemeComponent]
})
export class ThemeModule { }
它的组件:
@Component({
selector: "my-theme",
templateUrl: "../js/divdrawer/Themes/theme.template.html"
})
export class ThemeComponent implements OnInit {
//
}
和像这样通过 javascript 引导它: window.appnamespace.platform.bootstrapModule(window.appnamespace.ThemeModule);
theme.preview 组件
@Component({
selector: "theme-preview",
templateUrl: "../theme-preview/theme-preview.component.template.html",
styleUrls: ['../theme-preview/theme-style.less']
})
export class ThemePreview implements OnInit {
// some code
}
theme-style.less: 包含 css
@import "./theme-variable.less";
// some css
theme-variable.less:包含较少的变量
@header-bg :red;
@badge-title-bg : #ddd;
我想在我的主题预览组件中使用更少的变量和样式来动态更改主题。
如何只在主题组件中配置less。
【问题讨论】:
-
如果你不使用cli,你用什么来编译,构建等?系统.js?网页包?
-
好的,我在你的 package.json 中看到了 system.js。您需要为系统使用插件写入以加载更少的文件。喜欢这个:github.com/systemjs/plugin-less。这个包有很好的文档,我想你可以很容易地复制他们的样本。
-
@Yvan:Systemjs 和 Webpack
-
所以,你需要一个插件来少加载,这个插件github.com/systemjs/plugin-less是systemjs推荐的。
标签: css angular less angular-bootstrap