Как я связываю файлы JavaScript в один файл?

Еще один вариант: https://github.com/stefanhaustein/expressionparser

Я применил это, чтобы иметь простой, но гибкий вариант, позволяющий обоим:

Связанный выше TreeBuilder является частью демонстрационного пакета CAS , который выполняет символический вывод. Существует также пример BASIC-интерпретатора , и я начал использовать интерпретатор TypeScript , используя его.

35
задан Ken 19 November 2008 в 11:08
поделиться

6 ответов

Я рекомендую использовать Муравья Apache и Компрессор YUI.

http://ant.apache.org/

http://yui.github.com/yuicompressor/

Помещенный что-то вроде этого в Муравья создает xml. Это создаст два файла, application.js и приложение-min.js.

<target name="concatenate" description="Concatenate all js files">
    <concat destfile="build/application.js">
        <fileset dir="src/js" includes="*.js" />
    </concat>
</target>

<target name="compress" depends="concatenate" description="Compress application.js to application-min.js">
    <apply executable="java" parallel="false">
        <filelist dir="build" files="application.js" />
        <arg line="-jar" />
        <arg path="path/to/yuicompressor-2.4.2.jar" />
        <srcfile />
        <arg line="-o" />
        <mapper type="glob" from="*.js" to="build/*-min.js" />
        <targetfile />
    </apply>
</target>
35
ответ дан Ryan Stein 10 October 2019 в 12:21
поделиться

Для копирования без EOF используют режим двоичного счета:

copy /B *.js compiled.js /Y

, Если получающийся файл все еще имеет EOFs, который, возможно, прибыл из одного из исходных файлов, он может быть зафиксирован этим вариантом:

copy /A *.js compiled.js /B /Y

А удаляет запаздывание EOFs из исходных файлов, если кто-либо и/B предотвращают добавление EOF в получающийся файл. Если EOF не будет в конце, исходный файл будет усеченным в нем. Порядок переключателей важен. Если Вы запишете

copy /A *.js /B compiled.js /Y  

- то EOFs в исходных файлах не будет удален, но все еще заканчивающийся, EOF не будет добавлен.

Попытка это самостоятельно, это - то, где я получаю его. Команды DOS являются странными.

11
ответ дан eugensk00 10 October 2019 в 12:21
поделиться

Можно также сделать:

type *.js > compiled.js
3
ответ дан PhiLho 10 October 2019 в 12:21
поделиться

Я буду второй yuicompressor, но я использую / упаковщика /

http://johannburkard.de/blog/programming/javascript/automate-javascript-compression-with-yui-compressor-and-packer.html

, Это было действительно превосходно для меня.

3
ответ дан annakata 10 October 2019 в 12:21
поделиться

Мы создали механизм, состоящий из следующих частей:

  • minfication (для js и css)
  • агрегирование в пакетах
  • кэширование (http состояние 304 материала)
  • отсылка исходных файлов для в режиме разработки

Это может быть слишком много для Ваших потребностей, но для ответа на вопрос, что делают другие вот то, как это работает:

  1. запрос А входит в, скажем,/css.aspx? package=core
  2. Мы делаем поиск packagename в файле настройки XML (который, например, объявляет, что пакет "ядро" содержит файлы/js/mootools.js и/js/swfobject.js)
  3. Мы проверяем, включена ли минификация. Например, в среде разработки мы не хотим, чтобы уменьшенное js содержание было роздано, но вместо этого пишем исходные файлы. Для js это сделано document.writes сценария, включает, и для css мы пишем правила импорта.
  4. , Если минификация требуется (в производственном ENV) мы делаем проверку на if-modified-since заголовке от запроса. Если у этого клиента уже есть уменьшенное содержание, мы отправляем http заголовок 304. Если клиент действительно требует содержания, мы проверяем, уменьшили ли мы содержание в кэше и подаче это. Иначе мы уменьшаем и отправляем результат.

Все это разбито в отдельных сервисах. Существует сервис кэша, введенный в jsminificationwriter сервисе. Это использует исходный minificationservice, который только заботится о правилах минификации.

то, Что хорошо в этом подходе:

  • Это вынуждает наши группы разработчиков думать в js/css "пакетах" и поэтому правильно разделить функциональность и распределить их по страницам, которые требуют их.
  • Во время разработки Вы отлично в состоянии отладить, получая надлежащие файлы и номера строки.
  • можно поднять трубку любую другую реализацию услуги минификации, такую как YUI и т.д. JsMin был только нашим первым взятием.
  • Это - общий подход, который работает на различные типы контента.

Hope это помогает. Я могу отправить некоторые фрагменты кода для иллюстрирования его больше, если Вам нравится.

4
ответ дан Martin Kool 10 October 2019 в 12:21
поделиться

В asp.net AJAX вы можете использовать тег 'CompositeScript'. Это скомбинирует все ваши скрипты в 1 большой файл js, сэкономив пропускную способность за счет уменьшения количества http 304 и, возможно, http 401.

Пример:

 <asp:ScriptManager ID="ScriptManager1" runat="server">
        <CompositeScript>
            <Scripts>
                <asp:ScriptReference Path="~/Scripts/Script1.js" />
                <asp:ScriptReference Path="~/Scripts/Script2.js" />
                <asp:ScriptReference Path="~/Scripts/Script3.js" />
            </Scripts>
        </CompositeScript>
    </asp:ScriptManager>

Для получения дополнительной информации см. Здесь: http://msdn.microsoft.com/en-us/library/cc488552.aspx

6
ответ дан 27 November 2019 в 06:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: