全国咨询热线:18720358503

微信小程序定制设计_webpack与SPA实践之管理CSS等资

类别:媒体报道 发布时间:2021-01-11 浏览人次:

webpack与SPA实践之管理CSS等资源的方法       本篇文章主要介绍了webpack与SPA实践之管理CSS等资源的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

介绍了如何使用webpack搭建一个稳定的支持本地服务、自动刷新、模块热替换、使用ES6编写JavaScript的开发环境,本篇主要介绍webpack如何处理HTML应用三大元素的另一元素 – CSS及其他诸如图片、字体文件或者数据配置文件等资源。

前言

在学习使用webpack时,我们需要明白无论它怎么设计,它的工作原理、流程是什么,最根本的它处理的还是HTML文档中的HTML标签、JavaScript、CSS、图片等资源,而且最终的处理结果依然必须是一个HTML文档,包括DOM、JavaScript、CSS,而CSS在文档中的存在方式,有三种:行内样式,内联样式,外链样式,行内样式使用方式早已不推荐,所以webpack处理CSS方式也就两种:

内联样式: 以 style 标签方式在HTML文档中嵌入样式; 外链样式: 打包生成CSS文件,通过 link 标签引入样式;

webpack与CSS

我们知道,webpack本质是只能处理JavaScript的,而对于其他资源,需要使用加载器和插件将其处理成JavaScript模块,然后进行模块依赖管理。webpack提供style-loader和css-loader两个加载器支持我们模块化CSS,因此可以在其他模块内直接引入。

安装

npm install --save-dev style-loader css-loader

配置

