SCSS提取和懒加载

站长手记 作者: 2024-08-28 07:30:01
本节课讲解在webpack v4中的 SCSS 提取和懒加载。值得一提的是,v4和v3在 Scss 的懒加载上的处理方法有着巨大差别。本节课主要涉及 SCSS 在懒加载下提取的相关配置和插件使用。

1. 准备工作

	
  1. {
  2. "devDependencies": {
  3. "css-loader": "^1.0.0",
  4. "extract-text-webpack-plugin": "^4.0.0-beta.0",
  5. "node-sass": "^4.9.2",
  6. "sass-loader": "^7.0.3",
  7. "style-loader": "^0.21.0",
  8. "webpack": "^4.16.0"
  9. }
  10. }
	
  1. // 网站默认背景色:red
  2. $bgColor: red !default;
  3. *,
  4. body {
  5. margin: 0;
  6. padding: 0;
  7. }
  8. html {
  9. background-color: $bgColor;
  10. }
	
  1. // 覆盖原来颜色:green
  2. html {
  3. background-color: green !important;
  4. }

2. 使用ExtractTextPlugin

	
  1. const path = require("path");
  2. const ExtractTextPlugin = require("extract-text-webpack-plugin");
  3. module.exports = {
  4. entry: {
  5. app: "./src/app.js"
  6. },
  7. output: {
  8. publicPath: __dirname + "/dist/",
  9. path: path.resolve(__dirname, "dist"),
  10. filename: "[name].bundle.js",
  11. chunkFilename: "[name].chunk.js"
  12. },
  13. module: {
  14. rules: [
  15. {
  16. test: /\.scss$/,
  17. use: ExtractTextPlugin.extract({
  18. // 注意 1
  19. fallback: {
  20. loader: "style-loader"
  21. },
  22. use: [
  23. {
  24. loader: "css-loader",
  25. options: {
  26. minimize: true
  27. }
  28. },
  29. {
  30. loader: "sass-loader"
  31. }
  32. ]
  33. })
  34. }
  35. ]
  36. },
  37. plugins: [
  38. new ExtractTextPlugin({
  39. filename: "[name].min.css",
  40. allChunks: false // 注意 2
  41. })
  42. ]
  43. };

3. SCSS引用和懒加载

	
  1. import "style-loader/lib/addStyles";
  2. import "css-loader/lib/css-base";
	
  1. import "./scss/base.scss";
  2. var loaded = false;
  3. window.addEventListener("click", function() {
  4. if (!loaded) {
  5. import(/* webpackChunkName: 'style'*/ "./scss/common.scss").then(_ => {
  6. // chunk-name : style
  7. console.log("Change bg-color of html");
  8. loaded = true;
  9. });
  10. }
  11. });

4. 打包和引入

	
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <title>Document</title>
  8. <link rel="stylesheet" href="./dist/app.min.css">
  9. </head>
  10. <body>
  11. <script src="./dist/app.bundle.js"></script>
  12. </body>
  13. </html>
原创声明
本站部分文章基于互联网的整理,我们会把真正“有用/优质”的文章整理提供给各位开发者。本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
本文链接:http://www.jiecseo.com/news/show_70002.html
SCSS 懒加载