2016-12-13 3 views
1

Я работаю с пользовательскими элементами. Многие из них (особенно библиотеки, такие как Polymer) используют импорт HTML для загрузки компонента.Возможно ли проанализировать файл импорта HTML для TypeScript

Большинство элементов связаны некоторые CSS, некоторые HTML и некоторые сценарии, и они могут быть разделены .css и .js/.ts, часто со встроенной HTML в строках (или React/ПРЕАКТ .tsx файлов).

Там это более элегантное решение с помощью импорта HTML:

<link rel="import" href="my-component.html"> 

А потом в my-component.html:

... 
<template> 
    <style> 
     ... 
    </style> 
    <p>HTML content!</p> 
</template> 
<script> 
    // Javascript to create custom element 
</script> 
... 

я могу использовать машинопись извне с отдельным .ts файла, но это немного грязный. То, что я хочу сделать, это заменить my-component.html на my-component.tshtml - файл, который выглядит почти идентичным, но имеет TypeScript вместо Javascript и переводит его в версию .html точно так же, как и файлы .ts или .

Есть ли способ сделать это?

+0

@Supersharp - так что TS моего времени компиляции анализируется во время выполнения сервером? Этот вид поражения в первую очередь связан с TS. Если бы я собирался спуститься по этому маршруту, у меня был бы обычный файл '.ts', а затем был бы пост-строительный шаг, который бы вставлял его в файл .html, но тот бит, который я называю грязным в вопрос. Я ищу лучший способ. – Keith

+0

Нет. Я хотел сказать, что я не понял тебя, но я вижу, что мой комментарий хуже, поэтому я удалю его! Вы ищете такой инструмент, как http://stackoverflow.com/questions/14015899/embed-typescript-code-in-an-html-document? – Supersharp

+0

@Supersharp не совсем - этот вопрос (и выбранное действие) ищет компиляцию во время выполнения. Это несколько поражает точку TypeScript и бесполезно для импорта HTML, поскольку в целом их объединяет HTML, CSS и скрипт в одну быструю загрузку - дополнительный шаг синтаксического анализа и библиотека полностью устраняют это. – Keith

ответ

0

Я не уверен, что это лучший способ сделать это, но то, что я хотел бы сделать, это создать скрипт, который:

  1. Разбирает файл .tshtml для <script> содержания.
  2. Вызвать компилятор TypeScript для перевода содержимого на JavaScript.
  3. Внесите результат в замену содержимого элемента <script>.
  4. Сохранить измененный файл как .html.
+0

Да, я подумывал написать задачу gulp, которая делает именно это (если я это сделаю, я поделюсь ею), но я не хочу изобретать велосипед. – Keith

+0

Возможно, вы можете найти полезный код в ссылке в комментариях. Даже если libs на стороне клиента, часть может быть повторно использована на стороне сервера ... удачи в любом случае! – Supersharp

Смежные вопросы