1 目錄展現 安裝依賴css
"ejs-loader": "^0.3.0",
"html-loader": "^0.4.5",
2 webpack.config.js配置html
const webpack = require('webpack'), htmlWebpackPlugin = require('html-webpack-plugin'), path = require('path'); module.exports = { entry: './src/app.js', output: { path: path.resolve(__dirname, './dist'), filename: 'js/[name]-[chunkhash].js', }, module: { //loader第三種使用方式 配置項設置 其餘1引入 2cli loaders: [ { //解析.js test: '/\.js$/', //正則匹配.js文件 loader: 'babel', //使用babel 要先安裝 cnpm install --save-dev babel-loader babel-core exclude: path.resolve(__dirname, 'node_modules'), //優化babel 排除 include: path.resolve(__dirname, 'src'),//優化babel 打包範圍 query: { presets: ['env'] //使用方式之1 cnpm install --save-dev babel-preset-env 告訴babel如何處理 } }, { //解析 .css test: /\.css$/, loader: 'style-loader!css-loader!postcss-loader' //style-loader!css-loader 解析使用 // css postcss-loader後端瀏覽器優化(加前綴) //要先加載 postcss-loader寫在後面 //?importLoaders=1 css import 'xxx.css' }, { //解析 .less test: /\.less$/, loader: 'style-loader!css-loader!postcss-loader!less-loader' },{ //解析 .html test: /\.html$/, loader: 'html-loader' },{ //解析 .tpl test: /\.tpl$/, loader: 'ejs-loader' } ] }, plugins: [ new htmlWebpackPlugin({ filename: 'index.html', template: 'index.html', inject: 'body' }), new webpack.LoaderOptionsPlugin({ //瀏覽器加前綴 options: { postcss: [require('autoprefixer')({browsers:['last 5 versions']})] } }), ] };
3 app.jsnode
import Layer from './components/layer/layer.js'; import './style/common.css'; const App = function () { const dom = document.getElementById('app'); let layer = new Layer(); dom.innerHTML = layer.tpl({ //此時lay.tpl是一個函數,函數執行並傳參 name: 'jeson', arr: ['張三', '李四', '王五', '趙六'] }); } new App();
根目錄 index.htmlwebpack
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body id="app"> </body> </html>
4 layer.jses6
import tpl from './layer.tpl'; import './layer.less'; function layer() { return { name: 'layer', tpl: tpl } }; export default layer;
5 layer.tplweb
<div> <div>this is <%= name %></div> <% for(let i=0;i<arr.length;i++){ %> <%= arr[i] %> <% } %> </div>
6 打包 npm
7 查看 .tpl模板是否被解析後端
ok瀏覽器
8 .ejs模板babel
8.1 webpack.config.js添加 .ejs loader
{ //解析 .ejs test: /\.ejs$/, loader: 'ejs-loader' }
8.2 layer.js修改
import tpl from './layer.ejs'; import './layer.less'; function layer() { return { name: 'layer', tpl: tpl } }; export default layer;
8.3 lay.ejs
<div> ejs <div>this is <%= name %></div> <% for(let i=0;i<arr.length;i++){ %> <%= arr[i] %> <% } %> </div>
8.4 打包
8.5 查看
9.html模板
9.1 webpack.config.js 添加 .html的 loader
{ //解析 .html test: /\.html$/, loader: 'html-loader' }
9.2 layer.js修改
import tpl from './layer.html'; import './layer.less'; function layer() { return { name: 'layer', tpl: tpl } }; export default layer;
9.3 layer.html
<div class="layer">
<div>this is es6 模板</div>
</div>
app.js
import Layer from './components/layer/layer.js'; import './style/common.css'; const App = function () { const dom = document.getElementById('app'); let layer = new Layer(); dom.innerHTML = layer.tpl; //此時的layer.tpl不是一個函數 } new App();
9.4 打包
9.5 查看效果