Внешние статические ресурсы

Введение

Основные статические ресурсы для web-приложения располагаются внутри модулей. Однако существует необходимость иметь в приложении внешние ресурсы, зачастую сгенерированные. Например, это может быть проект, собранный webpack.

Конечно, такие ресурсы можно монтировать в виртуальную файловую систему (подробности) в ручную. Однако тогда следует учитывать, что эти файлы должны быть доступны и в режиме разработки и в product-режиме. И для этого нужно предпринимать определенные шаги. Как минимум - копировать эти файлы в дистрибутив и настраивать приложение таким образом, что бы это файлы были доступны ему.

Для облегчения этой задачи в файле project.jc проекта можно указать, какие ресурсы и куда подключать. Они будут доступны в режиме разработки. При сборке продукта - они так же соберутся и будут помещены в продукт.

Настройка project.jc

Пример:

import jandcode.core.web.jc.*
import jandcode.jc.*

class Project1 extends ProjectScript {

    void onInclude() {

        // .....

        include(WebRootProject).with {
            // подключаем каталог ./frontend/_gen к проекту
            // в виртуальную папку "app", т.е. все в каталоге ./frontend/_gen
            // будет доступно в приложении по адресу http://HOST/app
            addResourceWebroot("./frontend/_gen", "app")

            // подключаем каталог ./frontend/public к проекту
            // в корневую виртуальную папку, т.е. все в каталоге ./frontend/public
            // будет доступно в приложении по адресу http://HOST/
            addResourceWebroot("./frontend/public")
        }

    }
}

После этой настройки, в момент выполнения команды jc prepare, в файл _app.cfx будут внесены изменения, который подключат эти каталоги в виртуальную файловую систему. Эти файлы будут доступны напрямую в режиме разработки.

При сборке продукта будет собран файл web-resource-webroot.jar, в который будут включены все указанные ресурсы. Этот файл будет помещен в продукт и ресурсы будут доступны в собранном приложении.