整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

webpack资源管理一之加载 CSS使用详解

webpack资源管理一之加载 CSS使用详解

webpack 出现之前,前端开发人员会使用 grunt 和 gulp 等工具来处理资源,并将它们从 /src 文件夹移动到 /dist 或 /build 目录中。JavaScript 模块也遵循同样方式,但是,像 webpack 这样的工具,将动态打包所有依赖(创建所谓的 依赖图(dependency graph))。这是极好的创举,因为现在每个模块都可以明确表述它自身的依赖,可以避免打包未使用的模块。

webpack 最出色的功能之一就是,除了引入 JavaScript,还可以通过 loader 或内置的 Asset Modules 引入任何其他类型的文件。也就是说,以上列出的那些 JavaScript 的优点(例如显式依赖),同样可以用来构建 web 站点或 web 应用程序中的所有非 JavaScript 内容。让我们从 CSS 开始起步,或许你可能已经熟悉了下面这些设置。

初始化示例工程

首先我们创建一个目录webpack-css,用npm初始化 ,然后在本地安装 webpack:

mkdir webpack-css
cd webpack-css
npm init -y
npm install webpack webpack-cli --save-dev

目录结构、文件和内容如下:

  webpack-css
 |- package.json
 |- /dist
   |- index.html
 |-webpack.config.js

其中dist/index.html文件内容为:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>webpack 资源管理</title>
    <script src="bundle.js"></script>
</head>
<body>
      <div class="css_demo">css 资源管理</div>
</body>
</html>

webpack.config.js的文件内容如下:

 const path=require('path');
 module.exports={
   entry: './src/index.js',
   output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'dist'),
   },
 };

package.js的文件内容如下:

{
  "name": "webpack-css",
  "version": "1.0.0",
  "description": "",
  "private": true,
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build": "webpack"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "css-loader": "^5.2.0",
    "style-loader": "^2.0.0",
    "webpack": "^5.28.0"
  }
}

加载 CSS

为了在 JavaScript 模块中 import 一个 CSS 文件,你需要安装 style-loader 和 css-loader,并在 module 配置 中添加这些 loader:

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

修改webpack.config.js添加加载CSS:

const path=require('path')

module.exports={
    entry: './src/index.js',
    output: {
        filename: 'bundle.js',
        path: path.resolve(__dirname,'dist')
    },
    module: {
        rules: [
            {
                test: /\.css$/i,
                use: ['style-loader', 'css-loader']
            }
        ]
    }
}

模块 loader 可以链式调用。链中的每个 loader 都将对资源进行转换。链会按逆序执行。第一个 loader 将其结果(被转换后的资源)传递给下一个 loader,依此类推。最后,webpack 期望链中的最后的 loader 返回 JavaScript。

应保证 loader 的先后顺序:'style-loader' 在前,而 'css-loader' 在后。如果不遵守此约定,webpack 可能会抛出错误。

webpack 根据正则表达式,来确定应该查找哪些文件,并将其提供给指定的 loader。在这个示例中,所有以 .css 结尾的文件,都将被提供给 style-loader 和 css-loader。

这使你可以在依赖于此样式的 js 文件中使用 import './style.css'。现在,在此模块执行过程中,含有 CSS 字符串的 <style> 标签,将被插入到 html 文件的 <head> 中。

我们尝试一下,通过在项目中添加一个新的 style.css 文件,并将其 import 到我们的 index.js 中。

在src的目录下创建 style.css 文件,src/style.css文件内容如下:

.css_demo {
  color: red;
}

在src/index.js的文件中引入style.css:

import './style.css'

执行打包命令

npm run build

> webpack-css@1.0.0 build D:\project\mockjs\webpack-css
> webpack

asset bundle.js 3.58 KiB [emitted] [minimized] (name: main)
runtime modules 663 bytes 3 modules
orphan modules 326 bytes [orphan] 1 module
cacheable modules 8.9 KiB
  modules by path ./src/ 679 bytes
    ./src/index.js + 1 modules 346 bytes [built] [code generated]
    ./node_modules/css-loader/dist/cjs.js!./src/style.css 333 bytes [built] [code generated]
  modules by path ./node_modules/ 8.23 KiB
    ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js 6.67 KiB [built] [code generated]
    ./node_modules/css-loader/dist/runtime/api.js 1.57 KiB [built] [code generated]

WARNING in configuration
The 'mode' option has not been set, webpack will fallback to 'production' for this value.
Set 'mode' option to 'development' or 'production' to enable defaults for each environment.
You can also set it to 'none' to disable any default behavior. Learn more: https://webpack.js.org/configuration/mode/

webpack 5.28.0 compiled with 1 warning in 1573 ms

再次在浏览器中打开 dist/index.html,你应该看到 css 资源管理 现在的样式是红色。要查看 webpack 做了什么,请检查页面(不要查看页面源代码,它不会显示结果,因为 <style> 标签是由 JavaScript 动态创建的),并查看页面的 head 标签。它应该包含 style 块元素,也就是我们在 index.js 中 import 的 css 文件中的样式。

效果

注意,在多数情况下,你也可以进行 压缩 CSS,以便在生产环境中节省加载时间。最重要的是,现有的 loader 可以支持任何你可以想到的 CSS 风格 - postcss, sass 和 less 等。

