Как я могу скомпилировать 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.
Ответ 2
CoffeeScript теперь полностью поддерживается Chirpy:
http://chirpy.codeplex.com/
Ответ 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
Ответ 10
IronJS теперь поддерживает CoffeeScript и, как правило, быстрее других двигателей .NET JS:
У меня есть сообщение в блоге о подключении двух вместе:
http://otac0n.com/blog/2011/06/29/CoffeeDemo-A-Simple-Demo-Of-IronJS-Using-CoffeeScript.aspx
Ответ 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
Ответ 14
Вместо того, чтобы обходить CScript, вы можете выполнить команду Node.js(здесь автономные двоичные файлы Windows)
Ответ 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
Ответ 17
Я сделал HttpHandler, который использует Windows Script Host за кулисами: https://github.com/duncansmart/LessCoffee и отлично работает (он также компилирует *. less файлы.)
Это на NuGet: http://nuget.org/List/Packages/LessCoffee
Он основан на этой простой оболочке: https://github.com/duncansmart/coffeescript-windows
Ответ 18
Я написал интерактивную оболочку с помощью v8.
https://github.com/mattn/coffee-script-v8
Работает как один исполняемый файл. (Не используйте внешние файлы)
Он не может использовать require(). Но достаточно, чтобы изучить coffeescript.