1. 001、什么是webpack? 作用有哪些?
  2.  
  3. WebPack可以看做是模块打包机:它做的事情是,分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(ScssTypeScript等),并将其转换和打包为合适的格式供浏览器使用
  4.  
  5. Webpack的工作方式是:把你的项目当做一个整体,通过一个给定的主文件(如:index.js),Webpack将从这个文件开始找到你的项目的所有依赖文件,使用loaders处理它们,最后打包为一个(或多个)浏览器可识别的JavaScript文件。
  6.  
  7. 作用:
 1、模块化,让我们可以把复杂的程序细化为小的文件;
 
  2、类似于TypeScript这种在JavaScript基础上拓展的开发语言:使我们能够实现目前版本的JavaScript不能直接使用的特性,并且之后还能转换为JavaScript文件使浏览器可      以识别;
 
 3、Scss,less等CSS预处理器

002、webpack与gulp、Grunt的区别

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

003、webpack的打包流程

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

004、webpack官方配置文件

005、webpack的基本使用

  1. 1、全局安装webpack npm install webpack -g
  2.  
  3. 2、查看版本号 : webpack -v
  1. 3、查看全局安装过哪些模块:npm list -g --depth 0
  2.  
  3. 4、局部安装webpack : npm install webpack --save-dev
  4.  
  5. 5、基础的打包方式 webpack 文件名 生成文件名
  6.  
  7. 温馨提示:webpack4.0以上版本坑比较多,新手建议安装4.0以下版本
    1、卸载默认: npm uninstall webpack
 
      2、全局安装: npm install webpack@3.5.3 -g
  1.  
      3、局部安装: npm install webpack@3.5.3 --save-dev
  1.  

006、预热一:打包文件

  1. 1npm init -y 生成一个node
  2.  
  3. 2、局部安装webpack 前提全局已经安装完毕
  4.  
  5. 3、建立webpack.config.js
  6.  
  7. 4、配置webpack.config文件

output:{

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

}

007、html-webpack-plugin

  1. 1、安装:npm install html-webpack-plugin
  2.  
  3. 2、引入模块: const htmlWebpackPlugin = require("html-webpack-plugin");
  4.  
  5. 3、在module.exports中的plugins中配置文件
      plugins:[
        new htmlWebpackPlugin()
      ]
  6.  
  7. 4new htmlWebpackPlugin中有很多属性 详情请参考官方文档
      new htmlwebpackPlugin({
        title:"如果能够安定,有谁又愿意颠沛流离",
        //模板文件
        template:'index.html',
        //生成的文件名称
        filename:"html-[hash].html",
        data:new Date(),
        minify:{
          //删除注释
          removeComments:true,
          //删除空格
          collapseWhitespace:true
        }
  1.   })
  2. 扩展:如需在模板中调用htmlWebpackPlugin中的参数 可用以下方法 <%= htmlWebpackPlugin.options.属性名 %>

008、html-webpack-plugin 高级应用

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

009、babel

  1. babel是一个编译javascript的平台,它可以编译代码帮你达到以下目的
  2.   1、让你使用最近的javascript代码(ES6 ES7) 而不用管新的标准浏览器是否支持
  3.  
  4.   2、让你使用基于javascript进行扩展语言 例如reactjsx
  5.  
  babel的安装与配置
  1.  
  babel其实是几个模块化的包,其核心功能位于称为babel-core的npm包中 webpack可以把不同的包整合在一起使用,对于每一个你需要的功能或扩展,你都需要安装单独的包
  1.  
  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
  1.  2babel的基本配置 详情请参考官网
      module:{
        rules:[
          {
            test:/\.js$/,
            use:{
              loader:'babel-loader',
              options:{
                presets:["@babel/env","@babel/react"]
              }
            },
            exclude:__dirname+'node_modules'
          }
        ]
      }
  1. includeexclude需要相对路径,所以include:__dirname +'./src/' 加前缀__dirname

010、webpack配置跨域

  1. devServer:{
  2. proxy:{
  3. '/api': {
  4. target: 'http://www.baidu.com', //目标服务器地址
  5. pathRewrite: { '^/api': '' },// 将/api开头的请求地址, /api 改为 /, 即 /api/xx 改为 /xx
  6. changeOrigin: true// 是否修改来源, 为true时会让目标服务器以为是webpack-dev-server发出的请求!
  7. },
  8. '/getData':{
  9. target:'http://jd.com',
  10. pathRewrite:{'^/getData':''},
  11. changeOrigin:true,
  12. }
  13.  
  14. }
  15. }

011、module.exports 、exports的区别

  1. module.exportsexports的区别就是var a={}; var b=a; ab的区别。exports指向的只是一个引用
  2.  
  3. require返回的只是module.exports
  4.  
  5. nodejs不支持import export
  6.  
  7. 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. 【转】C# 调用WebService的方法

    很少用C#动态的去调用Web Service,一般都是通过添加引用的方式,这样的话是自动成了代理,那么动态代理调用就是我们通过代码去调用这个WSDL,然后自己去生成客户端代理.更多的内容可以看下面的两 ...

  2. C++ STL 教程

    C++ STL 教程在前面的章节中,我们已经学习了 C++ 模板的概念.C++ STL(标准模板库)是一套功能强大的 C++ 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的 ...

  3. CIRI 识别circRNA的原理

    CIRI 根据circRNA 连接点处的reads来识别circRNA, 在连接点处的reads 其比对情况非常特殊: CIRI 根据3种模型来识别circRNA, 连接点处的read 叫做junct ...

  4. mysql压缩包的安装、配置、配成windows服务、远程连接及常规问题

    1.下载windows安装包 下载地址:mysql-5.7.18 2.配置my.ini [client] port = 3306 # 设置mysql客户端连接服务端时默认使用的端口 [mysql] d ...

  5. Spring Cloud在国内中小型公司用的起来吗?

    转自:http://www.cnblogs.com/ityouknow/p/7508306.html 今天吃完饭休息的时候瞎逛知乎,突然看到这个一个问题Spring Cloud在国内中小型公司能用起来 ...

  6. SQL-字符串连接聚合函数

    原文:http://blog.csdn.net/java85140031/article/details/6820699 问题: userId  role_name         role_id 1 ...

  7. .Net中的序列化和反序列化详解

    序列化通俗地讲就是将一个对象转换成一个字节流的过程,这样就可以轻松保存在磁盘文件或数据库中.反序列化是序列化的逆过程,就是将一个字节流转换回原来的对象的过程. 然而为什么需要序列化和反序列化这样的机制 ...

  8. 数据挖掘Apriori算法——学习笔记

    关联规则.频繁项集.支持度.置信度 关联规则挖掘: 一起购买的商品 支持度(support) 支持度会随着物品增多而减小.因为是同时购买的比率. 置信度(Confidence) 频繁且强规则,有一定意 ...

  9. 关于 MVVMLight 设计模式系列

    MVVM设计模式你可以在WPF.Silverlight.Windows Phone开发中使用,我想至今已经有非常非常多的朋友正在使用MVVM设计模式,尤其是MVVMLight . 本系列文章以WPF举 ...

  10. CUGBACM Codeforces Tranning 1 题解

    链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=61581#overview 描写叙述:非常老的CF题,题不错,拿来训练正好. 做的时 ...