首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用tsify (类型记录)时,在Browserify中要求HTML文件作为模板字符串

使用tsify (类型记录)时,在Browserify中要求HTML文件作为模板字符串
EN

Stack Overflow用户
提问于 2015-10-09 08:43:16
回答 2查看 1.7K关注 0票数 2

我想把require/import模板作为字符串输入到我的代码中。但在一些转轨错误中运行。

这是我正在使用的狂欢Browserify设置:

代码语言:javascript
复制
browserify({ basedir: './src' })
    .transform(stringify(['.tpl.html']))
    .add('app.ts')
    .plugin(tsify)

app.ts中,我希望导入如下模板:

代码语言:javascript
复制
import template from './app.tpl.html';
console.log(template);

在其中,app.tpl.html可能如下所示:

代码语言:javascript
复制
<h1>Hello!</h1>

我尝试了不同的设置,使用require over import。使用require我得到以下错误:

代码语言:javascript
复制
Browserify Error { [TypeScript error: src/components/app.ts(1,9): 
Error TS2304: Cannot find name 'require'.]
message: 'src/components/app.ts(1,9): Error TS2304: Cannot find name \'require\'.',
fileName: 'src/components/app.ts',
line: 1,
column: 9,
name: 'TypeScript error' }

Usind import找不到模块,我得到以下错误:

代码语言:javascript
复制
Browserify Error { [TypeScript error: src/components/test.ts(1,22): Error TS2307: Cannot find module './test.tpl.html'.]
message: 'src/components/test.ts(1,22): Error TS2307: Cannot find module \'./test.tpl.html\'.',
fileName: 'src/components/test.ts',
line: 1,
column: 22,
name: 'TypeScript error' }

我找不到一起使用"stringify“和"tsify”的例子。有谁能用HTML模板来使用“浏览器化”和"tsify“呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-13 04:42:20

如果您想在TypeScript中导入/要求与TypeScript模块不同的东西,则需要使用“本机”require函数(在本例中是由browserify定义的)。TypeScript编译器不知道这一点,除非您告诉它。

代码语言:javascript
复制
declare function require (id: string): any; // declare there will be 'require' function in the runtime 

var template = require('./app.tpl.html'); // use declared function in pure JS
票数 2
EN

Stack Overflow用户

发布于 2016-03-14 19:03:09

另一种选择是使用注释。

这样的代码(menuTemplate.jst是静态模板文件):

代码语言:javascript
复制
/// <amd-dependency path="general/menuTemplate.jst" name="menuTemplate" />

import Marionette = require("backbone.marionette");
declare var menuTemplate: string;

class MenuView extends Marionette.ItemView<any> {
  template = menuTemplate;
}

产生产出(ES 6):

代码语言:javascript
复制
/// <amd-dependency path="general/menuTemplate.jst" name="menuTemplate" />
define(["require", "exports", "general/menuTemplate.jst", "backbone.marionette"], function (require, exports, menuTemplate, Marionette) {
    "use strict";
    class MenuView extends Marionette.ItemView {
        constructor(...args) {
            super(...args);
            this.template = menuTemplate;
        }
    }
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33033740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档