webpack学习记录(二)-管理资源

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

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

以上是官网的解释,我简单的理解就是webpack是可以通过依赖动态管理你的资源的,在模块化的开发中,可以根据他们自身的依赖项,将需要的依赖打包。

那么要根据依赖动态管理资源,就需要我们对资源的加载进行管理,就需要进行相关配置,在webpack.config.js中进行module配置

const path =require('path');
module.exports={
    entry: './src/index.js',
    output:{
        filename: 'bundle.js',
        path: path.resolve(__dirname, 'dist')
    },
    module:{
        rules:[
            {
                // 加载css  安装style-loader css-loader
                // npm install --save-dev style-loader css-loader
                test:/\.css$/,
                use:[
                'style-loader',
                'css-loader'
                ]
            },
            {
                // 加载图片  安装file-loader
                // npm install --save-dev file-loader
                test:/\.(png|svg|jpg|gif)$/,
                use:[
                'file-loader'
                ]
            },
            {
                //加载字体文件
                test: /\.(woff|woff2|eot|ttf|otf)$/,
                use: [
                'file-loader'
                ]
      }
        ]
    }
}

通过以上方式,可以以更直观的方式将模块和资源组合在一起。无需依赖于含有全部资源的 /assets 目录,而是将资源与代码组合在一起。这种配置方式会使你的代码更具备可移植性,因为现有的统一放置的方式会造成所有资源紧密耦合在一起。假如你想在另一个项目中使用 /my-component,只需将其复制或移动到 /components 目录下。只要你已经安装了任何扩展依赖(external dependencies),并且你已经在配置中定义过相同的 loader,那么项目应该能够良好运行。

原文地址:https://www.cnblogs.com/yanggl/p/10292180.html

时间: 2024-08-30 01:48:40

webpack学习记录(二)-管理资源的相关文章

webpack学习记录(十二)-区分不同环境

webpack学习记录(十二)-区分不同环境 定义全局变量 使用webpack内置的插件DefinePlugin 允许创建一个在编译时可以配置的全局常量. 用法 //在webpack.config.js中配置插件 new webpack.DefinePlugin({ PRODUCTION: JSON.stringify(true) }) //在index.js中使用定义的变量 if (!PRODUCTION) { console.log('Debug info') } if (PRODUCTIO

Windows API 编程学习记录<二>

恩,开始写Windows API编程第二节吧. 上次介绍了几个关于Windows API编程最基本的概念,但是如果只是看这些概念,估计还是对Windows API不是很了解.这节我们就使用Windows API 让大家来了解下Windows API的用法. 第一个介绍的Windows API 当然是最经典的MessageBox,这个API 的作用就是在电脑上显示一个对话框,我们先来看看这个API的定义吧: int WINAPI MessageBox(HWND hWnd, LPCTSTR lpTe

webpack学习记录(十)-跨域

webpack学习记录(十)-跨域 准备工作 建一个简单的服务端 const express = require('express') let app = express() app.get('/api/user', (req,res) => { res.json({msg:'服务器启动'}) ) app.listen(3000) 发送一个请求 let xhr = new XMLHttpRequest() xhr.open('get','/api/user',true) xhr.onload =

Spring Boot学习记录(二)--thymeleaf模板

Spring Boot学习记录(二)–thymeleaf模板 标签(空格分隔): spring-boot 自从来公司后都没用过jsp当界面渲染了,因为前后端分离不是很好,反而模板引擎用的比较多,thymeleaf最大的优势后缀为html,就是只需要浏览器就可以展现页面了,还有就是thymeleaf可以很好的和spring集成.下面开始学习. 1.引入依赖 maven中直接引入 <dependency> <groupId>org.springframework.boot</gr

webpack学习记录(九)-小插件应用

webpack学习记录(九)-小插件应用 clean-webpack-plugin 每次输出之前先删除之前的目录,即每次输出都是最新的打包文件 安装及配置 npm i clean-webpack-plugin -D // 注意该插件引入方式需要用解构赋值才有效 const {CleanWebpackPlugin} = require('clean-webpack-plugin') module.exports = { plugins: [ new CleanWebpackPlugin() ] }

webpack学习记录(一)-起步

基本安装 首先建一个你的项目工程目录,初始化npm,在本地安装webpack以及webpack-cli mkdir webpack-demo cd webpack-demo npm init -y npm install webpack webpack-cli --save-dev 现在进入该项目目录,创建下面这个目录结构 webpack-demo ????|- package.json +??|- index.html +??|- /src +???? |- index.js src/inde

webpack学习笔记 (二) html-webpack-plugin使用

这个插件的两个作用: 为html文件中引入的外部资源如script.link动态添加每次compile后的hash,防止引用缓存的外部文件问题 可以生成创建html入口文件,比如单页面可以生成一个html文件入口,配置N个html-webpack-plugin可以生成N个页面入口 安装使用如下: 一.首先安装html-webpack-plugin插件 在cmd中打开项目,输入cnpm install html-webpack-plugin: 二.在webpack-config.js的plugin

Maven学习记录(二)--Maven核心概念

转载自 http://www.cnblogs.com/xdp-gacl/p/4051819.html 博主写的很好,所以直接转载过来了 一.Maven坐标 1.1.什么是坐标? 在平面几何中坐标(x,y)可以标识平面中唯一的一点. 1.2.Maven坐标主要组成 groupId:组织标识(包名) artifactId:项目名称 version:项目的当前版本 packaging:项目的打包方式,最为常见的jar和war两种 样例: 1.3.Maven为什么使用坐标? Maven世界拥有大量构建,

Mybatis学习记录(二)--Mybatis开发DAO方式

mybatis开发dao的方法通常用两种,一种是传统DAO的方法,一种是基于mapper代理的方法,下面学习这两种开发模式. 写dao之前应该要对SqlSession有一个更加细致的了解 一.mybatis的SqlSession使用范围 SqlSessionFactoryBuilder用于创建SqlSessionFacoty,SqlSessionFacoty一旦创建完成就不需要SqlSessionFactoryBuilder了,因为SqlSession是通过SqlSessionFactory生产