如何将外部 HTML 文件导入 TypeScript 类

2023-12-11

我正在尝试构建一个正在使用的 JavaScript 包Webpack将 TypeScript 文件及其所有导入编译为单个 JavaScript 文件。

该包的主要目标是按照一组给定的条件向任何使用该包的应用程序输出 HTML。

目前,我通过使用模板文字可以很好地实现这一点。但是,理想情况下,我希望将标记移动到单独的 HTML 模板文件中,这些模板文件可以由相关的 TypeScript 类导入和解析。我假设处理这种情况的最佳方法是让 Webpack 在构建期间将该 HTML 转换为 JavaScript。

不幸的是,这个包必须与框架无关,并且不能利用 Angular 或 React 或类似的东西。

这可能吗?值得付出努力吗?如果是这样,我需要做什么?

这是我正在做的一个例子:

main.ts

import { Header } from './app/header';

(function(){
  new Header();
})();

header.html

export class Header {

  public el: any;

  constructor() {
    this.el = document.querySelectorAll('[data-header]')[0];
    this.el.className += 'header';

    this.render();
  }

  public render() {
    this.el.innerHTML += `
      <a href="#" class="navbar-brand logo">
        <svg viewBox="0 0 578 84" width="578" height="84">
          <use href="assets/svgs/logo-crds.svg#logo-crds"></use>
        </svg>
      </a>
    `;
  }
}

在此示例中,我想移动我们在render()发挥其自身功能header.html file.


你为什么不尝试一下html加载器

我成功地完成了您想要完成的任务。以下是我采取的步骤:

  1. Add the html-loader项目中的 npm 包依赖项使用

    npm install --save-dev html-loader
    
  2. 在您的webpack.config.js配置文件,在loaders部分:

    { test: /\.html$/, loader: 'html-loader' }
    
  3. 告诉 typescript 如何识别require进口。您可以通过将以下代码添加到新的.ts file:

    declare var require: {
        (path: string): any;
        <T>(path: string): T;
        (paths: string[], callback: (...modules: any[]) => void): void;
        ensure: (paths: string[], callback: (require: <T>(path: string) => T) => void) => void;
    };
    
  4. 假设你有一个名为的 html 模板template.html在项目的根目录中,您现在可以在您的项目中包含以下代码main.ts源代码,如:

    var x = require("./template.html");
    console.log(x);
    

现在在控制台中您应该看到(正如我所看到的)模板的 html 代码。

