惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Jina AI
Jina AI
V
Visual Studio Blog
博客园 - 司徒正美
TaoSecurity Blog
TaoSecurity Blog
博客园 - 聂微东
IT之家
IT之家
博客园_首页
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
Cyber Attacks, Cyber Crime and Cyber Security
博客园 - Franky
雷峰网
雷峰网
罗磊的独立博客
S
Schneier on Security
C
Cybersecurity and Infrastructure Security Agency CISA
The Cloudflare Blog
T
Tailwind CSS Blog
B
Blog RSS Feed
H
Help Net Security
T
The Blog of Author Tim Ferriss
C
CXSECURITY Database RSS Feed - CXSecurity.com
T
Threatpost
C
CERT Recently Published Vulnerability Notes
博客园 - 三生石上(FineUI控件)
P
Palo Alto Networks Blog
I
Intezer
G
GRAHAM CLULEY
Engineering at Meta
Engineering at Meta
S
Securelist
J
Java Code Geeks
V
V2EX
Y
Y Combinator Blog
Simon Willison's Weblog
Simon Willison's Weblog
L
LINUX DO - 热门话题
云风的 BLOG
云风的 BLOG
Spread Privacy
Spread Privacy
MongoDB | Blog
MongoDB | Blog
P
Privacy International News Feed
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
B
Blog
Forbes - Security
Forbes - Security
Google Online Security Blog
Google Online Security Blog
Help Net Security
Help Net Security
S
SegmentFault 最新的问题
N
Netflix TechBlog - Medium
Webroot Blog
Webroot Blog
Microsoft Security Blog
Microsoft Security Blog
SecWiki News
SecWiki News
Scott Helme
Scott Helme
aimingoo的专栏
aimingoo的专栏
N
News and Events Feed by Topic

博客园 - AI一族

GitHub 热门项目 | 2026年04月26日 GitHub 热门项目 | 2026年04月25日 GitHub 热门项目 | 2026年04月19日 GitHub 热门项目 | 2026年04月18日 GitHub 热门项目 | 2026年04月17日 GitHub 热门项目 | 2026年04月16日 GitHub 热门项目 | 2026年04月15日 GitHub 热门 | 2026 年 04 月 14 日 Github日报|2026年04月13日 GitHub 热门项目 | 2026年04月12日 GitHub 热门项目 | 2026年04月10日 ClawHub 24 小时热门 Top 10 | 2026 年 04 月 09 日 GitHub 热门项目 | 2026-04-09 ClawHub 精选 Skill | 2026 年 04 月 08 日 GitHub 热门项目 Top 10 | 2026 年 04 月 08 日 AI 资讯日报 | 2026 年 04 月 08 日 AI 资讯日报 | 2026年04月07日 GitHub 热门项目 Top 10 | 2026年04月07日 GitHub 热门项目 Top 10 | 2026 年 04 月 05 日 ASP.NET Core WebApi 集成 MCP 协议完全指南 Net8 使用BouncyCastle 生成自签名证书 Docker容器获取宿主机信息 Centos7 上安装配置 RabbitMQ
VUE 条件编译
AI一族 · 2021-06-18 · via 博客园 - AI一族

       —般情况下,C语言源程序中的每一行代码.都要参加编译。但有时候出于对程序代码优化的考虑.希望只对其中一部分内容进行编译.此时就需要在程序中加上条件,让编译器只对满足条件的代码进行编译,将不满足条件的代码舍弃,这就是条件编译(conditional compile)。 

                                                                                                                                                                                                                                                                                                                                                                         ----摘自百度百科

    条件编译对于后端程序猿来说可能都比较熟悉,那么VUE项目可以条件编译么? 答案是肯定的。 今天就把自己花了不少工夫的结论整理出来,供有需要的朋友参考。

               VUE项目要实现条件编译需要三个基本的步骤   1 前置条件    2 配置   3 使用

                前置条件

                      2个插件

js-conditional-compile-loader
      一个条件编译的webpack loader, 支持按条件构建各种代码文件,如js、ts、vue、css、scss、html等。
cross-env
     运行跨平台设置和使用环境变量的脚本。

安装插件
npm i -D js-conditional-compile-loader
npm i -D cross-env

        配置

                  vue.config.js

let timestamp = new Date().getTime(); //当前时间为了防止打包缓存不刷新,所以给每个js文件都加一个时间戳
// vue.config.js
module.exports = {
  //设置输出目录
  outputDir: process.env.ENV_CONFIG === "public" ? "distPublic" : "distPrivate",

  // 对webpack的设置,该对象将会被 webpack-merge 合并入最终的 webpack 配置。
  configureWebpack: {
    output: {
      filename: `js/[name].${timestamp}.js`, // 每次构建打包时给文件名加上时间戳,确保每次版本更新的文件名不一样
      chunkFilename: `js/[name].${timestamp}.js`,
    },
  },

  //更细粒度的控制其loader内部配置
  chainWebpack: (config) => {
    let vueRule = config.module.rule('vue')
    vueRule
      .use("js-conditional-compile-loader")
      .loader("js-conditional-compile-loader")
      .tap(() => {
        return {
          // isDebug: process.env.NODE_ENV === "development", // optional, this expression is default   development  production
          public: process.env.ENV_CONFIG === "public", // any prop name you want, used for /* IFTRUE_public ...js code... FITRUE_public */
        };
      })
      .end();
  },
};

          package.json 

"scripts": {
    "serve": "cross-env ENV_CONFIG=public vue-cli-service serve",
    "build-public": "cross-env ENV_CONFIG=public vue-cli-service build",
    "build-private": "cross-env ENV_CONFIG=private vue-cli-service build",
    "lint": "vue-cli-service lint
 }

   使用

<template>
  <div class="hello">
    /*IFTRUE_public*/
    <div class="public">公有云</div>
    /*FITRUE_public*/

    <div class="public private">私有云</div>
  </div>
</template>

<script>
export default {
  mounted() {
    /*IFTRUE_public*/
    console.log(1111111);
    /*FITRUE_public*/

    console.log(2222222222);
  },
};
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
/*IFTRUE_public*/
.public {
  color: red;
} /*FITRUE_public*/

.private {
  font-size: 40px;
}
</style>