001、什么是webpack? 作用有哪些?

WebPack可以看做是模块打包机:它做的事情是,分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(Scss,TypeScript等),并将其转换和打包为合适的格式供浏览器使用

Webpack的工作方式是:把你的项目当做一个整体,通过一个给定的主文件(如:index.js),Webpack将从这个文件开始找到你的项目的所有依赖文件,使用loaders处理它们,最后打包为一个(或多个)浏览器可识别的JavaScript文件。

作用:
 1、模块化,让我们可以把复杂的程序细化为小的文件;
 
  2、类似于TypeScript这种在JavaScript基础上拓展的开发语言:使我们能够实现目前版本的JavaScript不能直接使用的特性,并且之后还能转换为JavaScript文件使浏览器可      以识别;
 
 3、Scss,less等CSS预处理器

002、webpack与gulp、Grunt的区别

ebpack和另外两个并没有太多的可比性,Gulp/Grunt是一种能够优化前端的开发流程的工具而WebPack是一种模块化的解决方案,不过Webpack的优点使得Webpack在很多场景下可以替代Gulp/Grunt类的工具。

003、webpack的打包流程

webpack是建立在module之上进行打包的
 
css js img 都叫做module模块

004、webpack官方配置文件

005、webpack的基本使用

1、全局安装webpack   npm install webpack -g

2、查看版本号 : webpack -v 
3、查看全局安装过哪些模块:npm list -g --depth 0

4、局部安装webpack : npm install webpack --save-dev

5、基础的打包方式 webpack 文件名 生成文件名

温馨提示:webpack4.0以上版本坑比较多,新手建议安装4.0以下版本

    1、卸载默认: npm uninstall webpack
 
      2、全局安装: npm install webpack@3.5.3 -g

      3、局部安装: npm install webpack@3.5.3 --save-dev
 

006、预热一:打包文件

1、npm init -y 生成一个node包

2、局部安装webpack  前提全局已经安装完毕

3、建立webpack.config.js

4、配置webpack.config文件

output:{

//占位符 满足线上地址的需求
publicPath:'html://cdn.com/'

}

007、html-webpack-plugin

1、安装:npm install html-webpack-plugin

2、引入模块: const htmlWebpackPlugin = require("html-webpack-plugin");

3、在module.exports中的plugins中配置文件
  plugins:[
    new htmlWebpackPlugin()
  ] 4、new htmlWebpackPlugin中有很多属性 详情请参考官方文档
  new htmlwebpackPlugin({
    title:"如果能够安定,有谁又愿意颠沛流离",
    //模板文件
    template:'index.html',
    //生成的文件名称
    filename:"html-[hash].html",
    data:new Date(),
    minify:{
      //删除注释
      removeComments:true,
      //删除空格
      collapseWhitespace:true
    }
  })



扩展:如需在模板中调用htmlWebpackPlugin中的参数 可用以下方法 <%= htmlWebpackPlugin.options.属性名 %>

008、html-webpack-plugin 高级应用

如需要生成多个html,并且引入不同的js模块。我们可以多次调用 new htmlWebpackPlugin()

009、babel

babel是一个编译javascript的平台,它可以编译代码帮你达到以下目的
  1、让你使用最近的javascript代码(ES6 ES7) 而不用管新的标准浏览器是否支持   2、让你使用基于javascript进行扩展语言 例如react的jsx
  babel的安装与配置

  babel其实是几个模块化的包,其核心功能位于称为babel-core的npm包中 webpack可以把不同的包整合在一起使用,对于每一个你需要的功能或扩展,你都需要安装单独的包

  1、首先安装这些包 npm一次性安装多个依赖模块,模块之间用空格隔开
  npm install --save-dev @babel/core babel-loader @babel/preset-env @babel/preset-react
  
  2、处理css的loader

   npm install --save-dev style-loader css-loader  sass-loader node-sass
 2、babel的基本配置  详情请参考官网
  module:{
    rules:[
      {
        test:/\.js$/,
        use:{
          loader:'babel-loader',
          options:{
            presets:["@babel/env","@babel/react"]
          }
        },
        exclude:__dirname+'node_modules'
      }
    ]
  }

include和exclude需要相对路径,所以include:__dirname +'./src/' 加前缀__dirname

010、webpack配置跨域

devServer:{
proxy:{
'/api': {
target: 'http://www.baidu.com', //目标服务器地址
pathRewrite: { '^/api': '' },// 将/api开头的请求地址, /api 改为 /, 即 /api/xx 改为 /xx
changeOrigin: true// 是否修改来源, 为true时会让目标服务器以为是webpack-dev-server发出的请求!
},
'/getData':{
target:'http://jd.com',
pathRewrite:{'^/getData':''},
changeOrigin:true,
} }
}

011、module.exports 、exports的区别

module.exports和exports的区别就是var a={}; var b=a; 中a和b的区别。exports指向的只是一个引用

require返回的只是module.exports

nodejs不支持import 和 export

module.exports:是node中内置的一个导出模块的方法

012、webpack-dev-server

1、执行命令  webpack --watch 文件监听
 
2、也可以在package中的scripts中修改命令 build:"webpack --watch";
 
3、当执行命令 当文件发生变化的时候服务器会自动帮我们重启命令
 
 
除此之外还有更好用的webpack-dev-server
 
1、全局安装 npm install webpack-dev-server@2 -g
 
2、在package.json里面修改scripts build1:"webpack-dev-server";
 
3、运行 npm run build1
 
4、如果在4.0.1中安装失败 需要安装 npm install webpack-cli -D
 
