javascript - 是否可以使用 TypeScript 将 HTML 文件作为字符串导入?

标签 javascript html import typescript angular

不知能否如题所说

例如,假设我们正在处理一个 Angular2 项目,我们希望避免将模板设置为外部 url 以减少 http 请求。我们仍然不想在组件中编写所有 HTML,因为它可能足够大,或者我们希望设计人员与开发人员在不同的文件中工作。

所以这是第一个解决方案:

文件 template.html.ts 将文件转换为 .ts 格式如下:

export const htmlTemplate = `
   <h1>My Html</h1>
`;

然后在我的组件中我可以像这样导入它:

import { Component } from 'angular2/core';
import {RouteParams, RouterLink} from 'angular2/router';
import {htmlTemplate} from './template.html';

@Component({
  selector: 'home',
  directives: [RouterLink],
  template:  htmlTemplate,
})

实际上这很完美,但是您失去了 IDE HTML 智能,因此这对创建 HTML 模板的设计人员/开发人员不利。

我想要实现的是找到一种方法来导入 .html 文件而不是 .ts。

那么是否可以在 TypeScript 中将 .html 文件作为字符串导入?

最佳答案

您现在可以这样做:

import "template.html";

@Component({
  selector: 'home',
  directives: [RouterLink],
  template:  require("template.html"),
})

这会将“template.html”包含到您的组件的依赖项列表中,然后您可以将它与您的构建器捆绑在一起(实际上,使用 amd 更有意义)

但是,正如您所建议的,最好使用 webpack

看看这个starter pack


更新 现在您可以像这样声明一个 html 模块:

declare module "*.html" {
    const content: string;
    export default content;
}

然后像这样使用它:

import * as template from "template.html";

@Component({
  selector: 'home',
  directives: [RouterLink],
  template: template
})

关于javascript - 是否可以使用 TypeScript 将 HTML 文件作为字符串导入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36649795/

相关文章:

html - 鼠标悬停在图像上的文本?

javascript - html 和 javascript 表单不工作

html - iOS 网络应用程序中的 Facebook/Google+/Twitter 共享功能

import - require.js 同步加载

javascript - 如何在悬停或单击时打开 JS 菜单

javascript - 使用 GreaseMonkey 更改 URL

javascript - window.onload() 在第一枪中没有用 IE 8 触发

python - lark : Parsing : Implementing import file?

import - Eiffel 文本中的 "Using"或 "import"子句

javascript - threejs 遍历一个对象onClick