uni-app ext.json文件中写条件编译的代码无效。

uni-app ext.json文件中写条件编译的代码无效。

示例代码:

代码见bug描述中的截图

操作步骤:

在hbuilder中ext.json文件中编写条件编译的代码。然后在微信开发者工具和抖音开发者工具中分别查看ext.json文件。

预期结果:

按写的条件编译分别生成各个平台代码

实际结果:

各个平台的代码都一样

bug描述:

ext.json文件中写条件编译的代码无效。

hbuilder

微信开发者工具

抖音开发者工具


更多关于uni-app ext.json文件中写条件编译的代码无效。的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app ext.json文件中写条件编译的代码无效。的实战教程也可以访问 https://www.itying.com/category-93-b0.html


uni-app 中,ext.json 文件通常用于配置小程序的扩展功能或自定义组件等。条件编译是 uni-app 中常用的功能,但条件编译的代码通常是写在 .vue 文件或 .js 文件中,而不是在 ext.json 文件中。

如果你希望在 ext.json 文件中根据不同的平台或环境进行条件配置,ext.json 本身并不支持直接的条件编译语法。不过,你可以通过以下几种方式来实现类似的效果:

1. 在 pages.jsonmanifest.json 中使用条件编译

uni-app 支持在 pages.jsonmanifest.json 中使用条件编译。你可以在这些文件中使用 #ifdef#ifndef 来根据平台或环境进行条件配置。

例如,在 pages.json 中:

{
  "pages": [
    {
      "path": "pages/index/index",
      "style": {
        "navigationBarTitleText": "首页"
      }
    },
    // #ifdef MP-WEIXIN
    {
      "path": "pages/wechat/wechat",
      "style": {
        "navigationBarTitleText": "微信小程序"
      }
    },
    // #endif
    // #ifdef H5
    {
      "path": "pages/h5/h5",
      "style": {
        "navigationBarTitleText": "H5页面"
      }
    }
    // #endif
  ]
}

2. 动态生成 ext.json

如果你确实需要在 ext.json 中根据不同的平台或环境进行配置,可以通过在构建过程中动态生成 ext.json 文件。你可以使用脚本来根据不同的条件生成不同的 ext.json 文件。

例如,使用 Node.js 脚本:

const fs = require('fs');
const path = require('path');

const platform = process.env.UNI_PLATFORM; // 获取当前平台

let extConfig = {};

if (platform === 'mp-weixin') {
  extConfig = {
    // 微信小程序特定的配置
  };
} else if (platform === 'h5') {
  extConfig = {
    // H5 特定的配置
  };
}

fs.writeFileSync(path.resolve(__dirname, 'ext.json'), JSON.stringify(extConfig, null, 2));

然后在 package.json 中添加脚本:

{
  "scripts": {
    "build:mp-weixin": "UNI_PLATFORM=mp-weixin node generateExtJson.js && uni build -p mp-weixin",
    "build:h5": "UNI_PLATFORM=h5 node generateExtJson.js && uni build -p h5"
  }
}

3. 使用 uni-appprocess.env 变量

你可以在代码中使用 process.env.UNI_PLATFORM 来判断当前平台,然后根据不同的平台动态设置配置。

例如:

const platform = process.env.UNI_PLATFORM;

if (platform === 'mp-weixin') {
  // 微信小程序特定的逻辑
} else if (platform === 'h5') {
  // H5 特定的逻辑
}
回到顶部