###1.webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler)

  四个核心概念:

  • 入口(entry)
  • 输出(output)
  • loader
  • 插件(plugins)

  1.xxx版本只能加载js文件,其余加载js/json文件;其他格式需使用对应的loader进行转换或加载

###2、开启项目
  * 初始化项目:
      * 生成package.json文件
      * 
      ```   
      {
        "name": "webpack_test",
        "version": "1.0.0"
      } 
      ```
  * 安装webpack

 -  npm install webpack-cli -g //全局模式安装   webpack -h(4.0 需先配置config.js)
    - npm install webpack -g  //全局安装
    - npm install webpack --save-dev  //局部安装
###3、编译打包应用
  * 创建入口src/js/ : entry.js
    - document.write("entry.js is work");
  * 创建主页面: dist/index.html
    - <script type="text/javascript" src="bundle.js"></script>
  * 编译js
    - webpack src/js/entry.js dist/bundle.js

    src/js/entry.js 源文件    dist/bundle.js 目标文件路径
  * 查看页面效果
###4、添加js/json文件
    * 创建第二个js: src/js/math.js
        ``` 
        export function square(x) {
          return x * x;
        }
        
        export function cube(x) {
          return x * x * x;
        }
        ```
    * 创建json文件: src/json/data.json
        ```
        {
          "name": "Tom",
          "age": 12
        }
        ```
    * 更新入口js : entry.js
        ```
        import {cube} from './math'
        import data from '../json/data.json'
        //注意data会自动被转换为原生的js对象或者数组
        document.write("entry.js is work <br/>");
        document.write(cube(2) + '<br/>');
        document.write(JSON.stringify(data) + '<br/>')
        ```
    * 编译js:
        ```
        webpack src/js/entry.js dist/bundle.js
        ```
    * 查看页面效果
###5、使用webpack配置文件
    * 创建webpack.config.js
        ```
        const path = require('path'); //path内置的模块,用来设置路径。
        
        module.exports = {

     mode: 'production',
          entry: './src/js/entry.js',   // 入口文件
          output: {                     // 输出配置
            filename: 'bundle.js',      // 输出文件名
            path: path.resolve(__dirname, 'dist')   //输出文件路径配置
          }
        };
        ```
    * 配置npm命令: package.json
        ```
        "scripts": {
          "build": "webpack"
        },
        ```
    * 打包应用
        ```
        npm run build
        ```
###6、打包css和图片文件
   * 安装样式的loader
    ```
    npm install css-loader style-loader --save-dev
    npm install file-loader url-loader --save-dev
    补充:url-loader是对象file-loader的上层封装,使用时需配合file-loader使用。
    ```
  * 配置loader
    ```
    module: {
      rules: [
        {
          test: /\.css$/,
          use: [
            'style-loader',
            'css-loader'
          ]
        },
        {
          test: /\.(png|jpg|gif)$/,
          use: [
            {
              loader: 'url-loader',
              options: {
                limit: 8192       // 小于8kb的图片设为Base 64编码 打包到js模块中
              }
            }
          ]
        }
      ]
    }
    ```
  * 向应用中添加2张图片:
    * 小图: img/logo.png
    * 大图: img/big.jpg
    
  * 创建样式文件: src/css/test.css
    ```
    body {
      background: url('../img/logo.jpg')
    }
    ```
  * 更新入口js : entry.js
    - import '../css/test.css'
  * 添加css样式

#box1{
          width: 300px;
          height: 300px;
          background-image: url("../image/logo.jpg");
        }
        #box2{
          width: 300px;
          height: 300px;
          background-image: url("../image/big.jpg");
        }

* index.html添加元素
  
        <div id="box1"></div>
        <div id="box2"></div>
    
  * 执行打包命令:
    ```
    npm run build
    ```
  * 发现问题:
      * 大图无法打包到entry.js文件中,index.html不在生成资源目录下。
      * 页面加载图片会在所在目录位置查找,导致页面加载图片时候大图路径无法找到
      * 解决办法:
          * 使用publicPath : 'dist/js/' //设置为index.html提供资源的路径,设置完后找所有的资源都会去当前目录下找。
          * 将index.html放在dist/js/也可以解决。
###7、自动编译打包
    * 利用webpack开发服务器工具: webpack-dev-server
    * 下载
        - npm install --save-dev webpack-dev-server
    * webpack配置
          devServer: {
            contentBase: './dist'
          },
    * package配置
        - "start": "webpack-dev-server --open"
    * 编译打包应用并运行
        - npm start
###9、使用webpack插件
  * 常用的插件
    * 使用html-webpack-plugin根据模板html生成引入script的页面
    * 使用clean-webpack-plugin清除dist文件夹
    * 使用uglifyjs-webpack-plugin压缩打包的js文件
  * 下载
    ```
    npm install --save-dev  html-webpack-plugin clean-webpack-plugin
    ```
  * webpack配置

const HtmlWebpackPlugin = require('html-webpack-plugin'); //自动生成html文件的插件
        const CleanWebpackPlugin = require('clean-webpack-plugin'); //清除之前打包的文件   
        plugins: [
          new HtmlWebpackPlugin({template: './index.html'}),
          new CleanWebpackPlugin(['dist']),
        ]

* 创建页面: index.html

<!DOCTYPE html>
        <html lang="en">
        <head>
          <meta charset="UTF-8">
          <title>webpack test</title>
        </head>
        <body>
        <div id="app"></div>
        <!--打包文件将自动通过script标签注入到此处-->
        </body>
        </html>

* 打包运行项目
    ```
    npm run build
    npm start
    ```

