HOME
NAVIGATION

从零开始搭建一个webpack4.x+React+Redux+Sass的demo(2)

0.安装Sass

查了一下,Sass的功能比Less多一些,在服务器上跑,性能可能也会好一些?所以学一下吧

装个Ruby一路回车就OK,然后用gem装sass

gem install sass

再装个解析css样式的loader

npm i node-sass sass-loader -D

Sass在webpack中配置

{
test:/\.scss$/,
use:["style-loader", "css-loader","sass-loader"]
},
{
test:/\.css$/,
use:["style-loader","css-loader"]
},

引入时候sass或者css都可以引

import './css/style.css'; // 引入css
import './sass/style.scss'; // 引入scss

尝试写了一下嵌套,webpack dev server和webpack打包都能正常解析,sass配置搞定!

1.拆分CSS在webpack中配置

extract-text-webpack-plugin插件

上述方法打包后的css文件是以行内样式style的标签写进打包后的html页面中,如果样式很多的话,我们更希望直接用link的方式引入进去,这时候需要把css拆分出来。

extract-text-webpack-plugin插件它的功效就在于会将打包到js里的css文件进行一个拆分,单独提取css

const ExtractTextWebpackPlugin = require('extract-text-webpack-plugin');
{
test:/\.scss$/,
use: ExtractTextWebpackPlugin.extract({
fallback:"style-loader",
use:["css-loader",'sass-loader']
})
},
{
test:/\.css$/,
use: ExtractTextWebpackPlugin.extract({
fallback:"style-loader",
use:["css-loader"]
})
},
plugins: [
...
new ExtractTextWebpackPlugin('css/style.css')
],

这是个插件,所以一开始要const引入

此时,style-loader已经不需要了,因为现在已经用插件让css用link的方式引入了

现在打包一下(还是用之前写的嵌套sass),用webpack打包,可在dist文件中看到一个css文件夹、一个index.html和一个js文件, css文件夹中有一个.css文件。

打开html文件,能看到在head中有这样一句代码

<"link href="css/style.css" rel="stylesheet"/>

这样css文件或者sass文件就会通过link引入了

在plugins中设置的是路径,css文件会放在这个路径中,且规定好了名字。

2.装个babel-polyfill插件

Babel默认只转换新的JavaScript句法(syntax),而不转换新的API,比如Iterator、Generator、Set、Maps、Proxy、Reflect、Symbol、Promise等全局对象,以及一些定义在全局对象上的方法(比如Object.assign)都不会转码。 举例来说,ES6在Array对象上新增了Array.from方法。Babel就不会转码这个方法。如果想让这个方法运行,必须使用babel-polyfill,为当前环境提供一个垫片。

emmm想到美好的Set方法,看来这个插件也是不得不装了

npm install --save-dev babel-polyfill

看网上说可以通过webpack引入,或者在第一个js文件的顶部引入,我用webpack吧

entry: ["babel-polyfill","./src/index.js"]

OK,这就安排上了,具体有没有效,那之后写代码的时候再测试吧