Здравствуйте, Alekzander, Вы писали:
A>Здравствуйте, bnk, Вы писали:
A>>>Однако, выходит, если хочешь при разработке иметь удобства модульности (ремаппинги, например, для тестовых билдов), то обязан качать все ресурсы с сервера. Это заговор злых корпораций?
bnk>>Вообще это сделано чтобы javascript не мог читать локальные файлы, если он вдруг это захочет. И это IMHO есть хорошо.
A>Javascript при импорте модулей может читать только код, и только куски, помеченные на экспорт. И чтобы он выполнился, на него надо сослаться в разметке (в <script>'е или опосредованно — подменой в карте импорта). Если ты можешь в разметке создавать <script>'ы, ты можешь с тем же успехом подтянуть любой js-файл. Но только не страшный js-файл, оформленный как модуль! Хотя модули даже чуточку безопаснее, из-за запрета на некоторые трюки в strict'е. В этом и вопрос, где тут логика. Логика, ау! Нет тебя, и бога нет. На головы корпораций зла.
Не лучше блокировать опасности сразу на входе?
Для доступа к локальным файлам есть JavaScript API — File system API, которое позволяет нормально явно запросить доступ к файлам или папкам у пользователя, а потом их писать-читать (в пределах разрешенной папки) через File API
См. например как работает VS Code в браузере (
https://vscode.dev/)
bnk>>Для оффлайн-приложений (которые не требуют интернета) есть стандартное решение — PWA/web workers, можно все хранить в кэше браузера,
bnk>>хоть десятки гигабайтов (увидел тут недавно — народ LLM хранит, лол — образы виртуалок, по сути)
A>Извращенцы. Есть золотой стандарт — файлы, поддерживаются везде, но нет, надо залезть к чёрту в зубы, привязаться к кэшу браузера. Ссаных npm-зумеров хлебом не корми, дай продуктовый пайплайн завязать на как можно большее число сторонних решений.
Вовсе нет, IMHO крутейшая вещь. Получаешь что можно запускать штуки типа ChatGPT (ну попроще конечно, опенсорсные Llama например 4GB) или Stable Diffusion (websd) без привязки к сторонним сервисам, прямо в браузере (отключенном от интернета)
По сути же можно запускать скачанную "виртуалку" прямо в браузере (WebGPU, WebNN). Браузер постепенно превращается в операционку.
демка
https://chat.webllm.ai/
bnk>>Для встраиваемых браузеров (типа electron или edge web view) это отключается через параметры.
bnk>>Также у всех браузеров есть ключ настройки, позволяющий блокировку file:/// отключить (для FF была кнопка-плагин AFAIR)
A>А вот это уже тема. Спасибо! Действительно, должно же это поведение отключаться.
Это какой-то ключ командной строке запуска браузера, насколько я помню.
Возможно есть в
chrome://flags
bnk>>В самом тупом случае разработки удобно пользоваться live-server (встроенный в vs code)
A>В продакшене?
Ну зависит от того что нужно. Я если честно твою цель не очень понял?