Javascript 如何将HTML文件作为模板导入汇总并编译为串联字符串
我正在创建一个使用汇总优化实验的构建过程。我们目前正在使用Webpack,但它会导出此用例的臃肿代码。我希望能够将.html文件作为模板导入,并在我的Rollup/Babel构建中将它们编译成与ES5兼容的连接字符串 我已经在尝试了一些模板插件,但不想在每个实验中添加另一个模块库作为依赖项。我能够使用几个插件将HTML作为模板文本导入,但由于某些原因,它们并没有被babel编译成ES5兼容的字符串。Babel似乎只将内联(而不是导入的)模板文本编译为串联字符串。其他所有内容都正确编译为ES5。不确定为什么不包括外部HTML字符串。也许我的问题是巴别塔配置 我们在Webpack构建中使用的方法使用内置编译的html-es6-template-loader,因此它可以立即生成与ES5兼容的字符串连接。类似的东西可能是理想的 这是我当前的配置。在这里使用posthtml,但我尝试了多个插件,结果相同Javascript 如何将HTML文件作为模板导入汇总并编译为串联字符串,javascript,rollup,template-literals,Javascript,Rollup,Template Literals,我正在创建一个使用汇总优化实验的构建过程。我们目前正在使用Webpack,但它会导出此用例的臃肿代码。我希望能够将.html文件作为模板导入,并在我的Rollup/Babel构建中将它们编译成与ES5兼容的连接字符串 我已经在尝试了一些模板插件,但不想在每个实验中添加另一个模块库作为依赖项。我能够使用几个插件将HTML作为模板文本导入,但由于某些原因,它们并没有被babel编译成ES5兼容的字符串。Babel似乎只将内联(而不是导入的)模板文本编译为串联字符串。其他所有内容都正确编译为ES5。不
import babel from 'rollup-plugin-babel';
import posthtml from 'rollup-plugin-posthtml-template';
export default {
input: './src/index',
output: {
file: './dist/index.js',
format: 'cjs'
},
plugins: [
posthtml({
template: true
}),
babel({
exclude: 'node_modules/**',
presets: ['@babel/preset-env']
})
]
}
理想的场景是从一个HTML文件作为带有es6${}语法的模板开始,导入到一个JS文件中,然后用内联连接字符串编译成一个JS文件
template.html
hello${data.entity}
index.js是用现代ES版本编写的
import template from './template.html';
console.log(template({entity="world"})); // logs: <div class="some-div">hello world</div>
从“/template.html”导入模板;
log(模板({entity=“world”}));//日志:你好,世界
我希望编译的结果是与ES5兼容的脚本,而不需要额外的模板代码。结果将类似于下面的代码
var template = function(data){
return '<div class="some-div">hello ' + data.entity + '</div>';
}
console.log(template({entity="world"})); // logs: <div class="some-div">hello world</div>
var模板=函数(数据){
返回“hello”+data.entity+“”;
}
log(模板({entity=“world”}));//日志:你好,世界
我想出了解决办法。我只需要将HTML添加到babel配置中。我以前不认为需要这样做,因为我认为巴贝尔只是在HTML被导入并转换为模板文本后解析JS文件,但我想这是必要的
我在翻阅地图时发现了这一点
如果您只想将
.html
文件作为字符串导入,则还可以尝试使用:
我想你需要评估一下template@DerekPollard如果你的意思是用eval()包装它,我宁愿找到一种不同的方式,除了解析HTML之外manually@DerekPollard你能详细说明一下如何使用eval吗?是的,这很完美<代码>汇总插件html。。。效果很好。
babel({
exclude: 'node_modules/**',
presets: ['@babel/preset-env'],
extensions: ['.js', '.html']
})
// rollup.config.js
import html from "rollup-plugin-html";
export default {
input: "./index.js",
plugins: [
html({
include: "**/*.html",
}),
],
output: {
file: "my-module.js",
name: "MyModule",
format: "umd",
},
};