是否可以为TypeScript解析HTML导入文件
我正在使用自定义元素。其中很多(尤其是像Polymer这样的库)使用HTML导入来加载组件 大多数元素涉及一些CSS、一些HTML和一些脚本,它们可以是单独的是否可以为TypeScript解析HTML导入文件,typescript,custom-element,html-imports,Typescript,Custom Element,Html Imports,我正在使用自定义元素。其中很多(尤其是像Polymer这样的库)使用HTML导入来加载组件 大多数元素涉及一些CSS、一些HTML和一些脚本,它们可以是单独的.CSS和.js/.ts,通常在字符串中嵌入HTML(或React/Preact.tsx文件) 使用HTML导入有一个更优雅的解决方案: <link rel="import" href="my-component.html"> 我可以在外部使用TypeScript和一个单独的.ts文件,但这有点乱。我想做的是用我的compon
.CSS
和.js
/.ts
,通常在字符串中嵌入HTML(或React/Preact.tsx
文件)
使用HTML导入有一个更优雅的解决方案:
<link rel="import" href="my-component.html">
我可以在外部使用TypeScript和一个单独的.ts
文件,但这有点乱。我想做的是用我的component.html
替换我的component.tshtml
——一个看起来几乎相同的文件,但是它使用TypeScript而不是Javascript,并且以与.ts
或.tsx
文件完全相同的方式传输到.html
版本
有什么方法可以做到这一点吗?我不确定这是最好的方法,但我要做的是创建一个脚本:
内容
元素内容时插入结果我不确定这是最好的方法,但我要做的是创建一个脚本:
内容
元素内容时插入结果@Supersharp-那么我的编译时TS是在运行时由服务器解析的?这样一来就不符合一开始就有TS的意义。如果我要走这条路,我会有一个常规的
.ts
文件,然后有一个后期构建步骤,将其插入.html
文件,但我在问题中提到的那一点是混乱的。我在寻找更好的方法,一点也不。我想说我不明白你的问题,但我看到我的评论更糟,所以我将删除它!你在寻找这样的工具吗?@Supersharp不是真的-这个问题(以及所选操作)正在寻找运行时类型脚本编译。这在某种程度上违背了TypeScript的观点,对于HTML导入是无用的,因为它们的全部要点是将HTML分组在一起,一个额外的解析步骤和库将完全削弱这一点。好吧,那么您要寻找的是一个解析器,它将在编译时从内联类型脚本生成内联javascript,不是吗?如果是这样的话,一个解决办法可能是使用一个后期构建工具,比如gulp/grunt,将HTML、CSS、JS连接到一个HTML文件中。@Supersharp是的,就是这样。我可以添加构建后的命令行来完成这项工作,但这会造成混乱并破坏地图文件。我想知道最好的方法是什么。@Supersharp-那么我的编译时TS是在运行时由服务器解析的?这样一来就不符合一开始就有TS的意义。如果我要走这条路,我会有一个常规的.ts
文件,然后有一个后期构建步骤,将其插入.html
文件,但我在问题中提到的那一点是混乱的。我在寻找更好的方法,一点也不。我想说我不明白你的问题,但我看到我的评论更糟,所以我将删除它!你在寻找这样的工具吗?@Supersharp不是真的-这个问题(以及所选操作)正在寻找运行时类型脚本编译。这在某种程度上违背了TypeScript的观点,对于HTML导入是无用的,因为它们的全部要点是将HTML分组在一起,一个额外的解析步骤和库将完全削弱这一点。好吧,那么您要寻找的是一个解析器,它将在编译时从内联类型脚本生成内联javascript,不是吗?如果是这样的话,一个解决办法可能是使用一个后期构建工具,比如gulp/grunt,将HTML、CSS、JS连接到一个HTML文件中。@Supersharp是的,就是这样。我可以添加构建后的命令行来完成这项工作,但这会造成混乱并破坏地图文件。我想知道做这件事最好的方法是什么。是的,我想写一个能做到这一点的吞咽任务(如果我做了,我会分享),但我不想重新发明轮子。也许你可以在评论中的链接中找到一些有用的代码。即使LIB是客户端的,某些部分也可以在服务器端重用。。。祝你好运!是的,我正在考虑写一个可以完成这个任务的吞咽任务(如果我写了,我会分享),但我不想重新发明轮子。也许你可以在评论中的链接中找到一些有用的代码。即使LIB是客户端的,某些部分也可以在服务器端重用。。。祝你好运!
...
<template>
<style>
...
</style>
<p>HTML content!</p>
</template>
<script>
// Javascript to create custom element
</script>
...