импортировать HTML-шаблон в машинописный текст

Я пытаюсь import создать свой html-шаблон, чтобы веб-пакет распознал их и включил при сборке. (webpack -d)

В соответствии с этой проблемой GitHub я должен сделать это

declare module '*.html' {
    const _: string;
    export default _;
}

Тогда import template from './myTemplate.html'; должно работать.

Но это не совсем помогает.

import template from './myTemplate.html';
console.log(template); // undefined

Однако это "работает"

import * as template from './myTemplate.html';
console.log(template); // <p>Hello world!</p>

Очень странный.

Но теперь это не работает

$routeProvider.when("/test", {
    template: template, // ERROR! template is typeof(*.html) expected string
    controller: MyController,
    controllerAs: "$ctrl"
});

Однако, если я изменю свой модуль *.html на

declare module '*.html' {
    const _: string;
    export = _; // changed this
}

теперь я могу сделать

import * as template from './myTemplate.html';

$routeProvider.when("/test", {
    template: template, // Great success!
    controller: MyController,
    controllerAs: "$ctrl"
});

Это работает, но почему import template from './myTemplate.html'; не работает? Что я делаю неправильно, так как другие в выпуске GitHub, похоже, заставили его работать именно так.


person Snæbjørn    schedule 08.12.2017    source источник


Ответы (1)


Вы не делаете ничего плохого, чтобы использовать import template from './myTemplate.html';, вам нужно использовать синтаксис export default.

Поскольку именно веб-пакет обрабатывает html, он импортирует его не выполняет экспорт по умолчанию.

Но вы можете настроить свой html-loader для использования экспорта по умолчанию.

person felixmosh    schedule 08.12.2017
comment
Ага, так что на самом деле это проблема с веб-пакетом, а не с машинописью. - person Snæbjørn; 08.12.2017
comment
это не проблема :] Вопрос конфигурации. - person felixmosh; 08.12.2017