Я хочу использовать clojurescript для записи хром-расширений.Можно ли использовать Clojurescript или Google Closure для написания расширений Chrome или веб-приложения?
ответ
Расширения Chrome, как правило, сделаны с использованием HTML/CSS/JS, поэтому ClojureScript должен работать нормально, потому что он компилируется на JavaScript. Это, как говорится, я не думаю, что кто-то на самом деле построил большое расширение с ClojureScript. В качестве доказательства концепции здесь приводится общая схема того, как сделать простое расширение оповещения, которое скажет Zaboomafoo (извините за это имя):
Сначала установите Leiningen и lein-cljsbuild. Прочтите документы для lein-cljsbuild и посмотрите wiki on ClojureScript, чтобы понять, как использовать lein-cljsbuild для проектов и компиляции.
Создайте файл ClojureScript, который отображает предупреждение о том, "Zaboomafoo", как это:
(ns Zaboomafoo.hello)
(js/alert "Zaboomafoo")
Compile это с lein cljsbuild
, чтобы получить файл JavaScript. Затем добавьте основной файл HTML и manifest.json для расширения.
Zaboomafoo.html:
<!Doctype html>
<html>
<head>
<title>Zaboomafoo!</title>
</head>
<body>
<script type="text/javascript" src="Zaboomafoo.js"></script>
</body>
</html>
manifest.json:
{
"name": "Displays Zaboomafoo when opening a new tab",
"version": "0.1",
"incognito": "split",
"chrome_url_overrides": {
"newtab": "Zaboomafoo.html"
},
"manifest_version": 2
}
Поместите новый manifest.json, Zaboomafoo.html и Zaboomafoo.js в папку где-то очевидное. Наконец, перейдите на страницу расширения Chrome, включите режим разработчика, загрузите распакованное расширение и откройте новую вкладку. Расширение должно загружать предупреждение, которое досадно говорит «Zaboomafoo», когда вы открываете вкладку. Надеемся, что расширение браузера станет немного более популярным, но это общий поток.
Посмотрите на this расширение chrome, написанное в cljs, которое позволяет вам использовать код eval clojure в браузере путем выбора в качестве примера.
Я начал проект this с целью написания расширения Chrome с использованием ClojureScript.
В то время как ответ greenyouse
дает вам общие указания, как новичок в ClojureScript. У меня возникли проблемы с использованием lein
и cljsbuild
, и я решил сначала перейти к базовой настройке. Может быть, это поможет кому-то.
Sidenote: Я планирую перенести свой проект на lein
и cljsbuild
после того, как я понял вещи лучше. В этот момент я обновлю этот ответ.
Я только что выпустил простой пример проект расширения Chrome вместе с некоторой документацией: https://github.com/binaryage/chromex-sample
Он использует CHROMEX библиотеку: https://github.com/binaryage/chromex
Отказ от ответственности: Я автор библиотеки
кажется как этот проект (goranjovic/chromeclojure) не использует ClojureScript. Скорее расширение Chrome (написанное на обычном JavaScript) отправляет выбранный код Clojure на внешний JVM-процесс Clojure и возвращает результат браузеру. Я не думаю, что это действительно то, что искал плакат. – Aaron