Можно ли использовать websharper в качестве замены JS?

Можно ли использовать websharper в качестве замены javascript без дополнительной сложности сайтлетов или ASP.NET?

Например, могу ли я скомпилировать следующую библиотеку websharper в файл .js и вызвать функцию hello() из блока сценария javascript в моем html?

namespace WebSharperLib

open IntelliFactory.WebSharper

module HelloWorld =
  [<JavaScript>]
  let hello () =
    IntelliFactory.WebSharper.JavaScript.Alert("Hello World")

person Oenotria    schedule 12.10.2012    source источник


Ответы (1)


Вы действительно можете сделать что-то подобное. Решение, которое я нашел, выглядит следующим образом:

  • Создайте проект библиотеки WebSharper в VS
  • Вставьте код в свой пример
  • Сгенерировать решение
  • Скопируйте последнюю строку генерации решения (где работает websharper) и запустите ее в powershell/console, просто добавив параметр

    -js имя вашего файла js

Дело в том, что таким образом у вас нет скомпилированных зависимостей. Я думаю, вы можете получить их, если сделаете полный проект и возьмете оттуда скомпилированный вывод js.

Мне кажется, что WebSharper создан не для такого использования, а как полный пакет.

Если вы просто хотите скомпилировать F# в Javascript, есть Pit, который создан именно для этой цели, поэтому я предлагаю вам сначала попробовать его.

person raph.amiard    schedule 12.10.2012
comment
Похоже, он ищет что-то вроде Пита. - person Onorio Catenacci; 12.10.2012
comment
Я ищу что-то вроде Pit, но там полно ошибок :) - person Oenotria; 12.10.2012
comment
Если вы скопируете команду web Sharper и поместите ее в сценарий после сборки, и вам удастся постоянно включать stdlib websharper, вы, вероятно, сможете хорошо работать с websharper и Visual Studio. Просто требует начальной настройки :) - person raph.amiard; 13.10.2012
comment
Спасибо, немного повозившись, я, наконец, заставил это работать удовлетворительно. Чтобы запустить выполнение javascript, вам нужно что-то вроде этого: <script type="text/javascript"> this.IntelliFactory.Runtime.init[0](); this.WebSharperLib.HelloWorld.hello();</script> - person Oenotria; 27.10.2012