zoukankan      html  css  js  c++  java
  • webpack2

    webpack的特点:

    一、有丰富的插件:HotModuleReplacementPlugin(模块热更新插件)、html-webpack-plugin(生成html插件)、clean-webpack-plugin(清理文件)、ProvidePlugin(自动加载模块)、DefinePlugin(定义全局变量)、compression-webpack-plugin(压缩js)、mini-css-extract-plugin(抽取css为独立的文件)

    二、通过loader(可支持多种加载规范:es6、commonjs、AMD等):babel-loader(es6语法)、css-loader、style-loader(内联)less-loader、file-loader(图片等文件)、url-loader(转为base64)

    三、支持热加载(局部更新)、代码分割、长缓存

    代码拆分实现方式(Code Splitting):

    1、手动把代码分成多个入口

    2、使用插件(commonChunkPlugin)提取公共代码块

    3、使用import函数动态引入模块(懒加载)

    长缓存优化:

    独立打包 vendor(第三方依赖:jquery、vue等)
    将hash –> chunkhash(使得文件只随着内容变化,不随着编译变化,[hash]是每次编译都变化一次)
    定义动态模块的chunkName

    var path = require('path')
    var webpack = require('webpack')
    module.exports = {
      entry:{
        main:'./src/foo',
        vendor:['vue'] //第三方JS代码
      },
      output:{
        path: path.resolve(__dirname,'dist'),
        filename:'[name].[chunkhash].js'
        // chunkHash: 打包好的包的hash值
      },
      plugins:[
        // 将打包的包用namequ区分而不用id
        new webpack.NamedChunksPlugin(),
        new webpack.NamedModulesPlugin(),
        // 提取公共代码
        new webpack.optimize.CommonsChunkPlugin({
          name:'vendor',
          minChunks:Infinity
        }),
        // 提取 webpack runtime
        new webpack.optimize.CommonsChunkPlugin({
          name:'manifest'
        })
      ]
    }

    webpack如何避免发布新的版本有浏览器缓存?

    使用 hash,每次构建时会有一个不同 hash 值,避免发布新版本时线上使用浏览器缓存

    module.exports = {
      // ...
      output: {
        filename: '[name]-[hash].js'
    }, }
    但是有时,把打包好的index.html放到服务器里去的时候,index.html在服务器端可能是有缓存的,这需要在服务器配置不让缓存index.html
    nginx 配置,让index.html不缓存
    location = /index.html {
        add_header Cache-Control "no-cache, no-store";
    }
    
    no-cache, no-store可以只设置一个
    no-cache浏览器会缓存,但刷新页面或者重新打开时 会请求服务器,服务器可以响应304,如果文件有改动就会响应200
    no-store浏览器不缓存,刷新页面需要重新下载页面

    提升性能:

    1、分离公共模块,实现长缓存。

    2、代码压缩,减小体积。

    3、cdn加速

    4、路由和组件按需加载

  • 相关阅读:
    poj2104 Kth-Number
    bzoj2120 数颜色
    hdu5145 NPY and girls
    bzoj2734 集合选数
    bzoj3732 NetWork
    bzoj2152 聪聪可可
    hdu2036(多边形面积)
    超大次幂思路
    hdu 2030 统计汉字个数
    Hibernate 配置文件与映射文件 总结
  • 原文地址:https://www.cnblogs.com/annie211/p/14750366.html
Copyright © 2011-2022 走看看