webpack笔记二 管理资源

webpack最出色的功能之一就是除了引入JavaScript,还可以通过loader引入任何其它类型的文件。

加载CSS

为了在JavaScript模块中import一个CSS文件,需要安装style-loader和css-loader:

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

webpack.config.js

  1. const path = require('path');
  2. module.exports = {
  3. entry: './src/index.js',
  4. output: {
  5. filename: 'bundle.js',
  6. path: path.resolve(__dirname, 'dist')
  7. },
  8. module: {
  9. rules: [
  10. {
  11. test: /\.css$/,
  12. use: ['style-loader', 'css-loader']
  13. }
  14. ]
  15. }
  16. };

src目录下新建style.css文件,并增加样式。

然后在src/index.js中引入样式文件:

  1. import _ from 'lodash';
  2. import './style.css';
  3. function component() {
  4. let element = document.createElement('div');
  5. element.innerHTML = _.join(['Hello', 'webpack'], ' ');
  6. element.classList.add('hello');
  7. return element;
  8. }
  9. document.body.appendChild(component());

最后执行npm run build后查看页面可以看到对应的效果。

加载图像

使用file-loader

  1. npm install --save-dev file-loader

webpack.config.js

  1. ...
  2. module.exports = {
  3. ...
  4. module: {
  5. rules: [
  6. ...
  7. {
  8. test: /\.(png|svg|jpg|gif)$/,
  9. use: ['file-loader']
  10. }
  11. ]
  12. }
  13. };

src/index.js

  1. import _ from 'lodash';
  2. import './style.css';
  3. import Icon from './icon.png';
  4. function component() {
  5. let element = document.createElement('div');
  6. element.innerHTML = _.join(['Hello', 'webpack'], ' ');
  7. element.classList.add('hello');
  8. const myIcon = new Image();
  9. myIcon.src = Icon;
  10. element.appendChild(myIcon);
  11. return element;
  12. }
  13. document.body.appendChild(component());

加载fonts字体

file-loader以及url-loader可以接收并加载任何文件,然后将其输出到构建目录。

webpack.config.js

  1. module.exports = {
  2. ...
  3. module: {
  4. rules: [
  5. ...
  6. {
  7. test: /\.(woff|woff2|eot|ttf|otf)$/,
  8. use: ['file-loader']
  9. }
  10. ]
  11. }
  12. };

src目录下增加my-font.ttf字体文件后,样式文件:

src/style.css

  1. @font-face {
  2. font-family: 'MyFont';
  3. src: url('./my-font.ttf');
  4. font-weight: 600;
  5. font-style: normal;
  6. }
  7. .hello {
  8. color: red;
  9. background: url('./icon.png');
  10. font-family: 'MyFont';
  11. font-size: 24px;
  12. }

打包后可以看到,字体被应用:

加载数据

webpack可以加载如JSON文件,CSV、TSV和XML。

JSON文件可以直接导入,无须loader。而CSV、TSV可以使用csv-loader,XML使用xml-loader

webpack.config.js

  1. module.exports = {
  2. ...
  3. module: {
  4. rules: [
  5. ...
  6. {
  7. test: /\.(csv|tsv)$/,
  8. use: ['csv-loader']
  9. },
  10. {
  11. test: /\.xml$/,
  12. use: ['xml-loader']
  13. }
  14. ]
  15. }
  16. };

src/index.js

  1. ...
  2. import Data from './data.xml';
  3. console.log(Data);

data.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <note>
  3. <to>Mary</to>
  4. <from>John</from>
  5. <heading>Reminder</heading>
  6. <body>Call Cindy on Tuesday</body>
  7. </note>

全局资源

无需依赖于含有全部资源的/assets目录,而是将资源与代码组合在一起使用。

这种配置方式会使你的代码更具备可移植性。

  1. |– /components
  2. | |– /my-component
  3. | | |– index.jsx
  4. | | |– index.css
  5. | | |– icon.svg
  6. | | |– img.png

The end... Last updated by: Jehorn, April 24, 2019, 3:23 PM

demo源码