扩展:
     webpack-dev-server:不会生成线上目录 例如我们上面说过的build 而是放在内存中
     webpack:打包上线
 

webpack打包 基础的更多相关文章

  1. 9.Vue之webpack打包基础---模块化思维

    主要内容: 1. 什么是模块化思维? 2.  ES6包的封装思想 一.什么是模块化思维呢? 现实工作中, 一个项目可能会有多个人同时开发. 然后, 将所有人开发的内容, 合并到一个文件中. 比如: 1 ...

  2. 前端项目模块化的实践2:使用 Webpack 打包基础设施代码

    以下是关于前端项目模块化的实践,包含以下内容: 搭建 NPM 私有仓库管理源码及依赖: 使用 Webpack 打包基础设施代码: 使用 TypeScript 编写可靠类库 使用 TypeScript ...

  3. 生产阶段Webpack打包【基础打包】

    webpack打包 1.在根目录创建一个 webpack.config.prod.js[它其实就是在开发阶段的基础上增加点东西] 增加了 output 去除了 devServer 2.在package ...

  4. 零基础学习webpack打包管理

    这些天在项目之余的时间学习了webpack打包项目的东西,非常荣幸的找到一些大神的文章来学习,死劲嚼了几天,终于略知一二.在以后的工作上还需继续学习,下面我将分享我这几天学到的一点东西,希望能让我一个 ...

  5. Webpack 打包之体积优化

    谈及如今欣欣向荣的前端圈,不仅有各类框架百花齐放,如Vue, React, Angular等等,就打包工具而言,发展也是如火如荼,百家争鸣:从早期的王者Browserify, Grunt,到后来赢得宝 ...

  6. vue-cli+webpack打包配置

    vue-cli+webpack打包配置 一: 目录结构: ├── README.md ├── build │ ├── build.js │ ├── check-versions.js │ ├── ut ...

  7. Less与TypeScript的简单理解与应用,并使用WebPack打包静态页面

    既然选择了远方,便只顾风雨兼程 __ HANS许 系列:零基础搭建前后端分离项目 系列:零基础搭建前后端分离项目 创建空项目 使用Less 使用TypeScript 使用WebPack 开始写项目 总 ...

  8. webpack打包后的文件

    用了webpack打包工具,你是不是有时会疑惑,写了一个很简单的函数,结果生成那么多东西,而且还没有问题?下面,我从三种情况来分析打包后的入口文件,帮助自己理解webpack打包,也为平时定位产出目录 ...

  9. [转] Webpack 打包优化之体积篇

    谈及如今欣欣向荣的前端圈,不仅有各类框架百花齐放,如Vue, React, Angular等等,就打包工具而言,发展也是如火如荼,百家争鸣:从早期的王者Browserify, Grunt,到后来赢得宝 ...

随机推荐

  1. SpringBoot系列: JdbcTemplate 快速入门

    对于一些小的项目, 我们没有必要使用MyBatis/JPA/Hibernate等重量级技术, 直接使用Spring JDBC 即可, Spring JDBC 是对 jdbc的简单封装, 很容易掌握. ...

  2. Spring系列(六) Spring Web MVC 应用构建分析

    DispatcherServlet DispatcherServlet 是Spring MVC的前端控制器名称, 用户的请求到达这里进行集中处理, 在Spring MVC中, 它的作用是为不同请求匹配 ...

  3. python 三大框架之一Django入门

    Django 是从真实世界的应用中成长起来的,它是由 堪萨斯(Kansas)州 Lawrence 城中的一个 网络开发小组编写的. 它诞生于 2003 年秋天,那时 Lawrence Journal- ...

  4. 逆元知识普及(进阶篇) ——from Judge

    关于一些逆元知识的拓展 刚艹完一道 提高- 的黄题(曹冲养猪) ,于是又来混一波讲解了 ——承接上文扫盲篇   四.Lucas定理(求大组合数取模)   题外话 这里Lucas定理的证明需要用到很多关 ...

  5. HDR拍照

    HDR 拍照:        (High Dynamic Range Imaging)高动态范围成像,是用来实现比普通数字图像技术更大曝光动态范围(即更大的明暗差别)的一组技术.高动态范围成像的目的就 ...

  6. TF-tf.arg_max 介绍

    定义为 def arg_max(input, dimension, name=None) 作用是取行或者列的最大值的位置. input:类型为 float32, float64, int64, int ...

  7. noj算法 8皇后打印 回溯法

    描述: 输出8皇后问题所有结果. 输入: 没有输入. 输出: 每个结果第一行是No n:的形式,n表示输出的是第几个结果:下面8行,每行8个字符,‘A’表示皇后,‘.’表示空格.不同的结果中,先输出第 ...

  8. 有道云笔记Markdown上传本地图片的方法

    有道云笔记截图&保存   方法有多种,例如:开通有道云笔记VIP会员.先将图片文件上传到有道云笔记后使用图片的分享链接.说到底还是使用的 Markdown 的图片功能 ![图片名称](图片链接 ...

  9. 怎样把PDF文件中的一页提取出来

    现在随着网络科技的发展在网上找资源找文件就像家常便饭一样,但是有很多文件下载完成之后只有几页是需要的这时候就很困惑了,这么多怎么才能看完啊.这样为了不浪费时间可以将有用的一页提取出来,进行使用,那怎样 ...

  10. 20165314 [第二届构建之法论坛] 预培训心得(Java版)

    安装IDEA配置JDKsourcepath啥的之前已经弄好了 克隆项目 emmm这次的代码托管部分好像比之前做的要简单,之前还要git config啥的,还有就是git clone不会提示要输入账号密 ...