layer.html
layer.js
layer.less
app.js
index.html
将es6等转换为浏览器可以直接处理的JS,需使用预处理js的loader:babel
第一步要安装babel-loader: 命令行输入npm i --save-dev babel-loader babel-core
第二步配置babel使其可以转化指定版本的js,如es2015,使用presers进行配置 指定完之后需安装 npm install --save-dev babel-preset-env
第三步 使用loader并进行相关配置
像上述这样操作的过程中出错了,百度查原因,最后进行了以下的安装
npm uninstall babel-loader
npm install [email protected]
最后我的各个文件内容如下:
webpack.config.js
layer.js稍作了一些修改,暂时不使用import带入HTML模板:
处理css文件中,这两个loader各自的作用:
首先安装这两个loader: npm i style-loader css-loader --save-dev
新建一个css文件,文件位置与内容如下:
在app.js中导入css文件:
配置文件中配置css-loader和style-loader
配置之后使用npm run webpack进行打包,打包完成的生成html的结果如下:(css文件中的内容会被带style标签的插入到html文件head中)
当css文件中有一些浏览器支持不是很好的属性设置的时候比如flex,我们可能需要为其添加不同的前缀,此时可以使用webpack为这些兼容性不好的属性进行统一处理(如加前缀,这是该loader的一个插件功能,还有很多其他的插件可以添加实现更多的功能),通过使用postcss-loader(npm官网有详细解释),使用方法如下:
第一步安装loader 命令行输入:npm install postcss-loader --save-dev 。此处统一进行加前缀处理,要进行一下安装autoprefixer 插件 npm install autoprefixer --save-dev
第二步进行相关配置
webpack.config.js文件中如图所示添加一个!postcss-loader
在webpack.config.js的同级目录下新建postcss.config.js文件,内容如下:
特别说明,如果直接在webpack.config.js中的plugins中require这个autoprefixer插件,打包则会报错。所以必须新建一个如上述的配置文件。
打包后的结果如下:(添加前缀成功)
当一个css文件中利用@import ‘路径’引入了其他文件的css块,对引入的css块也使用style-loader、css-loader以及postcss-loader为属性添加前缀时,仅使用上面的配置是会报错的。这时我们要进行特别的配置:配置css-loader后面可以通过?为其加个参数importLoaders=n,其中n表示css-loader之后额外有多少个loader来处理import引入的css文档。
实践如下;
在common.css同级添加一个flex.css文件,flex.css文件内容如下:
利用@import 将flex.css导入common.css
相关配置:
npm run webpack打包之后的结果:(会出现两个style标签,且利用import引入的css中属性加了前缀)
首先通过npm安装less和less-loader:
在app.js文件中导入less文件
在配置文件中进行配置:
命令行npm run webpack结果:(会出现三个style标签,最后一个将less文件中的内容转换为css通过style标签引入样式)
首先要安装node-sass和sass-loader
在配置文件中进行如下配置就可进行打包了
处理scss文件与less文件类似,就不过多再说了
对模板进行打包:将模板处理成一个字符串赋值给一个对象的某个属性,再返回这个对象,最后通过对象的属性就可调用这个模板。安装不同的loader可以处理不同的模板文件,具体见webpack官网。
使用html-loader处理webpack中的HTML模板 (将模板处理成字符串后再使用的)
使用前建好相关的目录文件:
layer.js为模板文件:
在layer.js中引入模板文件,将其转化为对象的某个属性,并导出这个对象:
在app.js中导入layer对象,并结合dom使用:
在index.html中增加id为app的div:
下面是html-loader的使用过程:
首先安装:npm install html-loader --save-dev
然后在配置文件中进行loader的配置:
最后npm run webpack进行打包,打包生成的html文件(模板已经被成功引入使用):
注意事项:
使用ejs-loader处理webpack中的tpl模板 (将模板处理成函数后再使用的)
使用前建好相关的目录文件:
新建模板文件layer.tpl,其中使用ejs语法规则:
layer.js
在app.js中,因为此处的模板作为处理为一个函数了,引用时可向其中传些参数供模板中使用
下面是ejs-loader的使用过程:
首先 安装:cnpm install ejs-loader --save-dev
其次 进行相关配置:
最后npm run webpack 打包,生成html文件如下:
在对css样式中引入的图片文件(如设置背景的图片)或在根目录下的index.html中通过img标签引入的图片进行打包时都注意将图片路径设置为相对路径如:./../img.jpg。
可以使用file-loader和url-loader进行图片文件的打包,我们先实践使用file-loader
使用前建立好文件目录:
在tpl模板文件中引入图片,注意引入方式:
在样式文件中引入图片作为背景图片:
使用过程如下:
首先 安装file-loader: npm install file-loader --save-dev
接着进行相关配置:
最后命令行执行npm run webpack进行打包,打包生成的目录结构和html文件:
接下来是url-loader的使用
使用场景: 当文件大小大于了设置的限制大小,则图片就交由file-loader进行处理;当图片大小低于限制大小,就会将图片转为base64编码,不再是一个url(不再是一个http请求),图片会被打包进html,css,js
使用过程:
首先安装 npm install url-loader --save-dev
其次进行相关的配置:
两种打包方式的比较:
使用base64的优缺点:
将图片进行压缩之后再进行url或file-loader的处理
使用图片压缩的loader:image-webpack-loader
首先进行安装: npm install image-webpack-loader --save-dev
然后进行相关配置:
最后执行npm run webpack 进行打包。打包后可发现图片文件大小变小了
此外:image-webpack-loader还有很多关于png.jpg等图片文件优化处理的设置,具体可以查看github上的image-webpack-loader官网可以看到
实践代码传送门