webpack学习笔记8--html-loader
- 1.模板文件可以是任一文件格式的,比如html,string,xml,hy,tpl等等,既可以是自定义的又可以是已经存在的文件格式, 处理模板文件通常的做法是:webpack将模板文件当做一个字符串进行处理,webpack将模板文件当成已经编译好的的模板的处理函数。对js模板语法,模板引擎,模板的作用的认识和了解再来看这章会比较容易理解。我们就可以使用commonjs的规范去引入那个模板文件,
var headerTpl = require('../tpls/header.html');
1
headerTpl就得到了那个模板字符串
在github上关于webpack常见处理模板的loader,解释了每一个loader的作用
html-loader的作用就是把html当做是一个字符串
要支持html文件,安装html-loader,终端目标文件输入:
npm install html-loader --save-dev
1
要支持.ejs文件或者是.tpl文件,安装ejs,终端目标文件输入:
npm install ejs-loader --save-dev
1
layer.js载入ejs模板时,返回的是一个function,这时的import tpl from './layer.tpl';中的tpl代表的不再是字符串,表示的是一个已经编译过的函数
layer.tpl模板
<div class="layer">
<div>this is <%= name %> layer </div>
<% for(var i = 0;i<arr.length;i++){ %>
<%= arr[i]%>
<%}%>
</div>
1
2
3
4
5
6
2
3
4
5
6
在layer.js文件中
import tpl from "./layer.tpl";
function layer(){
return {
name:'layer',
tpl:tpl
}
}
export default layer;
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
在app.js文件中使用
import Layer from "./component/layer/layer.js";
const App = function(){
return {
var dom = document.getElementById('app');
var layer = new Layer();//layer就是一个对象
dom.innerHTML = layer.tpl({
"name":'zd',
"arr":["zd","lq","xy"]
})//传入模板中所要的数据
}
}
new App();//执行
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
现在babel里支持了jsx插件,无论你是使用vue还是react都是可以用jsx语法写代码的,通过babel工具去支持jsx语法,不用重新引入一个loader去处理
