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(七):SpringBoot整合Swagger2

    原文地址:https://blog.csdn.net/saytime/article/details/74937664 手写Api文档的几个痛点: 文档需要更新的时候,需要再次发送一份给前端,也就是文 ...

  2. Kotlin 检查空类型

    Kotlin 会检查你定义的非空类型 如果运行过程中被赋空值了  会直接crash

  3. IDEA 在同一目录创建多个项目

    以往的Eclipse.NetBeans等开发工具不同,IDEA的Project相当与Eclipse的Workspace,而Module相当于Project. 下边就给出Eclipse与IDEA的概念的 ...

  4. 机器学习爱好者 -- 翻译吴恩达老师的机器学习课程字幕 http://www.ai-start.com/

    机器学习爱好者 -- 翻译吴恩达老师的机器学习课程字幕 GNU Octave    开源  MatLab http://www.ai-start.com/ https://zhuanlan.zhihu ...

  5. 题解-HNOI2017 抛硬币

    Problem loj2023 题意概述:甲抛掷 \(a\) 次硬币,乙抛掷 \(b\) 次硬币,问有多少种情况甲正面向上的次数比乙多,答案对 \(10^k\) 取模 对于 \(10\%\) 的数据, ...

  6. get/post比较

    转载: https://www.oschina.net/news/77354/http-get-post-different https://www.cnblogs.com/wswang/p/6054 ...

  7. 网络抓包教程之tcpdump

    现在的移动端应用几乎都会通过网络请求来和服务器交互,通过抓包来诊断和网络相关的bug是程序员的重要技能之一.抓包的手段有很多:针对http和https可以使用Charles设置代理来做,对于更广泛的协 ...

  8. git 切换远程仓库,以及碰到的一个问题。

    git 切换远程仓库出现如下问题: $ git checkout -b localdev origin/dev fatal: Cannot update paths and switch to bra ...

  9. vuejs使用jsx语法

    想要vuejs项目支持jsx语法,需要一些插件 babel-plugin-transform-vue-jsx Babel plugin for Vue 2.0 JSX 使用方法: 安装 npm ins ...

  10. Yii2中mongodb使用ActiveRecord的数据操作

    概况  Yii2 一个高效安全的高性能PHP框架.mongodb 一个高性能分布式文档存储NOSQL数据库. 关于mongodb与mysql的优缺点,应该都了解过. mysql传统关系数据库,安全稳定 ...