Amber Smalltalk - Создание одного файла .js для развертывания. - PullRequest
9 голосов
/ 28 марта 2012

Я видел, как эта тема поднималась пару раз, но я не думаю, что видел окончательное решение вывешенным.

Я пробовал объединить все мои Foo.deploy.js, Bar.deploy.js в один файл .js, а затем включить его в вызов loadAmber (). Это / кажется / работать достаточно хорошо, но большая часть размера загрузки по-прежнему исходит от Янтарные внутренности.

В моем приложении худшие по размеру преступники:

  • 200K - jQuery UI
  • 95K - Ядро-Коллекции
  • 90K - jQuery
  • 87K - Ядро-Объекты
  • 50K - Холст
  • 40K - MyApp
  • 20K - классы ядра

Я тоже не могу многое сказать о размере jQuery UI, но я могу многое сделать с размер ядра Amber и количество HTTP-запросов, необходимых для их извлечения. Единственная проблема в том, что я не могу понять, как сказать Эмбер, чтобы она автоматически не получить Kernel-Objects.deploy.js и т. д.

Кто-нибудь сумел упаковать весь свой Amber Javascript в один .js? файл успешно?

  • R. Тайлер Крой

код: http://github.com/rtyler Болтовня: http://twitter.com/agentdero

Ответы [ 4 ]

6 голосов
/ 05 апреля 2012

Компилятор Amber может сделать совсем немного:

http://github.com/NicolasPetton/amber/blob/master/bin/amberc#L18-90

Следующая команда скомпилирует jQuery и перечисленные пакеты и сгенерирует amber-deploy.js:

./bin/amberc -l js/lib/jQuery/jquery-1.6.4.min,Kernel-Objects.deploy,Kernel-Classes.deploy,Kernel-Methods.deploy,Kernel-Collections.deploy,Kernel-Exceptions.deploy,Canvas.deploy amber-deploy

Обратите внимание на отсутствие пробелов между перечисленными именами файлов.

Также - вы можете скачать компилятор Google Closure http://closure -compiler.googlecode.com / files / compiler-latest.zip и поместите его в свой домашний каталог (~ / compiler.jar), а затем запустите (обратите внимание на параметр -O ):

./bin/amberc -O -l js/lib/jQuery/jquery-1.6.4.min,Kernel-Objects.deploy,Kernel-Classes.deploy,Kernel-Methods.deploy,Kernel-Collections.deploy,Kernel-Exceptions.deploy,Canvas.deploy amber-deploy

Тогда в своем html вы можете простоположить:

<script src='amber-deploy.js'></script>
3 голосов
/ 31 июля 2014

Начиная с Amber 0.13, вы можете использовать оптимизатор RequireJS для создания одного свернутого файла JS, включая ваш собственный код, Amber и все зависимости.

Для загрузки Amber 0.13 alpha :

(sudo) npm -g install amber-cli@~0.13.0  

Ключ - это файл сборки. Все настройки RequireJS, которые использовались непосредственно в index.html, находятся здесь. Например, слегка настроенный app.build.js:

({
    mainConfigFile: "config.js",
    paths: {
        ... skipped items there by default
        'lib/jquery-migrate': 'bower_components/jquery/jquery-migrate'
    },
    "shim": {
        'lib/jquery-migrate': [ 'jquery' ]
    },
    include: [
        'amber/requirejs/require.min',
        'amber/deploy',
        'my-namespace/MyPackage',
        'lib/jquery-migrate'
    ],
    out: "all-in-1.js"
})

Теперь при запуске r.js -o app.build.js будет создан единственный минимизированный JS-файл с именем all-in-1.js, который является единственным файлом, который вам нужно загрузить из index.html

1 голос
/ 15 октября 2014

Янтарная версия 0.13 выпущена

Янтарная версия 0.13 выпущена выпущена .

В этой версии команда

amber init

создает создает средичисло других файлов Gruntfile.js (http://gruntjs.com/).

С

 grunt deploy

в командной строке ваш файл JavaScript с именем the.js изменен и содержит все необходимое для развертывания.

Это означает, что для развертывания вам нужно всего лишь

  • index.html
  • the.js

для помещения в целевой каталог.

the.js содержит только JavaScript. Нет источников Smalltalk.

С

grunt develop

вы переключаетесь обратно в режим разработки. Вы получаете короткую версию the.js

Источник: https://github.com/amber-smalltalk/amber/wiki/Deploying-Amber

1 голос
/ 23 октября 2013

Я полагаю, что заклинание теперь должно быть таким -

./bin/amberc -m Counter st/Examples.st Onefile

... где я создаю один дистрибутив файла для примера "Счетчик" без фактического создания счетчика. Выходным файлом будет «Onefile.js», который содержит необходимые классы ядра янтаря, а также пример класса Counter.

Однако при попытке загрузить Onefile.js я получаю несколько ошибок «Превышен максимальный размер стека вызовов» в консоли JS в Chrome и Safari в MacOSX. Хотя я чувствую, что сценарий «один файл для развертывания» близок к реальности, все еще есть некоторые бородавки, которые нужно вылечить.

Кстати, добавление флага "-O" к вышеупомянутой команде like приведет к тому, что выходной файл будет пропущен через компилятор Google Closure, путь которого, как ожидается, будет в "~ / compiler.jar". т.е. -

./bin/amberc -O -m Counter st/Examples.st Onefile

приведет к минимизированному одиночному выходному файлу JS, и это хорошо.

...