在前面:java作为一门世界级编程语言金字塔顶尖的语言。需要大量的练习、练习、练习来巩固自己所获得的知识。冰冻三尺非一日之寒,希望大家在学习java的日子里一定一定要坚持不懈,严格要求。多练,多问,多百度。祝大家早日成为一名优秀的软件工程师!

文章摘要:此篇文章会带领大家创建一个html最简单的页面,以及在页面中增加一些简单的内容。

我先给大家放2张我以前教学的时候,开课前给学生画的图:

这2张图应该已经比较清晰明了的告诉你,学习java前端需要具备的一些主观和客观方面的东西,我就不多做解释了,以后我的文章中,会以代码图片及展现效果居多,尽量减少文字的占比。让大家对所学的知识有一个更直观的感受。

言归正传,想要编写html代码,首先需要一个后缀为.html的文件,这个文件怎么创建呢?最简单的方式,建一个txt,然后把后缀改为.html,用编辑器打开,就可以编写代码了。

当然,txt界面太丑,笔者这里选用sublime,该编辑器也可以直接加载一个html模板,选择菜单→新建文件(模板)→html,当然,前提要先设置好这个模板,具体设置方法这里就不做详细介绍了,百度上一大堆。新建完成后,产生一个代码如下的页面:

然后在<body></body>标签体之间打入一行代码

用浏览器打开该文件,显示如下图,说明这个html文件已经创建成功了,能够正常的编写代码。

零基础的同学一定对刚才的代码比较疑惑,虽然照着写能实现功能,但是这些代码各自又都是什么意义呢? 我用注释的方式上图来告诉大家:

首先,html 的标签分为自闭和标签和闭合标签

自闭和标签:就是没有结束标签,比如上图的<meta>标签,该标签是没有结束标签相呼应的。

闭合标签:有开始和结束标签,比如上图的<html><body><h1>标签,他们都有一个</html></body></h1>相呼应

在上图中,我用过了比较多的 < !-- -- >标签,这是html里的注释标签,在编写代码的过程中,勤加注释是一个非常非常好的习惯,不仅方便了他人也方便了以后自己代码的维护。所以说,不加注释的代码都是在耍流氓。

我们80%的页面标签代码都会写在<body></body>标签里面,什么是标签,至少包含< > 和标签元素,比如<div><a><p><input>等,标签还有标签属性和属性值,标签属性和属性值在第一个标签内容中,如果是多个标签则以空格符号分割 ,如图:

Div 是整个html中最常用的一个标签元素,<div></div>类似于一个盒子,里面可以承载各种各样的元素标签,大家看到的所有的网站都是靠着div一个个的盒子规划开来,最后拼接在一起的,形成了一个完整的页面。

那么如何去建立一个div呢?首先,我们在html的<body></body>标签中加入一个<div></div>标签 ,但是单纯的加入标签并不会在页面中产生肉眼可见的东西,因为我们还要定义这个div的宽,高,背景色,边框等等,详见如下代码:

这样的一行代码,最后展现出来的效果是:

我们来一点点的剖析这一行代码:

Style:style 是元素标签里的一个标签属性,他的作用是可以定义该标签的样式。里面的样式格式是xxx:xxx; 每一组样式都是这样的定义,冒号用来隔开样式属性和样式属性值,最后以分号结尾.

width:定义该元素的宽

height:定义该元素的高

background:定义该元素的背景颜色(也可使用red,yellow等颜色定义)

border:定义该元素的边框

4px 代表边框粗细,

solid 代表边框样式, 边框样式又分为solid(实框)、dotted(虚框)

red代表边框颜色,边框颜色也可用#ccc,#112233这种形式表现

Div里可以放入文字、图片、标签元素等各式各样的东西。下面我演示一下如何放入照片:

首先,放入照片要使用到<img>标签,这是一个自闭和标签,所有没有结束标签。

Src代表图片的路径,width,height 代表图片的宽度和高度 ,alt是图片的描述

这个路径可以是相对路径,也可以是绝对路径。

相对路径:就是相对于这个网页的路径,比如图片和网页在同一个文件夹下,那么src处就直接填图片的文件名字就可以,若建了一个文件夹images,图片放在该文件夹中,同时这个文件夹和网页在同一个位置,那么src所填的就是images/图片名字.jpg

绝对路径:即从头开始写路径,如src=“C:/xxx/xxx/xxx/xxx.jpg”

假设我现在的图片位置和网页位置同处一处

最后的效果:

我这里改大了DIV的宽度和高度,若图片所设的宽高大于DIV的宽度高度,那么将会发生溢出的情况,同学们可以自己去试一下,这种溢出的情况也有对应的标签可以做调整,这个我们后面再讲。

这边特别提醒一点,如果div没有设定宽度width,则默认为等同浏览器宽度的宽度,若div没有设定高度,则该div根据div中内容进行高度的伸缩,div中的内容有多高,div就有多高,如图,我把width和height全部去掉:

上图width和height全部去掉,所以,width默认跟浏览器宽度等宽,高度为图片的高度。

文字的话就比较简单了,代码贴上:

最后结果:

第二句文字才是div创建出来的文字,我解释一下style里面的样式:

Font-size:文字大小,px为单位(像素)

Font-family:文字样式,分为很多,这个可以去word文档里找找

Font-weight:文字加粗,bold是一种默认加粗的大小。

End.

来源:公众号“java编程”

运行人员:中国统计网小编(微信号:itongjilove)

微博ID:中国统计网

中国统计网,是国内最早的大数据学习网站,公众号:中国统计网

http://www.itongji.cn