Я видел много предложений о том, как нужно динамически добавлять код, например: (источник) :
var myScript = document.createElement("script");
myScript.setAttribute("type","text/javascript");
myScript.innerHTML += 'alert("Hello");';
document.body.appendChild(myScript);
В отличие от eval
, например,
eval('alert("Hello");');
Люди жалуются на снижение производительности и проблемы безопасности с eval
, но я не могу представить, как добавление тегов <script>
будет быстрее или безопаснее.
РЕДАКТИРОВАТЬ люди хотели бы знать, почему я оцениваю нечто столь же тривиальное, как alert("Hello")
, вот почему:
У меня есть база данных, позволяетскажем, 1,000,000,000,000 сценариев = P, очевидно, я не могу загрузить каждый, вместо этого пользователь может загружать все, что пожелает.Скрипты хранятся на стороне сервера в произвольных местах.В настоящее время я запрашиваю (xmlhttprequest, интерпретируемый как javascript) скрипт через его имя скрипта, и сервер найдет его (каким-то образом) и вернет его в виде текста, который сразу же будет выполнен / интерпретирован.Я хочу знать, будет ли лучше вернуть скрипт в виде текста, а затем создать из него тег <script>
.
Кроме того, это НЕ дубликат Разница в JavaScript между eval () и добавлением тегов сценария , которая касается функциональных различий, здесь я хочу различия в производительности и безопасности.