Asp.net mvc 4 按环境呈现css
我想切换到asp.net mvc网站上的webpack,这个网站有3个不同的环境,每个环境都有自己的配色方案(这样人们就知道他们在哪个环境下),所以我需要一种方法来告诉webpack加载哪个css文件以及何时加载,但不确定如何进行 最终结果是: /asset/styles/style.dev.css /asset/styles/style.debug.css /资产/样式/样式.prod.cssAsp.net mvc 4 按环境呈现css,asp.net-mvc-4,razor,webpack-4,Asp.net Mvc 4,Razor,Webpack 4,我想切换到asp.net mvc网站上的webpack,这个网站有3个不同的环境,每个环境都有自己的配色方案(这样人们就知道他们在哪个环境下),所以我需要一种方法来告诉webpack加载哪个css文件以及何时加载,但不确定如何进行 最终结果是: /asset/styles/style.dev.css /asset/styles/style.debug.css /资产/样式/样式.prod.css 更新 例如,您在默认情况下启用了某个主题,并且有一个主题切换器控件(布局页面),该控件使用JavaS
更新 例如,您在默认情况下启用了某个主题,并且有一个主题切换器控件(布局页面),该控件使用JavaScript在客户端引发事件 在输入脚本中,您可以附加到主题切换器控件的已更改事件,并执行以下操作: 伪代码:Index.js
function changedEventHandler(){
var selectedTheme = $(this).selectedValue;
switch (selectedTheme) {
case "themeA":
require("themeA")
break;
case "themeB":
require("themeB")
break;
default:
require("defaultTheme")
}
}
resolve: {
alias: {
"theme$": path.resolve(theme),
"themeA$": path.resolve("./src/css/themeA.css"),
"themeB$": path.resolve("./src/css/themeB.css"),
...
module.exports = (env) => {
var theme = "";
if (env.theme) {
theme = "./src/css/" + env.theme + ".css"
}
console.log(path.resolve(theme));
return {
entry: './src/index.js',
output: {
path: distfolder,
filename: 'bundle.js'
},
resolve: {
alias: {
"theme$": path.resolve(theme)
}
},
...
..
.
import "theme"
webpack.config.js
function changedEventHandler(){
var selectedTheme = $(this).selectedValue;
switch (selectedTheme) {
case "themeA":
require("themeA")
break;
case "themeB":
require("themeB")
break;
default:
require("defaultTheme")
}
}
resolve: {
alias: {
"theme$": path.resolve(theme),
"themeA$": path.resolve("./src/css/themeA.css"),
"themeB$": path.resolve("./src/css/themeB.css"),
...
module.exports = (env) => {
var theme = "";
if (env.theme) {
theme = "./src/css/" + env.theme + ".css"
}
console.log(path.resolve(theme));
return {
entry: './src/index.js',
output: {
path: distfolder,
filename: 'bundle.js'
},
resolve: {
alias: {
"theme$": path.resolve(theme)
}
},
...
..
.
import "theme"
如果您想要三个不同的版本,每个版本都有不同的主题,您可以执行以下操作: 如果您希望使用MEA运行生成:
npm运行MEA
如果您希望使用Web运行生成:npm运行Web
package.json
"scripts": {
"themeA": "webpack --env.theme=themeA --mode development",
"themeB": "webpack --env.theme=themeB --mode development",
webpack.config.js
function changedEventHandler(){
var selectedTheme = $(this).selectedValue;
switch (selectedTheme) {
case "themeA":
require("themeA")
break;
case "themeB":
require("themeB")
break;
default:
require("defaultTheme")
}
}
resolve: {
alias: {
"theme$": path.resolve(theme),
"themeA$": path.resolve("./src/css/themeA.css"),
"themeB$": path.resolve("./src/css/themeB.css"),
...
module.exports = (env) => {
var theme = "";
if (env.theme) {
theme = "./src/css/" + env.theme + ".css"
}
console.log(path.resolve(theme));
return {
entry: './src/index.js',
output: {
path: distfolder,
filename: 'bundle.js'
},
resolve: {
alias: {
"theme$": path.resolve(theme)
}
},
...
..
.
import "theme"
在您的入口点,您可以执行以下操作:
index.js
function changedEventHandler(){
var selectedTheme = $(this).selectedValue;
switch (selectedTheme) {
case "themeA":
require("themeA")
break;
case "themeB":
require("themeB")
break;
default:
require("defaultTheme")
}
}
resolve: {
alias: {
"theme$": path.resolve(theme),
"themeA$": path.resolve("./src/css/themeA.css"),
"themeB$": path.resolve("./src/css/themeB.css"),
...
module.exports = (env) => {
var theme = "";
if (env.theme) {
theme = "./src/css/" + env.theme + ".css"
}
console.log(path.resolve(theme));
return {
entry: './src/index.js',
output: {
path: distfolder,
filename: 'bundle.js'
},
resolve: {
alias: {
"theme$": path.resolve(theme)
}
},
...
..
.
import "theme"
你的问题不够清楚。你想要三个不同的版本,每个版本都有不同的主题,还是你想要构建一个可以在你的跑步应用程序中切换/更改主题的版本?我有3个不同的css文件,我使用razor来决定要包含哪一个,但我希望webpack能够继续这样做,并且更少地依赖razorOk,这与提供的答案不同,将更新它以覆盖您的评论。我已经用主题切换器示例解释了它,但在您的情况下,我更喜欢服务器端解决方案…如果您仍然有问题,您可以创建一个小git repo(MVC解决方案)并对您的问题进行描述,我将看一看。。。