Как я могу скомпилировать CoffeeScript с .NET?

Я хочу написать HttpHandler, который компилирует код CoffeeScript "на лету" и отправляет полученный код JavaScript. Я пробовал MS [JScript] [1] и IronJS без успеха. Я не хочу использовать [Rhino] [2], потому что зависимость Java будет слишком сложной для распространения.

Как скомпилировать CoffeeScript из .NET?

Ответ 1

CoffeeScript-dotnet

Инструмент командной строки для компиляции CoffeeScript. Включает наблюдателя файловой системы для автоматической перекомпиляции CoffeeScripts, когда они меняются. Примерно эквивалентен пакету для кофе script node для linux/mac.

CoffeeSharp

Включает инструмент командной строки, подобный CoffeeScript-dotnet, а также обработчик http, который компилирует CoffeeScripts по запросу с сайта asp.net.

SassAndCoffeeScript

Библиотека для Asp.net mvc, которая компилирует файлы sass и coffeescript по запросу. Также поддерживает минимизацию и комбинацию.

Вручную компилировать с помощью IronJS

IronJS - это интерпретатор .NET javascript, который может успешно загружать компилятор CoffeeScript и компилировать CoffeeScript.

Вручную компилировать с помощью Node.js

Получите node двоичные файлы и добавьте каталог bin в свой путь. Напишите node.js script, чтобы загрузить компилятор CoffeeScript и ваши файлы CoffeeScript и сохранить скомпилированный javascript.

Ответ 3

Вы специально сказали, что хотите написать компилятор времени выполнения, так что это может быть не совсем то, что вы ищете, но если основной момент заключается в том, чтобы создать способ генерации результата javascript, Mindscape Web Workbench интересен. Это бесплатное расширение для Visual Studio.NET 2010 и доступно в диспетчере расширений. Это дает Intellisense, подсветку синтаксиса и компиляцию JS при написании. Я только начинаю использовать его, но выглядит многообещающим. Скотт Гензельман рассказывает об этом здесь. Он также поддерживает LESS и Sass.

Ответ 4

Мне удалось скомпилировать CoffeeScript с .NET с помощью IKVM, jcoffeescript и Rhino. Это было просто, за исключением того, что конструктор JCoffeeScriptCompiler с перегрузкой без параметров не работал. Он работал нормально с параметром java.util.Collections.EMPTY_LIST в качестве параметра.

Вот как я это сделал:

  • Загрузите IKVM, jcoffeescript и Rhino.
  • Запустите ikvmc против js.jar, создав js.dll.
  • Запустите ikvmc против jcoffeescript jar.
  • Добавьте ссылку на dll jcoffeescript в Visual Studio. Может потребоваться больше ссылок, но вы будете предупреждены об этом.
  • Запустите новый код org.jcoffeescript.JCoffeeScriptCompiler(java.util.Collections.EMPTY_LIST).compile() в вашем коде.

Следующим шагом будет создание задачи сборки и/или обработчика HTTP.

Ответ 5

Просмотрите новый проект coffeescript-dotnet, в котором используется Jurassic реализация JavaScript.

Ответ 6

Так как компилятор CoffeeScript теперь работает в Internet Explorer, после нескольких недавних настроек, должно быть хорошо пойти и в других MS-вариантах JavaScript. Попробуйте включить extras/coffee-script.js из последней версии, и вам должно быть хорошо идти с CoffeeScript.compile(code).

Ответ 7

У меня нет прямого ответа (надеюсь, вы его найдете), но, возможно, взгляните на следующее, чтобы посмотреть, как это можно сделать.

Ответ 8

Я попробовал запустить пакет extras/coffee-script.js через Windows Script Host (или просто wscript) и не сообщал о каких-либо проблемах. Затем я добавил эту строку:

WScript.Echo(CoffeeScript.compile('a: 1'));

в конце файла и снова запустите его wscript, и он правильно напечатал полученный JavaScript.

Используете ли вы объекты COM? Можете ли вы поделиться еще одним кодом, ответственным за инициализацию ссылки на объект MScript?

Ответ 9

CoffeeScript в Visual Studio 2010

Это Chirpy fork (chirpy - инструмент для измельчения, минификсации и проверки файлов javascript, stylesheet и dotless)

"Хорошо, я думаю, что я работал над своей вилкой, основываясь главным образом на работе других людей. Проверьте это: http://chirpy.codeplex.com/SourceControl/network/Forks/Domenic/CoffeeScriptFixes"

из http://chirpy.codeplex.com/workitem/48

Ответ 11

Мой главный редактор - VS 2010, и мне нравится расширение WorkBench. это приятно, что он автоматически компилируется в js каждый раз, когда вы нажимаете save на вашем файле .coffee, также вводит вас в SASS, о котором я читал, но так и не обходился.

