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】---模块打包机webpack基础使用---【巷子】的更多相关文章

  1. 每天记录一点:NetCore获得配置文件 appsettings.json vue-router页面传值及接收值 详解webpack + vue + node 打造单页面(入门篇) 30分钟手把手教你学webpack实战 vue.js+webpack模块管理及组件开发

    每天记录一点:NetCore获得配置文件 appsettings.json   用NetCore做项目如果用EF  ORM在网上有很多的配置连接字符串,读取以及使用方法 由于很多朋友用的其他ORM如S ...

  2. webpack学习(入门基础)

    webpack的学习webpack是什么?1:加载模块(将JS.sass/less.图片等作为模块来处理使用) 2:进行打包 webpack的优势?1:webpack以commonJS(JS的规范)的 ...

  3. Webpack模块加载器

    一.介绍 Webpack是德国开发者 Tobias Koppers 开发的模块加载器,它能把所有的资源文件(JS.JSX.CSS.CoffeeScript.Less.Sass.Image等)都作为模块 ...

  4. webpack模块解析

    前面的话 在web存在多种支持JavaScript模块化的工具(如requirejs和r.js),这些工具各有优势和限制.webpack基于从这些系统获得的经验教训,并将模块的概念应用于项目中的任何文 ...

  5. webpack模块机制浅析【一】

    webpack模块机制浅析[一] 今天看了看webpack打包后的代码,所以就去分析了下代码的运行机制. 下面这段代码是webpack打包后的最基本的形式,可以说是[骨架] (function(roo ...

  6. Webpack模块的导出以及之间的依赖引用

    一. 模块化开发模块化开发说白了就不必在html页面,引用所有的js文件.所有的js文件都进行模块化设置,模块之间可以相互引用.Webpack模块化开发是使用module.exports进行相关方法和 ...

  7. Webpack系列-第一篇基础杂记

    前言 公司的前端项目基本都是用Webpack来做工程化的,而Webpack虽然只是一个工具,但内部涉及到非常多的知识,之前一直靠CV来解决问题,之知其然不知其所以然,希望这次能整理一下相关的知识点. ...

  8. Webpack 模块处理

    webpack模块处理 1. ES6 静态Import ES6的import会被转化为commonjs格式或者是AMD格式,babel默认会把ES6的模块转化为commonjs规范的. import ...

  9. webpack 模块标识符(Module Identifiers)

    让我们向项目中再添加一个模块 print.js: project webpack-demo |- package.json |- webpack.config.js |- /dist |- /src ...

随机推荐

  1. Qt/C++ 构造函数与explicit

    1.默认构造函数 默认构造函数是指所有参数都提供了默认值的构造函数,通常指无参的构造函数或提供默认值的构造函数.如类Test1和Test2的构造函数 class Test1 { public: Tes ...

  2. e586. Drawing Simple Shapes

    There are two ways to draw basic shapes like circles, ovals, lines, arcs, squares, rectangles, round ...

  3. 视差滚动(Parallax Scrolling)插件补充

    13. Windows Windows (github) 是一个让你用占据整个屏幕的section来构建单面网站的插件.该插件提供给你一些回调函数,当新的section出现在可视区并且并且处理快照时被 ...

  4. par函数fg参数-控制前景色

    fg参数用来控制前景色,其实指的就是x轴和y轴的轴线和刻度线的颜色 在R语言中,会根据fg, col 任何一个参数的值,自动的将两个参数的值设置为相同的值,举个例子: par(fg = "r ...

  5. SharePoint 2010用“localhost”方式访问网站,File not found问题处理方式

    场景:本地服务器上,用“localhost”方式访问网站:在某网站集(Site Collection)下的子网站(Sub Site)中,点击网站权限菜单(Site permissions)等关于调用L ...

  6. ros论坛

    ros:http://ros.gaitech.net/forum.php makefile:http://blog.csdn.net/shallnet/article/details/38070745 ...

  7. c# 以二进制读取文本文件

    using System; using System.IO; public class FileApp {     public static void Main()     {         // ...

  8. c# JsonHelper类

    using System; using System.Collections; using System.Collections.Generic; using System.Linq; using S ...

  9. angular学习(十五)——Provider

    转载请写明来源地址:http://blog.csdn.net/lastsweetop/article/details/60966263 Provider简单介绍 每一个web应用都是由多个对象协作完毕 ...

  10. python语言简介、解释器、字符编码介绍

    一.为什么要选择python作为学习语言: 各个语言的对比: C和python.java.C#等 C语言:代码编译得到机器码,机器码在处理器上直接执行,每一条指令控制cpu工作 其他语言:代码编译得到 ...