在webpack配置文件的模块加载器选项中添加如下配置:

 module: {
 loaders: [
 { test: /\.css$/, loader: "style-loader!css-loader" }
 }

当然为了方便使用引用路径,还可以配置路径片段别名:

 alias: {
 styles: path.resolve(__dirname, 'src/styles/')
 }

此时,import 'styles/index.css';等同于使用相对路径,如import '../src/styles/indx.css';

使用

配置好以后,假如我们在styles目录下创建了一个index.css文件,现在可以在JavaScript文件中直接引入该CSS: import 'styles/index.css'; 或 require('styles/index.css');

css内容如下:

 html, body {
 width: 100%;
 height: 100%;
 .container {
 color: red;
 }

页面展示如图:

内联样式

前面提到了webpack处理CSS的方式有两种,第一种是以内联方式在页面 head 标签内动态插入 style 内联样式,这种方式也是webpack的默认处理方式,只需要简单配置如下加载器:

 test: /\.css$/,
 exclude: /node_modules/,
 loader: 'style-loader!css-loader'
 // or 
 // loaders: ['style-loader', 'css-loader']
 }

WEBPACK加载器解析顺序

如上面代码所示,无论是字符串语法style-loader!css-loader,亦或是数组语法['style-loader', 'css-loader'] ,webpack解析规则都是从右至左,依次解析并执行加载器处理文件,前一加载器处理的输出就是下一加载器处理的输入,直到最后加载器处理完成;此处即webpack先调用css-loader加载器处理css文件,然后将处理结果传递给style-loader加载器,style-loader接受该输入继续处理。

CSS-LOADER

我们已经反复强调,webpack只能处理JavaScript,所以对于其他诸如css或图片等资源需要使用加载器将其转换输出为JavaScript模块,webpack才能继续处理。

css-loader加载器的作用就是支持我们像使用JavaScript模块一样在JavaScript文件中引用CSS文件,如require ('./index.css'),所以你可以认为其作用是将CSS文件转换成JavaScript模块,于是我们可以直接通过引入JavaScript模块的方式直接引用。

参数

css-loader有两个常用参数:

modules: {boolean}指定是否使用CSS模块(如:local和:global设置局部或全局样式规则),默认是false,开启设置如css-loader modules; importLoaders: {number}指定css-loader加载器之前使用的加载器数量,默认是0,设置如css-loader importLoaders=1;

STYLE-LOADER

无论webpack怎么处理CSS文件,最终都需要将其输出到页面,才能实际使用该CSS规则,style-loader加载器就是将CSS以内联方式插入到页面文档,即:针对每一个输入(通过require引入,使用css-loader转换为JavaScript模块,传递给style-loader作为输入),style-loader在页面 head 标签内插入一个 style 标签,该标签内样式规则即此输入内容,如下实例:

外链样式

当然,我们并不总是希望所有样式都以内联方式存在页面中,很多时候我们也希望通过外链方式使用样式表,特别是样式规则较多的时候,webpack开发者们当然考虑了这样的需求。

webpack提供的style-loader加载器默认是以内联方式将样式插入文档,我们需要使用webpack extract-text-webpack-plugin插件以实现输出单独CSS文件。

EXTRACT TEXT PLUGIN

安装

首先安装该插件:

npm install --save-dev extract-text-webpack-plugin

配置

然后添加如下配置:

 var ExtractTextPlugin = require('extract-text-webpack-plugin');
 module: {
 loaders: [
 test: /\.css$/,
 exclude: /node_modules/,
 // 老版本 loader: ExtractTextPlugin.extract('style-loader', 'css-loader')
 loader: ExtractTextPlugin.extract({
 fallback:'style-loader',
 use: 'css-loader'
 plugins: [
 // 生成独立css文件
 new ExtractTextPlugin({
 filename: 'css/[name].css'

运行webpack命令,我们会看到在dist/css/文件夹下生成相应的CSS文件。

参数

filename {String | Function}

Extract Text Plugin为每个入口生成一个CSS文件,所以对于多入口项目需要指定filename参数[name]或[id]或[contenthash]生成唯一识别文件名;

disable {Boolean}

禁用此插件;

allChunks {Boolean}

allChunks: true;时指定从所有模块中抽取CSS输出至单独CSS文件,包括异步引入的额外模块;此插件默认是只抽取初始模块内引入的CSS;

extract方法

该方法可以以参数指定加载器,然后接受该加载器的输出,进行处理。需要在加载器和插件配置中同时声明相关配置,才能实现效果;在加载器配置中调用其extract方法传入通常以下两个参数:

1. use: 将CSS转换成模块的加载器;
2. fallback: 对于不被抽取输出至单独CSS文件的CSS模块使用的加载器,上例中`style-loader`即说明以内联方式使用,该加载器通常在`allChunks: false`时处理额外的模块;

FILENAME与OUTPUT

推荐阅读

微信小程序定制设计_webpack与SPA实践之管理CSS等资

webpack与SPA实践活动之管理方法CSS等資源的方式 详细介绍了怎样应用webpack构建一个平稳的适用当地服务、全自动更新、控制模块热更换、应用ES6撰写JavaScript的开发设计自然环境,...

2021-01-11
(干货)网站设计在网络营销中的作用

(干货知识)网站制作在互联网营销推广中的功效 :00 访问数:当今的时期化学物质日常生活十分富裕,大家大量的追求完美精神实质上的要求,电子器件商务接待的迅速发展趋势也考...

2021-01-11
微信小程序如何开发_JS改变页面颜色源码分享

JS更改网页页面色调源代码共享 大家先看来下实际的演试实际效果图下列便是详细的HTML网页页面编码,大伙儿能够检测下。!DOCTYPE html html lang="en" head meta charset="UTF-8" title Document ...

2021-01-11
旅游局网站建设方案

深圳市企业网站建设强调,度假旅游局企业网站建设不一样于一般的度假旅游基本建设,无论是技术专业的還是外行的,新建站以前针对顾客的掌握是最基本也是最基本性的,针对度...

2021-01-11
广州凡科互联网科技股份有限公司招聘销售顾问

招聘人数:24职位信息这是一个可以让你快速成长的尚德!这是一个年轻的团队,专注做事,开心happy!学习是一种信仰!于孤独处坚持,于迷茫处抉择!尚德机构于迷茫处指明方向,于...

2021-01-11
广州凡科互联网科技股份有限公司招聘游戏渠道

招聘人数:30职位信息岗位职责:1、通过公司安排招募游戏代理,与游戏代理达成合作。2、维护游戏玩家提高游戏玩家游戏体验,避免流失3、给予玩家开服提醒,解答游戏相关问题。4、整...

2021-01-11
X

400-8700-61718720358503
企业邮箱2639601583@qq.com
官方微信