Они предлагают платную версию, которая будет автоматически сжимать/уменьшать ваши файлы js и css, так как ваши файлы и .scss все равно являются вашими исходными файлами.

Я бы посоветовал всем пользователям VS пойти и установить это, особенно если вы запустите VS 2010.

Единственный стук, и кто-то, пожалуйста, поправьте меня или просветите меня, это то, что с синтаксисом. coffee он не выделяет способ сказать html, js, С# code is. это может быть потому, что я использую цветовую схему от http://studiostyl.es/ и для записи http://studiostyl.es/schemes/coffee- просто разделяет имя кофе без специальной поддержки синтаксиса для coffeescript, о котором я знаю. но никаких оснований не начинать использовать рабочий сайт addin сегодня!

Хорошо, что сайт веб-сайта на рабочем столе: подсветка синтаксиса, так что, возможно, это студия. Я выбрал.

Ответ 12

Я знаю, что это старо, но я пришел сюда, чтобы ответить на очень похожий вопрос: как мне получить мой CoffeeScript для компиляции с помощью Visual Studio 2012 Express? Обратите внимание, что бесплатная версия Express не позволяет никаких расширений, поэтому я не мог продолжать использовать расширение Mindscape Workbench, которое хорошо отработало меня в течение некоторого времени.

Это оказывается очень легко. Просто используйте NuGet для установки пакета Jurassic-Coffee и от него.

Одним из преимуществ использования этого пакета над workmench mindscape является то, что вы можете ссылаться на свой кофе непосредственно из тегов script в html. Он минимизирует и кэширует скомпилированную JS, поэтому вы выполняете работу только в том случае, если файл запрошенного кофе изменился.

<head>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script src="home.coffee"></script>
</head>

Workbench для mindscape позволяет объединять разные файлы coffescript, что очень удобно для модуляции вашего coffeescript. Вы также можете сделать это с помощью Jurassic Coffee, используя инструкцию #= require, чтобы включить другие файлы модуля кофе, например:

#= require Classes\GridWrapper.coffee
class UsersGrid
  constructor:->
     @grid = new GridWrapper()

Я думаю, что наличие #= require staement в файле кофе на самом деле чище и яснее, чем подход workbench для mindscape, который скрывает все это за их интерфейсом, поэтому вы легко забываете, какие у вас есть зависимости.

Примечание Существует одна потенциальная возможность. Установщик Nuget добавит запись httphandler в ваш web.config, который может быть несовместим с интегрированным режимом управляемого конвейера IIS Express.

Таким образом, вы можете увидеть следующую ошибку:

Обнаружена установка ASP.NET, которая не применяется в Integrated режим управляемого трубопровода.

Чтобы исправить это, просто удалите обработчик, показанный ниже.

<system.web>
  //other stuff

  <httpHandlers>
    <add type="JurassicCoffee.Web.JurassicCoffeeHttpHandler,JurassicCoffee" validate="false" path="*.coffee" verb="*" />
  </httpHandlers>

</system.web>

Ответ 13

Вы можете просто написать порт его на С#. Я портировал Jison на С# (который является базовым проектом, который запускает CoffeeScript). Я бы подумал, что это может быть немного иначе, но оба парсера Jison работают одинаково.

Я не тянул его обратно назад к главной архитектуре Jison, но скоро это сделаю.

https://github.com/robertleeplummerjr

Ответ 15

Я попытался скомпилировать файл extras/ coffee-script.js, немодифицированный, в jsc, компилятор JScript.NET. NET, и у меня появилось много ошибок. Вот заслуживающие внимания:

  • 'require' - новое зарезервированное слово и не должно использоваться как идентификатор
  • 'обеспечить' - это новое зарезервированное слово и не должно использоваться как идентификатор
  • Объекты типа "Глобальный объект" не имеют такого члена

Другие ошибки были вызваны вышеупомянутыми ошибками.

Ответ 16

Возможно, вы также захотите проверить юрский кофе, он также является компилятором coffee- script, работающим с исходным компилятором в юрском языке.

В нем есть стиль звездочки "# = require file.coffee" или "# = require file.js", который может использоваться для хранения файлов. coffee, модульных и комбинированных непосредственно перед компиляцией, а также для встраивания файлов .js.

Он поддерживает HttpHandler с файловыми наблюдателями для файлов .js и. coffee, которые отслеживают, какие файлы. coffee нужно перекомпилировать и передать в скомпилированные *.js файлы для остальных.

jurassic-coffee также доступен как пакет Nuget

https://github.com/creamdog/JurassicCoffee

Ответ 18

Я написал интерактивную оболочку с помощью v8.

https://github.com/mattn/coffee-script-v8

Работает как один исполняемый файл. (Не используйте внешние файлы) Он не может использовать require(). Но достаточно, чтобы изучить coffeescript.