webpack笔记二 管理资源的更多相关文章

  1. webpack笔记三 管理输出

    webpack笔记三 管理输出 增加src/print.js: export default function printMe() { console.log('I get called from p ...

  2. C#学习笔记二 (资源托管,泛型,数组和元组,运算符和类型强制转换)

     托管和非托管资源 1.托管资源是指GC管理的内存空间,非托管资源是指文件句柄,网络连接,数据库连接等. 2.方法中临时申请的变量,被存放在栈中.栈存储非对象成员的值数据.例如在方法中有B b=new ...

  3. OCP读书笔记(16) - 管理资源

    使用者组 创建资源用户组OLTP_GRP,将用户HR,OE加入此组: BEGIN dbms_resource_manager.clear_pending_area(); dbms_resource_m ...

  4. webpack笔记二——entry

    entry是输入目录文件,有三种形式 1.对象键值对形式 entry: { main: './src/script/main.js', b: './src/script/b.js' }, 注意的是输出 ...

  5. webpack(3)-管理资源

    管理资源:(file-loader 和 url-loader 可以接收并加载任何文件,然后将其输出到构建目录) 加载css:style-loader.css-loader 以style的形式插入到he ...

  6. Webpack笔记(二)——搭建React开发环境

    前几天一直在学习webpack,总算比之前学习的时候有了点收获,所以在昨天发布了一篇webpack入门笔记,今天继续使用webpack练了练手,搭建了一个React开发环境,如果还不熟悉的童鞋可以看一 ...

  7. EC笔记:第三部分:13、以对象管理资源

    C++相比Java等含有gc的语言来说,内存管理方面(也包括资源管理)比较令人头疼.一些初级程序员,甚至是一些经验丰富的老程序员,也会经常在资源管理上犯错.这时候就需要一个能够自动管理资源的东西(gc ...

  8. 《Effective C++》学习笔记条款13 以对象管理资源

    条款 13 :以对象管理资源 例:      voidf()      {           Investment *pInv = createInvestment();           ... ...

  9. 读书笔记 effective c++ Item 13 用对象来管理资源

    1.不要手动释放从函数返回的堆资源 假设你正在处理一个模拟Investment的程序库,不同的Investmetn类型从Investment基类继承而来, class Investment { ... ...

随机推荐

  1. 用jquery来实现类似“网易新闻”横向标题滑动的移动端页面

    HTML: <div id="navbar"> <div id='navbar_content' style="left:0px;"> ...

  2. $scope作用域与依赖注入

    一.$scope与$rootscope作用域 $scope下的数据作为该控制器下的数据moduel,只有在该控制器下才能够访问:而$rootScope则可以可以再任何有效的地方访问到,这个有效的地方指 ...

  3. android逆向基础:apk 反编译 重打包 重签名

    apk 反编译大家都比较熟悉,这里只做一个笔记. 1 反编译 apk apktool d perfect.apk 这样就把资源文件解压缩了, classes.dex 也反编译成了 smali 文件 2 ...

  4. 使用EditPlus编辑Linux上的文本文件

    在Linux上我们都使用vim 或者vi命令对文件进行编辑,但是我们习惯的一般都是windows系统, 那么怎么才能像在windows上一样编辑我们Linux上的文件呢?下面我们就来看看如何使用 wi ...

  5. Redis之数据类型Sting字符串

    Redis String(字符串) string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value. string类型是二进制安全的.意思是redi ...

  6. 设置主外键时 ORA-02298: 无法验证 - 未找到父项关键字 --NOVALIDATE;

    主要原因是: 在添加CONSTRAINT的时候,默认是需要VALIDATE表中的已有数据的. 你要插入的表A里,有外键连接到另一个表B的主键,你在表A的外键列插入的值,在表B的主键列找不到就不能插入. ...

  7. 第8章 scrapy进阶开发(1)

    8-1 selenium动态网页请求与模拟登录知乎 Ⅰ.介绍selenium 1.什么是selenium:selenium百度百科 2.selenium的构架图: 如果要操作浏览器,还需要一个driv ...

  8. IO流实现模拟软件试用的功能

    import java.io.*; public class TryOut { /** * IO流模拟软件试用次数的功能 * 这里注意try里BufferedOutputStream不要和InputS ...

  9. Java实现进程调度算法(二) RR(时间片轮转)

    一.概述 因为这次os作业对用户在控制台的输入输出有要求,所以我花了挺多的代码来完善控制台的显示. 也因为我这次要实现多个类似算法,所以将一些共性单独提取出来作为一个类. 如果只想要和算法有关的核心代 ...

  10. Java新人拿到一台新的电脑需要装配什么

    适用对象:新手 装备:win10 一.IDEA 插件等 说明 其他 TranslationPlugin 翻译插件 GitHub地址 MyBatis-Generator 自动生成Mybatis文件 Al ...