js-webpack自动化构建工具的更多相关文章

  1. Vue项目模板--和--webpack自动化构建工具的---项目打包压缩使用

    [首先安装node.js]: 1. 从node.js官网下载并安装node,安装过程很简单. 2. npm 版本需要大于 3.0,如果低于此版本需要升级它: # 查看版本 npm -v2.3.0 #升 ...

  2. 前端开发自动化工作流工具,JavaScript自动化构建工具grunt、gulp、webpack介绍

    前端开发自动化工作流工具,JavaScript自动化构建工具grunt.gulp.webpack介绍 前端自动化,这样的一个名词听起来非常的有吸引力,向往力.当今时代,前端工程师需要维护的代码变得及为 ...

  3. JavaScript自动化构建工具入门----grunt、gulp、webpack

    蛮荒时代的程序员: 做项目的时候,会有大量的js 大量的css   需要合并压缩,大量时间需要用到合并压缩 在前端开发中会出现很多重复性无意义的劳动  自动化时代的程序员: 希望一切都可以自动完成  ...

  4. 前端自动化构建工具--Gulp&&Webpack

    前端构建工具的作用可以认为是对源项目文件或资源进行文件级处理,将文件或资源处理成需要的最佳输出结构和形式. 在处理过程中,我们可以对文件进行模块化引入.依赖分析.资源合并.压缩优化.文件嵌入.路径替换 ...

  5. JavaScript自动化构建工具grunt、gulp、webpack介绍

    前端开发自动化工作流工具,JavaScript自动化构建工具grunt.gulp.webpack介绍 前端自动化,这样的一个名词听起来非常的有吸引力,向往力.当今时代,前端工程师需要维护的代码变得及为 ...

  6. webpack前端构建工具学习总结(四)之自动化生成项目中的html页面

    接续上文:webpack前端构建工具学习总结(三)之webpack.config.js配置文件 插件的介绍文档:https://www.npmjs.com/package/html-webpack-p ...

  7. 前端项目自动化构建工具——Webpack入门教程

    参考资料:https://www.webpackjs.com/(中文文档)   https://www.webpackjs.com/(官方文档) 首先有必要说明一下,本文侧重讲解webpack基本配置 ...

  8. 前端自动化构建工具-yoman浅谈

    如今随着前端技术的飞速发展,前端项目也变得越来越复杂. 快速的搭建一个集成多种工具和框架的复杂前端项目也越来越成为一种需求. 当然如果你要自己从0开始完全自己diy,绝对可以,只不过需要耗费一些不少的 ...

  9. gulp前端自动化构建工具

    博主不易,不求赞赏,希望把自己遇到的难点写出来,以及希望自己能有能力写出一篇不错的博文. 前端构建工具本人 bootstrap+jquery用gulp vue+element 用webpack 引文 ...

  10. gulp自动化构建工具

    gulp    自动化构建工具,实时监控.代码合并.压缩... http://www.gulpjs.com.cn/     中文网 http://gulpjs.com/plugins/     英文网 ...

随机推荐

  1. Java Calendar类的使用总结

    在实际项目当中,我们经常会涉及到对时间的处理,例如登陆网站,我们会看到网站首页显示XXX,欢迎您!今天是XXXX年....某些网站会记录下用户登陆的时间,比如银行的一些网站,对于这些经常需要处理的问题 ...

  2. python数据处理excel和pdf,并打包成exe

    之前零散的用过一点python做数据处理,这次又遇到一个数据处理的小功能,因此,记录一下整个流程,方便以后查阅. 功能要求:读取excel,找指定的PDF文件的页数是否与excel中记录的一致 整个处 ...

  3. android 仿微信表情雨下落!

    文章链接:https://mp.weixin.qq.com/s/yQXn-YjEFSW1X7A7CcuaVg 众所周知,微信聊天中我们输入一些关键词会有表情雨下落,比如输入「生日快乐」「么么哒」会有相 ...

  4. C#从SqlServer数据库读写文件源码

    如下的资料是关于C#从SqlServer数据库读写文件的内容,希望能对码农们有一些用. <%@ Page Language="C#" %> <script run ...

  5. Android--解决图片保存到相册显示1970年1月1日 8:00的问题

    import android.content.Context; import android.content.Intent; import android.database.Cursor; impor ...

  6. Skywalking部署常见问题以及注意事项

    Skywalking部署常见问题以及注意事项 Intro SkyWalking 创建与2015年,提供分布式追踪功能.从5.x开始,项目进化为一个完成功能的Application Performanc ...

  7. 瞧一瞧!这儿实现了MongoDB的增量备份与还原(含部署代码)

    一 需求描述 我们知道数据是公司的重要资产,业务的系统化.信息化就是数字化.数据高效的存储与查询是系统完善和优化的方向,而数据库的稳定性.可靠性是实现的基础.高可用和RPO(RecoveryPoint ...

  8. SQL Server 关于 Table 字典数据的查询SQL

    分享一个关于查询SQL Server Table 结构的SQL 语句. T-SQL 如下: SELECT (case when a.colorder=1 then d.name else '' end ...

  9. 用 Weave Scope 监控集群 - 每天5分钟玩转 Docker 容器技术(175)

    创建 Kubernetes 集群并部署容器化应用只是第一步.一旦集群运行起来,我们需要确保一起正常,所有必要组件就位并各司其职,有足够的资源满足应用的需求.Kubernetes 是一个复杂系统,运维团 ...

  10. ssh服务突然连接不了案例总结

    ssh服务突然连接不了案例总结   一台Oracle数据库服务器(Linux版本为Oracle Linux Server release 5.7)今天中午突然出现短暂的ssh连接不上的情况,ssh连接 ...