[js高手之路]深入浅出webpack教程系列8-(postcss-loader,autoprefixer,html-loader,less-loader,ejs-loader)用法
来源:互联网 发布:2017淘宝店铺复核认证 编辑:程序博客网 时间:2024/06/05 06:59
我们接着上文,那么在上篇文章的最后,写到了css-loader的用法,如果你用心发现,就能看到我在style.css样式文件中写了一个这样的样式:
1 module.exports = {2 plugins : [3 require('autoprefixer')({4 browsers : ['last 5 versions']5 })6 ]7 }
意思是在postcss-loader中引入autoprefixer插件
修改webpack.config.js中css loader部分的配置:
1 var htmlWebpackPlugin = require('html-webpack-plugin'); 2 let path = require('path'); 3 module.exports = { 4 entry: './src/main.js', 5 output: { 6 path: __dirname + '/dist', 7 filename: 'js/[name].bundle.js', 8 }, 9 plugins: [10 new htmlWebpackPlugin({11 filename: 'index.html',12 template: 'index.html',13 inject: true14 })15 ],16 module: {17 rules: [18 {19 test: /\.js$/,20 exclude: /(node_modules)/,21 include: [22 path.resolve(__dirname, "src"),23 ],24 use: {25 loader: 'babel-loader',26 options: {27 presets: ['env']28 }29 }30 },31 {32 test: /\.css$/,33 exclude: /(node_modules)/,34 use: [ 35 'style-loader', {36 loader : 'css-loader',37 options : {38 importLoaders : 139 },40 },41 'postcss-loader'42 ]43 }44 ]45 }46 }
执行webpack打包,生成之后的css文件,就自动补充css3前缀了:
二、安装less-loader插件
如果我们在modal.js中直接引入modal.less,然后webpack打包,这样会报错
1 import './modal.less';2 let modal = function(){3 return {4 'component-name' : 'modal'5 }6 }7 export default modal;
报错提示需要一个loader来处理, 我们可以安装less-loader了:
安装: npm install --save-dev less-loader less
安装完成之后,配置webpack.config.js
1 var htmlWebpackPlugin = require('html-webpack-plugin'); 2 let path = require('path'); 3 module.exports = { 4 entry: './src/main.js', 5 output: { 6 path: __dirname + '/dist', 7 filename: 'js/[name].bundle.js', 8 }, 9 plugins: [10 new htmlWebpackPlugin({11 filename: 'index.html',12 template: 'index.html',13 inject: true14 })15 ],16 module: {17 rules: [18 {19 test: /\.js$/,20 exclude: /(node_modules)/,21 include: [22 path.resolve(__dirname, "src"),23 ],24 use: {25 loader: 'babel-loader',26 options: {27 presets: ['env']28 }29 }30 },31 {32 test: /\.css$/,33 exclude: /(node_modules)/,34 use: [ 35 'style-loader', {36 loader : 'css-loader',37 options : {38 importLoaders : 139 },40 },41 'postcss-loader'42 ]43 },44 {45 test: /\.less$/,46 use: [47 {48 loader: "style-loader"49 }, {50 loader: "css-loader"51 }, {52 loader: "less-loader"53 }54 ]55 }56 ]57 }58 }
当碰到less文件时,交给less-loader处理,然后交给css-loader处理,最后交由style-loader处理,然后执行webpack打包,modal.less文件中样式就被嵌入进来了
三、安装html-loader
安装命令: npm install html-loader --save-dev
modal.js文件引入modal.html
1 import './modal.less';2 import tpl from './modal.html';3 let modal = function(){4 return {5 'component-name' : 'modal',6 'tpl' : tpl7 }8 }9 export default modal;
main.js对demo3目录下的index.html文件插入模板(modal.html)
1 import modal from './components/modal.js';2 import './css/style.css';3 let App = function(){4 var oApp = document.querySelector("#app");5 var oModal = new modal();6 oApp.innerHTML = oModal.tpl;7 }8 new App();
demo3目录下的index.html文件,需要添加个div, id为app
webpack.config.js增加一项html-loader的配置
1 var htmlWebpackPlugin = require('html-webpack-plugin'); 2 let path = require('path'); 3 module.exports = { 4 entry: './src/main.js', 5 output: { 6 path: __dirname + '/dist', 7 filename: 'js/[name].bundle.js', 8 }, 9 plugins: [10 new htmlWebpackPlugin({11 filename: 'index.html',12 template: 'index.html',13 inject: true14 })15 ],16 module: {17 rules: [18 {19 test: /\.js$/,20 exclude: /(node_modules)/,21 include: [22 path.resolve(__dirname, "src"),23 ],24 use: {25 loader: 'babel-loader',26 options: {27 presets: ['env']28 }29 }30 },31 {32 test: /\.css$/,33 exclude: /(node_modules)/,34 use: [ 35 'style-loader', {36 loader : 'css-loader',37 options : {38 importLoaders : 139 },40 },41 'postcss-loader'42 ]43 },44 {45 test: /\.less$/,46 use: [47 {48 loader: "style-loader"49 }, {50 loader: "css-loader"51 }, {52 loader: "less-loader"53 }54 ]55 },56 {57 test: /\.(html)$/,58 use: {59 loader: 'html-loader',60 }61 }62 ]63 }64 }
然后执行webpack打包命令,就能看到modal.html被插入到id为app的div元素内了
四、修改模板后缀,为模板赋值
安装ejs-loader: npm install ejs-loader --save-dev
在components目录下新建一个文件(modal.ejs):
1 <div class="modal">2 <div>这个组件的名字是:<%= name %></div>3 <% for( var i = 0; i < arr.length; i++ ){ %>4 <%= arr[i]%>5 <% } %>6 </div>
modal.js引入ejs模板
1 import './modal.less'; 2 // import tpl from './modal.html'; 3 import tpl from './modal.ejs'; 4 let modal = function(){ 5 return { 6 'component-name' : 'modal', 7 'tpl' : tpl 8 } 9 }10 export default modal;
main.js为ejs模板分配数据
1 import modal from './components/modal.js'; 2 import './css/style.css'; 3 let App = function(){ 4 var oApp = document.querySelector("#app"); 5 var oModal = new modal(); 6 // oApp.innerHTML = oModal.tpl; 7 oApp.innerHTML = oModal.tpl({ 8 name : 'ghostwu', 9 arr : [ 'ghostwu', '王朝', '马汉' ],10 });11 }12 new App();
webpack.config.js添加ejs-loader的支持:
1 var htmlWebpackPlugin = require('html-webpack-plugin'); 2 let path = require('path'); 3 module.exports = { 4 entry: './src/main.js', 5 output: { 6 path: __dirname + '/dist', 7 filename: 'js/[name].bundle.js', 8 }, 9 plugins: [10 new htmlWebpackPlugin({11 filename: 'index.html',12 template: 'index.html',13 inject: true14 })15 ],16 module: {17 rules: [18 {19 test: /\.js$/,20 exclude: /(node_modules)/,21 include: [22 path.resolve(__dirname, "src"),23 ],24 use: {25 loader: 'babel-loader',26 options: {27 presets: ['env']28 }29 }30 },31 {32 test: /\.css$/,33 exclude: /(node_modules)/,34 use: [ 35 'style-loader', {36 loader : 'css-loader',37 options : {38 importLoaders : 139 },40 },41 'postcss-loader'42 ]43 },44 {45 test: /\.less$/,46 use: [47 {48 loader: "style-loader"49 }, {50 loader: "css-loader"51 }, {52 loader: "less-loader"53 }54 ]55 },56 {57 test: /\.(html)$/,58 use: {59 loader: 'html-loader',60 }61 },62 {63 test: /\.(ejs)$/,64 use: {65 loader: 'ejs-loader',66 }67 }68 ]69 }70 }
然后执行webpack打包命令,就能看见新的ejs模板中的数据被嵌入在id为app的div中
- [js高手之路]深入浅出webpack教程系列8-(postcss-loader,autoprefixer,html-loader,less-loader,ejs-loader)用法
- webpack postcss-loader autoprefixer 配置
- [js高手之路]深入浅出webpack教程系列9-打包图片(file-loader)用法
- webpack学习笔记-3-autoprefixer-loader
- webpack-sass-postcss-loader-单个css文件
- webpack less-loader出现异常
- Loader
- Loader
- Loader
- loader
- loader
- Loader
- loader
- Loader
- loader
- Loader
- loader
- Loader
- 网页设置锚点
- 好未来:删除公共字符
- #面试题#
- 动画之UIView动画
- 循环队列
- [js高手之路]深入浅出webpack教程系列8-(postcss-loader,autoprefixer,html-loader,less-loader,ejs-loader)用法
- NYOJ286 动物统计(字典树)
- 数据挖掘之关联分析五(序列模式)
- 云上DevOps-CodePipeline,Packer和Terraform集成实践探索
- FX3/CX3 uint8_t等类型找不到警告
- [日记] 2017年 Ⅲ
- 面试OR笔试37——被4整除
- Windows下用C语言获取系统的CPU利用率、内存使用率、硬盘使用率等
- jQuery实现仿淘宝下拉菜单