Asp.net mvc 4 按环境呈现css

Asp.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

我想切换到asp.net mvc网站上的webpack,这个网站有3个不同的环境,每个环境都有自己的配色方案(这样人们就知道他们在哪个环境下),所以我需要一种方法来告诉webpack加载哪个css文件以及何时加载,但不确定如何进行

最终结果是:

/asset/styles/style.dev.css

/asset/styles/style.debug.css

/资产/样式/样式.prod.css


更新

例如,您在默认情况下启用了某个主题,并且有一个主题切换器控件(布局页面),该控件使用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解决方案)并对您的问题进行描述,我将看一看。。。