您可以查看html加载器加载器详细配置的文档。我希望这有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将外部 HTML 文件导入 TypeScript 类 的相关文章

  • 如何将内联 JavaScript 与 Express/Node.js 中动态生成的内容分开?

    对于具有几年 Web 开发经验但没有找到答案的人来说 这是一个有点菜鸟的问题程序员堆栈交换 or Google 我决定在这里问一下 我在用Express网络框架Node js 但这个问题并不特定于任何 Web 框架或编程语言 以下是从数据库
  • Snap.svg - 停止在可悬停元素的子元素上重新触发悬停事件

    对于一个项目 我使用的 SVG 形状由背景多边形和背景多边形上方的一些文本 我已将其转换为路径 组成 我正在使用 Snap svg 为我的形状设置动画 当我将鼠标悬停在多边形上时 形状应该缩放到特定尺寸 包括其中的所有内容 鼠标移开时 形状
  • 在打字稿中导入 json

    我是 typescript 的新手 在我的项目中 我们使用 typescript2 在我的要求之一中 我需要导入 json 文件 所以我创建了 d ts 文件如下 test d ts declare module json const va
  • Bootstrap按钮加载+Ajax

    我正在使用 Twitter Bootstrap 的按钮加载状态 http twitter github com bootstrap javascript html buttons http twitter github com bootst
  • 将 GMT 时间转换为当地时间

    我以这种格式从我的服务器获取 GMT 时间 Fri 18 Oct 2013 11 38 23 GMT 我的要求是使用Javascript将此时间转换为本地时间 例如 如果用户来自印度 首先我需要采用时区 5 30并将其添加到我的服务器时间并
  • HTML5 MediaSource 适用于某些 mp4 文件,但不适用于其他文件(相同的编解码器)

    我正在玩 MediaSource API 代码直接取自 Mozilla 的示例页面 https developer mozilla org en US docs Web API MediaSource endOfStream https d
  • 为什么我们在打字稿中使用 HTMLInputElement ?

    我们为什么使用 document getElementById ipv as HTMLInputElement value 代替 document getElementById ipv value 功能getElementById返回具有类
  • DataTables row.add 到特定索引

    我正在替换这样的行项目 var targetRow entity row dataTable targetRow closest table dataTable DataTable dataTable row targetRow remov
  • 图像背景不透明度不影响边框

    如何设置背景不透明度而不影响边框线不透明度 我找到的解决方案没有帮助 div class selected img src assets img image product 1 thumbnail jpg alt product 1 thu
  • 正则表达式 - 从 markdown 字符串中提取所有标题

    我在用灰质 https www npmjs com package gray matter 以便将文件系统中的 MD 文件解析为字符串 解析器产生的结果是这样的字符串 n Clean er ReactJS Code Conditional
  • Three.js 各种大小的粒子

    我是 Three js 的新手 正在尝试找出添加 1000 个粒子的最佳方法 每个粒子都有不同的大小和颜色 每个粒子的纹理是通过绘制画布创建的 通过使用粒子系统 所有粒子都具有相同的颜色和大小 为每个粒子创建一个粒子系统是非常低效的 有没有
  • Vue 和 Vuex:处理依赖的计算属性

    我的应用程序是一个使用 Vuex 在 Vue 中构建的精简电子表格 关键组件是TableCollection Table and Row The TableCollection有一个包含多个的数组Table对象 每个Table有一个包含多个
  • 代码镜像错误:未捕获错误:扩展集中无法识别扩展值([对象对象])

    全部 我目前正在从事一个React Electron项目 该项目的目标是完成一个Markdown编辑器 当我配置codemirror 该程序报告错误说 Uncaught Error Unrecognized extension value
  • 对于只触及我的工作表的 Google 表格脚本,收到“此应用程序未经验证”

    我正在编写一个 Google Sheets 脚本 我只想访问与 gs 文件关联的同一电子表格中的数据 似乎我应该有权在自己的电子表格中运行脚本 但是每当我运行一个函数时 我都会得到一个This app isn t verified信息 我该
  • 在 JavaScript 循环之外声明变量可以提高速度和内存?

    C 也有类似的问题 但我们没有看到 JavaScript 的任何问题 在循环内声明变量是否可以接受 假设循环有 200 次迭代 使用样本 2 相对于样本 1 是否有性能要求 内存和速度 我们使用 jQuery 来循环 它提高了我们将 var
  • Javascript Replace() 和 $1 问题

    我正在尝试创建一个脚本来搜索文本中的模式并在它找到的字符串周围包裹一个标签 shop attributes td each function this html function i html return html replace E 0
  • 如何确定所有角度2分量都已渲染?

    当所有 Angular2 组件完成渲染时 是否会触发一个角度事件 For jQuery 我们可以用 function 然而 对于 Angular2 当domready事件被触发 html 只包含角度组件标签 每个组件完成渲染后 domrea
  • 如何在执行新操作时取消先前操作的执行?

    我有一个动作创建器 它会进行昂贵的计算 并在每次用户输入内容时调度一个动作 基本上是实时更新 但是 如果用户输入多个内容 我不希望之前昂贵的计算完全运行 理想情况下 我希望能够取消执行先前的计算并只执行当前的计算 没有内置功能可以取消Pro
  • 如何使用asm.js进行测试和开发?

    最近我读到asm js规范 看起来很酷 但是是否有任何环境 工具来开发和测试这个工具 这还只是处于规范阶段吗 您可以尝试使用 emscripten 和 ASM JS 1 并从侧分支在 firefox 构建中运行它 有关 asm js 的链接
  • CSS溢出文本显示在几行中,没有断字

    我有一些长文本显示在 div 中 该 div 具有固定的宽度和高度 我希望文本显示在几行上 作为 div 高度 并且句子单词不会中断 一行中的单词前缀和下一行中的继续 此外 我想在末尾添加省略号最后一句话 CSS white space n

