Это не так просто сделать, но есть сценарий, который может вам помочь. Я обычно использую FileSaver.js , чтобы сделать это, это с открытым исходным кодом. FileSaver помогает решить проблемы несовместимости браузера, он также хорошо протестирован.
Вот фрагмент кода, который я поднял из моего текущего проекта. Это простой javascript и не требует jQuery или чего-либо еще.
В этом примере имя файла жестко закодировано как «my_excel_file.xlsx», но вы можете получить имя файла из API, если выставите правильный заголовок из API. Я думаю, что ответил, как справиться с этим где-то в SO.
Ключевой концепцией LLVM является низкоуровневое «промежуточное» представление (IR) вашей программы. Этот IR находится примерно на уровне кода ассемблера, но он содержит больше информации для облегчения оптимизации.
Сила LLVM заключается в его способности откладывать компиляцию этого промежуточного представления на конкретную целевую машину до тех пор, пока код не должен быть запустить. Подход JIT-компиляции может использоваться для того, чтобы приложение создавало код, который ему нужен, непосредственно перед тем, как он ему понадобится.
Во многих случаях во время выполнения программы у вас есть больше информации, чем у вас. обратно в головной офис, так что программа может быть значительно оптимизирована.
Для начала вы можете скомпилировать программу на C ++ в одно промежуточное представление, а затем скомпилировать ее для нескольких платформ из этого IR.
Вы также можете попробовать Демо-версия Kaleidoscope, которая проведет вас через создание нового языка без необходимости писать компилятор,
Почему бы вам не зайти на сайт LLVM и не ознакомиться со всей документацией. Они очень подробно объясняют, что такое LLVM и как его использовать. Например, у них есть страница Начало работы .
LLVM - это, как следует из названия, виртуальная машина низкого уровня с генератором кода. Если вы хотите скомпилировать его, вы можете использовать либо интерфейс gcc, либо clang , который является компилятором c / c ++ для LLVM, работа над которым все еще продолжается.