美文网首页
webpack 入门

webpack 入门

作者: 余继莲 | 来源:发表于2017-01-24 14:15 被阅读0次

    webpack 是什么?

    webpack是模块化管理工具,使用webpack可以对模块进行压缩、预处理、按需打包、按需加载等。

    webpack 有哪些重要特征?

    插件化:webpack本身非常灵活,提供了丰富的插件接口。基于这些接口,webpack开发了很多插件作为内置功能。
    速度快:webpack使用异步IO以及多级缓存机制。所以webpack的速度是很快的,尤其是增量更新。
    丰富的Loaders:loaders用来对文件做预处理。这样webpack就可以打包任何静态文件。
    高适配性:webpack同时支持AMD/CommonJs/ES6模块方案。webpack会静态解析你的代码,自动帮你管理他们的依赖关系。此外,webpack对第三方库的兼容性很好。
    代码拆分:webpack可以将你的代码分片,从而实现按需打包。这种机制可以保证页面只加载需要的JS代码,减少首次请求的时间。
    优化:webpack提供了很多优化机制来减少打包输出的文件大小,不仅如此,它还提供了hash机制,来解决浏览器缓存问题。
    开发模式友好:webpack为开发模式也提供了很多辅助功能。比如SourceMap、热更新等。
    使用场景多webpack不仅适用于web应用场景,也适用于Webworkers、Node.js场景

    webpack 如何最佳配置?

    webpack官方提供的配置方法是通过module.exports返回一个json,但是这种场景不灵活,不能适配多种场景。
    比如要解决:production模式和development模式,webpack的配置是有差异的,大致有两种思路。
    1、两份配置文件webpack.config.production.js/webpack.config.development.js,然后不同场景下,使用不同的配置文件。
    2、通过module.exports返回函数,该函数能接受参数。

    相对来说,第一种更简单,但是重复配置多;第二种更灵活,推荐第二种方式。
    那么,按返回函数的方式的配置代码架子如下:

    module.exports = function(env) {
      return {
        context: config.context,
        entry: config.src,
        output: {
            path: path.join(config.jsDest, project),
            filename: '[name].js',
            chunkFilename: '[name].[chunkhash:8].js',
            publicPath: '/assets/' + project + '/'
        },
        devtool: "eval",
        watch: false,
        profile: true,
        cache: true,
        module: {
            loaders: getLoaders(env)
        },
        resolve: {
            alias: getAlias(env)
        },
        plugins: getPlugins(env)
      };
    }
    

    其中关键的配置这儿简单介绍如下,后续的系列博客会根据每个点详细介绍。
    context:上下文。
    entry:入口文件,是所有依赖关系的入口,webpack从这个入口开始静态解析,分析模块之间的依赖关系。
    output:打包输出的配置。
    devtools:SourceMap选项,便于开发模式下调试。
    watch:监听模式,增量更新,开发必备!
    profile:优化。
    cache:webpack构建的过程中会生成很多临时的文件,打开cache可以让这些临时的文件缓存起来,从而更快的构建。
    module.loaders:如前文介绍,loaders用来对文件做预处理。这样webpack就可以打包任何静态文件。
    resolve.alias:模块别名,这样可以更方便的引用模块。
    plugins:如前文介绍,webpack的一些内置功能均是以插件的形式提供。

    webpack和gulp的区别

    gulp是基于流的构建工具:all in one的打包模式,输出一个js文件和一个css文件,优点是减少http请求,万金油方案。
    webpack是模块化管理工具,使用webpack可以对模块进行压缩、预处理、打包、按需加载等。

    相关文章

      网友评论

          本文标题:webpack 入门

          本文链接:https://www.haomeiwen.com/subject/tvwobttx.html