如何开发Webpack自定义Loader处理Vue SFC的template块?
Vue SFC模板块编译阶段条件编译问题
核心需求:希望在Webpack编译阶段处理Vue单文件组件(SFC)的template块,基于环境变量移除部分内容实现条件编译。虽然会略微延长编译时间,但能有效减小输出文件体积,还可针对不同部署环境用不同环境变量校验条件。
当前问题:尝试用自定义Loader处理template块,但配置后无法生效。使用<test></test>这类自定义块时,Loader能正常打印块内容,但处理template块时完全没反应。自定义Loader代码和Webpack配置如下:
// custom-loader.js module.exports = function customLoader(source, map) { console.log(source); console.log('================='); return source; }
// Webpack配置片段 module: { rules: [ { resourceQuery: /blockType=template/, loader: require.resolve('./path/to/custom-loader.js'), } ] }
为什么不选择v-if:编译时检查始终更优——用v-if的话,需要移除的模板部分仍会被打包进最终输出,导致文件体积增大;还得把条件值加入SFC的props或data中;而且Vue生命周期内会持续执行检查,但这些内容本来就不会被展示,完全没必要。
内容的提问来源于stack exchange,提问作者fudo
相关产品推荐
相关产品推荐

