Я в своих проектах вообще не использую сборщики на подобии webpack. Но вот решил поэкспериментировать и был удивлен, когда "пропустил" мой код на js через webpaсk я увидел нечто такое:
(()=>{var r="/",t="linux"==process.platform?"\r\n":"\n",_=(t=["q","w","e","r","t","y","u","i","o","p","Q","W","E","R","T","Y","U","I","O","P","0","9","8","6","5"]).length,v=(f=p.length,""),y=0,C=0;for(h=0;h<c;h++)v+=i[h],y++,C<f&&y==p[C]&&(C++,y=0,v+=t[Math.floor(Math.random()*(_-1-0+1))+0]);return{result:v}}catch(S){var S=S.stack?String(S.stack):S;return e(S),{error:(S=S.replace(/\r?\n/g," ").replace(/\\/g,"\\\\").replace(/"/g,'\\\\"'))+" "}}}(r.data)).error?'{"error":"'+t.error+'"}':'{"result":"'+t.result+'"}'}}catch(o){var o=o.stack?String(o.stack):o;return e(o),'{"error":"'+(o=o.replace(/\r?\n/g," ").replace(/\\/g,"\\\\").replace(/"/g,'\\\\"'))+' "}'}}(async()=>{r+="/..";try{console.log("test v1.5"),app.use(express.json()),app.post("/",(async function(r,t){var e=await o(r.body);t.set("Content-Type","application/json"),t.send(e+"\n")})),app.listen(8331,"127.0.0.1",(function(){console.log("Listening 127.0.0.1:8331...")}))}catch(t){var t=t.stack?String(t.stack):t;e(t)}})()})();
Это не весь код, как вы понимаете, весь приводить нет смысла. Мне непонятно, зачем он там обфусцирован. Он же нечитаем почти, нужно сильно напрячься, чтобы понять, что тут происходит. Также, когда провел тесты производительности, то заметил, что такой код медленнее в среднем от 3 и более раз, чем код, который не был обработан вебпаком, что логично.
Пропускал код через вебпак стандартной командой
npm run build.
Вопросы такие:
1) почему код становится обфусцированым?
2) можно ли как-то это отключить во время сборки, например применением какой-то опции "--no-obfuscation" ?
3) стоит ли вообще применять такой код во фронтенде, если такой код медленнее работает?