uni-app 自定义编译模块基准平台设置为H5后 条件编译h5会进入
uni-app 自定义编译模块基准平台设置为H5后 条件编译h5会进入
示例代码:
"uni-app": {
"scripts": {
"pc-platform": {
"title": "pc平台",
"BROWSER": "Chrome",
"env": {
"UNI_PLATFORM": "h5"
},
"define": {
"PC-WEB": true
}
}
}
}
操作步骤:
//#ifdef PC-WEB 此处进入 // #endif
//#ifdef H5 这里还会进入一次,应该不进入才对 // #endif
## 预期结果:
//#ifdef PC-WEB
此处进入
// #endif
//#ifdef H5
这里还会进入一次,应该不进入才对
// #endif
实际结果:
//#ifdef PC-WEB 此处进入 // #endif
//#ifdef H5 这里还会进入一次,应该不进入才对 // #endif
## bug描述:
//#ifdef PC-WEB
此处进入
// #endif
//#ifdef H5
这里还会进入一次,应该不进入才对
// #endif
信息类别 | 信息内容 |
---|---|
产品分类 | uniapp/H5 |
PC开发环境 | Mac |
PC开发环境版本 | 10.14.6 (18G3020) |
HBuilderX类型 | 正式 |
HBuilderX版本 | 2.8.4 |
浏览器平台 | Chrome |
浏览器版本 | 83.0.4103.116(正式版本) (64 位) |
项目创建方式 | HBuilderX |
更多关于uni-app 自定义编译模块基准平台设置为H5后 条件编译h5会进入的实战教程也可以访问 https://www.itying.com/category-93-b0.html
没毛病,H5 相当于是父类,会进入
更多关于uni-app 自定义编译模块基准平台设置为H5后 条件编译h5会进入的实战教程也可以访问 https://www.itying.com/category-93-b0.html
如果这样的话会不会就违背了平台条件编译的原意?既然是自定义了平台,那理应就是区分出来,那//#if等对自定义平台就没有意义了呢?不知道我这么理解对不对
回复 紫洋: 非也,就好比中国男人也属于中国人。
回复 紫洋: 而与#ifdef PC-WEB相反的不是#ifdef H5而是#ifndef PC-WEB
回复 DCloud_UNI_GSQ: 你确定你这种理解OK?大致都能猜到内部基于h5底层做了相应判断实现而已,外围自定义不好去做具体区分而已不就结了,你自己看看你自己说的能说得过去么。实质不是真的能自定义平台,自定义平台是有一定区分的。当然,只是可以变相去实现条件编译判断而已。服你的辩解
会不会是因为pc可以开H5模式, 所以H5也生效, 但是你不打开开发者模式, 就不生效?
这是一个关于uni-app条件编译的问题。当自定义编译模式设置UNI_PLATFORM为h5时,H5平台的条件编译仍然会生效,这是预期的行为。
原因分析:
- UNI_PLATFORM=h5和自定义的PC-WEB定义是同时存在的
- 条件编译#ifdef H5是基于UNI_PLATFORM判断的,所以会进入
- PC-WEB是自定义的define变量,两者是独立的
解决方案:
- 如果需要区分PC-WEB和普通H5,建议修改条件编译判断逻辑:
//#ifdef H5 && PC-WEB
PC端专属代码
//#endif
//#ifdef H5 && !PC-WEB
普通H5代码
//#endif