Как использовать разные выходные данные JS для разных страниц?

Допустим, у меня есть две страницы, которые имеют много общего кода, много библиотек и т. д., но имеют некоторые различия. Для конкретного примера я включаю jQuery, и на каждой странице есть разные функции «документ готов» (он же $(function() { ... })).

С JS это было бы легко. Я бы включил jQuery на каждую страницу и поместил бы разные части <script> на каждой странице или включил бы script-behind-page-A.js в pageA.html и script-behing-page-B.js в pageB.html.

Как мне добиться того же результата с ClojureScript?

Я подозреваю, что выходные данные компиляции настолько велики, что лучше иметь один большой шар JavaScript, испускаемый компилятором. В этом случае у него явно не может быть двух разных функций «готовности документа».

Предлагается ли сделать так, чтобы код состоял в основном из функций, которые позволяют вам что-то делать, инициализировать несколько переменных состояния и инициализировать каждую страницу отдельно с помощью простого JS по мере необходимости?


person Konrad Garus    schedule 09.03.2013    source источник


Ответы (1)


Я думаю, что рекомендуемым подходом будет то, что объяснено в этом руководстве по ClojureScript от Mimmo Cosenza:

  • Создайте один большой выходной файл JS (чтобы вы оптимизировали/упаковали его, когда он будет запущен)
  • Используйте разные пространства имен для функций, убедитесь, что вы экспортируете по крайней мере одну "точку входа" для каждой страницы.
  • В каждом файле HTML вызовите желаемую «функцию точки входа», например:

    <!-- on the bottom of welcome.html -->
    <script src="js/output.js"></script>
    <script>myapp.welcome.init();</script>
    
    <!-- on the bottom of login.html -->
    <script src="js/output.js"></script>
    <script>myapp.login.init();</script>
    

Это подробно объясняется в части 6 руководства< /а>.

person Denis Fuenzalida    schedule 14.03.2013