【大前端】webpack初体验(1)

Webpack安装&使用

安装

npm install webpack webpack-cli -D

使用方式

方式一
./node_modules/.bin/webpack --version
方式二
npx webpack --version

入口(entry)

**入口起点(entry point)**指示 webpack 应该使用哪个模块,来作为构建其内部依赖图的开始。进入入口起点后,webpack 会找出有哪些模块和库是入口起点(直接和间接)依赖的。

出口(output)

output 属性告诉 webpack 在哪里输出它所创建的 bundles,以及如何命名这些文件,默认值为 ./dist

const config = {
    entry: './src/index.js',
    output: {
        filename: 'bundle.js',
        path: path.join(__dirname, './dist')
    }
}

loader

loader 让 webpack 能够去处理那些非 JavaScript 文件(webpack 自身只理解 JavaScript)。loader 可以将所有类型的文件转换为 webpack 能够处理的有效模块,然后你就可以利用 webpack 的打包能力,对它们进行处理。

让webpack处理CSS文件

webpack 根据正则表达式,来确定应该查找哪些文件,并将其提供给指定的 loader。在这种情况下,以 .css 结尾的全部文件,都将被提供给 style-loader css-loader

  • 引入对应loader

    npm install --save-dev css-loader
    npm install --save-dev style-loader
    
  • 编写规则,匹配哪些后缀使用哪些loader webpack.config.js

    module:{
        rules:[
            {
                test:/\.css$/,
                use:['style-loader','css-loader']
            }
        ]
    }
    
  • loader链式传递,先从后面的loader开始

让webpack处理scss文件

  • 引入对应loader

    npm install sass-loader node-sass -D
    
  • 编写规则

    module:{
        rules:[
            {
                test:/\.(scss|sass)$/,
                use:['style-loader','css-loader','sass-loader']
            }
        ]
    },
    

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

让webpack处理图片

  • 引入对应loader

    npm install file-loader -D
    
  • 编写规则

    {
        test: /\.(png|jpg|svg|gif)$/,
        use:['file-loader']
    }
    
  • 可以在index.js中引入

    import Icon from './icon.jpg';
    
    //将图像添加到我们现有的div
    const myIcon = new Image();
    myIcon.src = Icon;
    element.appendChild(myIcon);
    
  • 也可在index.scss中引入

    .hello{
      color: red;
      background: url("./icon.jpg");
    }
    

让webpack处理字体

  • 引入对应loader

    npm install file-loader -D
    
  • 编写规则

    {
        test:/\.(woff|woff2|eot|ttf|otf)$/,
        use:['file-loader']
    }
    
  • index.scss中引入

    @font-face {
      font-family: 'Myfont';
      src: url("./myfont.TTF") format('ttf');
      font-weight: 600;
      font-style: normal;
    }
    .hello{
      color: red;
      font-family: Myfont;
    }
    

让webpack处理CSVTSVXML

  • 引入对应loader

    npm install csv-loader xml-loader -D
    
  • 编写规则

    {
        test:/\.(csv|tsv)$/,
        use:['csv-loader']
    },
    {
        test:/\.xml$/,
        use:['xml-loader']
    }
    
  • src下创建data.xml并在index.js中引入

    • data.xml
    <?xml version="1.0" encoding="UTF-8" ?>
    <note>
        <to>mary</to>
        <from>john</from>
        <heading>reminder</heading>
        <body>call cindy on tuesday</body>
    </note>
    
    • index.js
    import Data from './data.xml';
    
    console.log(Data);
    

插件(plugins)

loader 被用于转换某些类型的模块,而插件则可以用于执行范围更广的任务。插件的范围包括,从打包优化和压缩,一直到重新定义环境中的变量。插件接口功能极其强大,可以用来处理各种各样的任务。

使用plugins处理html

  • 引入对应plugins

    npm install html-webpack-plugin -D
    
  • 由于插件可以携带参数/选项,所以必须在webpack配置中,向plugins属性传入new实例

  • //处理src下的html文件
    plugins: [
            new HtmlWebpackPlugin({template: "./src/index.html"})
    ],
    

模式(mode)

通过选择 developmentproduction 之中的一个,来设置 mode 参数,你可以启用相应模式下的 webpack 内置的优化

module.exports = {
  mode: 'production'
};

模块热替换

过程

在应用程序中置换模块
  1. 应用程序代码要求HMR runtime检查更新
  2. HMR runtime(异步)下载更新,然后通知应用程序代码
  3. 应用程序代码要求HMR runtime应用更新
  4. HMR runtime(同步)应用更新
在编译器中