随机推荐

  • 如何使用cmake创建共享库?

    我写了一个库 以前是用自己写的Makefile编译的 但现在想改用cmake 树看起来像这样 我删除了所有不相关的文件 include animation h buffers h vertex h world h src animation
  • Plotly Facets 无法正确翻译

    我发现 使用 R 的 Plotly 当我分面绘图时 它们通常无法正确地从 R 转换为 Plotly 例如 我在 R 中绘制的图表如下所示 当我将它发送到plotly时 它看起来像这样 出于保密原因 一些数据在两个图中均被隐藏 我的代码看起来
  • 如何将MAC地址转换为对应的IP地址?

    我正在寻找一种简单的方法将 MAC 地址转换为本地网络中相应的 IP 地址 就我而言 只有两个设备 一台非常普通的 PC 192 168 0 1 和一台在 ROM 中硬编码了任意 IP 地址 192 168 0 xxx 的科学仪器 PC 和
  • UIImageView .scaleAspectFit 和自动布局无法从 Swift 以编程方式工作

    我有几个部分透明的 PNG 叠加层 可以在视图中相互叠加显示 覆盖的数量根据运行时条件而变化 我想创建UIImageViewSwift 中的实例并将它们添加到视图中 添加时我没有任何问题得到我想要的行为UIImageView在故事板中并通过
  • Python 相当于 JavaScript 函数对象

    我想知道是否有Python相当于这个JavaScript构造 var myFunctions greet function name return Hello name farewell function time return See y
  • SHA1 C# 相当于此 Java

    在 C 中寻找与此方法相同的等效项 try MessageDigest md MessageDigest getInstance SHA 1 md update password getBytes BigInteger hash new B
  • 非英文字符在我的 php 页面上显示为问号 - 在数据库中显示正常

    我有一个 MySQL 数据库表 其中填充了非英语数据 当我在 Navicat MySQL 浏览器中查看数据时 数据显示正常 但是 当我运行 php 脚本来选择并在网页上显示数据时 它会显示问号 页面编码设置为 utf8 甚至 MySQL 排
  • 如何在Matlab中进行GF(2)的逆运算和GF(256)的乘法?

    我有一个二进制矩阵A only 1 and 0 和一个向量D在伽罗瓦域 256 向量C计算如下 C A 1 D where A 1表示矩阵的逆矩阵A in GF 2 是乘法运算 结果向量C必须在GF 256 我尝试用Matlab来做 A 1
  • Windows 身份验证的 asp.net mvc 应用程序中每个资源(2 x 401.2 和 1 x 200)有 3 个请求

    当我拉出 Fiddler 并意识到每个请求都被发送了 3 次 两次我得到 401 2 然后成功 时 我试图找出为什么我的网站在 IE9 中如此缓慢 我验证了这种情况在所有浏览器上都会发生 只是 Chrome 的速度掩盖了这一点 或者这可能与
  • 递归斐波那契函数(带负数)

    我可以为所有大于 0 的数字编写递归斐波那契函数 但该函数对于任何负数都是完全错误的 知道如何在 C 中实现这个吗 int fibonacci int n if n 0 return 0 if n 1 return 1 return fib
  • Vagrant 端口转发不起作用

    我已经在我的电脑上安装了 CouchDBvagrant 0 9 0正在运行的盒子CentOS 6 2 In 流浪文件我已经添加config vm forward port 5984 5985 重新加载流浪汉后 我尝试卷曲地址 curl v
  • 如何在C++中将较大的字符串减少为较小的字符串?可能是通过散列?

    我想在 C 中将较大的字符串压缩为较小的字符串 在 C 中执行此操作有哪些不同的方法 要求是输出也应该是字符串 好吧 如果您以后不需要解压缩它 string s xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx s E
  • 在 geom_密度_脊上画线

    我试图在 ggridges 的密度图中画一条线 library ggplot2 library ggridges ggplot iris aes x Sepal Length y Species geom density ridges re
  • 将 Excel 中的值除以一组预设值,以找出每个值需要多少个

    我很好奇是否有办法让我的生活更轻松 在 Excel 中 我生成一个总值 例如 750 并且需要从 50 100 200 250 500 的值中找出我需要多少个管道订单 无论如何 有没有办法让excel取一个值 然后返回我需要的每个数字的数量
  • 如何更改绘图标题和轴标签的字体大小并保存?

    每次我将绘图图片保存为 jpg 或 png 时 标题和轴标签的字体大小都会自动更改回默认值 我的代码是这样的 figure plot x f x title the smallest n 1 FontSize 24 xlabel x Fon
  • SQL排序不遵循group by语句,总是使用主键

    我有一个 SQL 数据库 其中有一个名为staff 具有以下列 workerID Prim key name department salary 我应该找到每个部门工资最高的工人 并使用以下语句 select staff workerID
  • ColdFusion CFHTTP 和 SSL 证书

    背景 当我尝试使用 CFHTTP 连接到 API 时 我一直遇到连接失败错误消息的问题 在查看 SoapUI 中的 API 时 我注意到有一个按钮SSL Info 3 certs 概述如下 当我单击该按钮时 会弹出一个副本窗口 其中概述了下
  • Android 设备 adb 在 linux/Mac 上始终未经授权

    我不得不处理这个问题几次 每次我都会忘记原因是什么 直到我深入挖掘 所以这是症状 每次重新连接 重新启动设备时 您都会收到授权对话框 即使您可以swear你检查了Always上次勾选了 adb shell给你下面的简介 adb device
  • 为什么在 C 中执行算术运算后会丢失值的余数?

    我正在尝试通过遵循以下内容来学习基本的 C 编程textbook我一定遗漏了一些关于数据类型 舍入和 或运算顺序的信息 因为当我尝试构建一个简单的程序将秒转换为小时和分钟时 小时有效 但剩余分钟在它们出现时变为 0不应该是 谢谢Course
  • 如何将外部 HTML 文件导入 TypeScript 类

    我正在尝试构建一个正在使用的 JavaScript 包Webpack将 TypeScript 文件及其所有导入编译为单个 JavaScript 文件 该包的主要目标是按照一组给定的条件向任何使用该包的应用程序输出 HTML 目前 我通过使用