除了普通资源,编译器需要发出update,以允许更新之前的版本到新的版本,update由两部分组成:

  1. 更新后的manifest(JSON)
  2. 一个或多个更新后的chunk(JavaScript)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Webpack 是一个现代 JavaScript 应用程序的静态模块打包器。它主要用于打包 JavaScript 模块,但也可以将 CSS、图片、字体等其他类型的文件转换成 JavaScript 模块。Webpack 可以将应用程序中的所有资源视为模块,然后根据这些模块的依赖关系,打包成一个或多个静态资源。以下是前端webpack的基本用法: 1. 安装 webpackwebpack-cli 使用 npm 安装 webpackwebpack-cli: ``` npm install webpack webpack-cli --save-dev ``` 2. 创建 webpack 配置文件 在项目根目录下创建一个名为 `webpack.config.js` 的文件,该文件包含有关如何打包应用程序的配置选项。 3. 配置入口和出口 在 `webpack.config.js` 文件中,配置打包入口和出口: ``` module.exports = { entry: './src/index.js', output: { filename: 'bundle.js', path: path.resolve(__dirname, 'dist') } }; ``` 其中 `entry` 指定应用程序的入口点(即主要的 JavaScript 文件),`output` 指定打包后的文件名和目录。 4. 配置加载器 Webpack 可以使用加载器来处理非 JavaScript 文件。例如,可以使用 `babel-loader` 将 ES6+ 代码转换成 ES5 代码,或使用 `css-loader` 和 `style-loader` 处理 CSS 文件。在 `webpack.config.js` 文件中配置加载器: ``` module.exports = { // ... module: { rules: [ { test: /\.js$/, exclude: /node_modules/, use: { loader: 'babel-loader' } }, { test: /\.css$/, use: ['style-loader', 'css-loader'] } ] } }; ``` 上面的配置使用 `babel-loader` 处理所有 `.js` 文件,并使用 `css-loader` 和 `style-loader` 处理所有 `.css` 文件。 5. 运行 webpack 使用以下命令运行 webpack: ``` npx webpack ``` 这将根据 `webpack.config.js` 文件中的配置打包应用程序,并将打包后的文件输出到指定的目录中。 ### 回答2: 前端Webpack是一个模块打包工具,它主要用于将多个前端资源文件(如HTML、CSS、JavaScript等)进行打包、压缩、优化和管理。下面是前端Webpack的用法: 1. 安装Webpack:使用npm或yarn进行安装,运行命令`npm install webpack --save-dev`。 2. 创建Webpack配置文件:在项目根目录下创建一个名为webpack.config.js的文件,用于配置Webpack的相关参数和打包规则。 3. 配置入口文件:在webpack.config.js中配置entry,指定Webpack打包的入口文件。 4. 配置输出路径:在webpack.config.js中配置output,指定Webpack打包后的文件输出路径和文件名。 5. 配置加载器:在webpack.config.js中配置module,使用不同的加载器(loader)对不同类型的文件进行解析和转换,例如babel-loader用于转换ES6语法为ES5语法。 6. 配置插件:在webpack.config.js中配置plugins,使用插件对打包后的文件进行优化、压缩和处理,例如uglifyjs-webpack-plugin用于压缩JavaScript代码。 7. 运行Webpack:使用命令行在项目根目录运行`webpack`命令,Webpack会根据配置文件进行打包并输出打包结果。 8. 高级特性:Webpack还支持一些高级特性,如代码分割、动态加载、DevServer等,可以根据需要进行配置和使用。 总结:前端Webpack是一个功能强大的模块打包工具,通过配置文件对前端资源进行打包、压缩和处理,提升前端开发效率和性能。它的用法包括安装Webpack、创建配置文件、配置入口和输出路径、配置加载器和插件等,通过命令行运行Webpack进行打包。同时,Webpack还提供一些高级特性,进一步扩展了其功能。 ### 回答3: Webpack是一个现代的前端模块打包工具,它能够将多个前端资源(如JavaScript文件、CSS文件、图片等)打包成一个或多个静态资源文件。通过使用Webpack,我们可以有效地管理和优化项目的前端资源。 前端使用Webpack有以下几个主要用法: 1. 打包JavaScript模块:Webpack最常见的用法就是打包JavaScript模块。我们可以通过Webpack的入口文件指定需要打包的JavaScript文件,Webpack会根据这些文件的依赖关系,将它们打包成一个或多个bundle.js文件。同时,Webpack还可以通过Babel等工具将ES6/ES7等新版JavaScript转换为ES5,以提供更好的兼容性。 2. 处理CSS和预处理器:Webpack可以将多个CSS文件合并并打包成一个bundle.css文件。我们可以在CSS文件中使用import语法,引用其他CSS文件或预处理器文件(如Sass、Less等),Webpack会自动处理这些文件的依赖关系,并将它们合并到最终的CSS文件中。 3. 处理图片和字体文件:Webpack可以识别并打包CSS中引用的图片和字体文件,将它们输出到指定的目录中。同样,Webpack会根据文件的依赖关系,将它们合并到最终的静态资源文件中。 4. 插件和优化:Webpack支持各种插件,用于额外的功能增强和优化。例如,通过使用UglifyJS插件可以压缩JavaScript代码,通过使用ExtractTextPlugin插件可以将CSS提取到单独的文件中,通过使用HtmlWebpackPlugin插件可以自动生成HTML文件等等。 总之,Webpack是一个非常强大且灵活的前端构建工具,它可以大大提升前端项目的开发效率和性能。但需要注意的是,在使用Webpack时,我们需要配置和调试一些复杂的参数,因此需要一定的学习和使用成本。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值