zoukankan      html  css  js  c++  java
  • webpack

    什么是? 

        wabpack是当前最流行的打包工具

    webpack能做什么?

        将 sass/less 等预编译css语言 转化为 浏览器能够认识的css文件

        将多个文件打包生成为一个文件

        搭建开发环境(开启了服务器)

        监视文件变化,文件改变后,能够自动刷新浏览器

        对于vue来说,可以将单文件组件(*.vue)类型的文件,  转化为浏览器能够识别的内容

      

        项目打包上线:  基于vue脚手架只需要执行一条命令:npm run  build 就可以对项目进行打包处理了

                    所有文件(css/js/html)的压缩合并

                 在打包的过程中,分离  或者  合并 文件 

                 能够通过 代码分离功能实现 项目的按需加载(用到什么模块加载什么模块,懒加载)

                     命令行使用方式(了解即可)

    // webpack 的使用步骤:
    //  初始化一个package.json文件 : npm init -y
    // 1 安装: npm i -D webpack webpack-cli
    // 2 webpack 使用的两种方式:
    //  2.1 命令行的使用方式(知道)
    //  2.2 配置文件
    
    // webpack的四个核心概念:
    // 1 入口 entry
    // 2 出口 打包后输出内容
    // 3 loaders 加载器:对于非JS的静态资源
    // 4 plugins 插件
    
    // 演示命令行的使用方式:
    // webpack 入口文件 出口文件路径
    // 最基本的打包: webpack ./src/main.js
    
    // 注意:使用 webpack 的时候应该提供mode, 可以是: production 或者 development
    // production 表示: 生产模式(压缩的)    -- 生产环境(也就是给用户使用的)
    // development 表示: 开发模式   -- 开发环境(也就是给开发人员开发使用的)
    
    // 指定模式: .
    ode_modules.binwebpack ./src/main.js --mode development
    // 指定为生产模式: .
    ode_modules.binwebpack ./src/main.js --mode production
    
    // 演示指定出口文件路径:
    //  .
    ode_modules.binwebpack ./src/main.js -o ./dist/a.js --mode production
    
    const fn = () => {
      console.log('main.js 中的fn 执行了')
    }
    fn()

    main - 2 配置scripts去掉路径前缀.js

    /*
    .
    ode_modules.binwebpack ./src/main.js --mode development
    解决问题: 去掉 .
    ode_modules.bin
    
    
    1 在 package.json 的 scripts 中添加一个 build 脚本
    2 将 webpack 命令作为 build 脚本的值  webpack ./src/main.js --mode development
    3 在终端中执行命令: npm run build 来运行上面创建好的脚本
    
    package.json文件
    {
      "name": "15-webpack-basic",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "scripts": {
        "build": "webpack ./src/main.js --mode development",
      },
      "keywords": [],
      "author": "",
      "license": "ISC",
      "devDependencies": {
        "css-loader": "^1.0.0",
        "html-webpack-plugin": "^3.2.0",
        "style-loader": "^0.23.0",
        "webpack": "^4.19.0",
        "webpack-cli": "^3.1.0",
        "webpack-dev-server": "^3.1.8"
      },
      "dependencies": {
        "jquery": "^3.3.1"
      }
    }
    */
    
    const fn = () => {
      console.log('main.js 中的fn 执行了')
    }
    fn()

    main - 3 webpack打包处理的过程.js

    /*
    webpack打包处理的过程::
    
    案例: 使用jQuery实现隔行变色的效果
    
    浏览器或者NodeJS中 都无法直接识别 import 语法,
    但是, 经过webpack打包处理后, 浏览器就能够识别这个语法了
    
    webpack打包处理的过程:
    1 运行了webpack的打包命令: webpack ./src/main.js --mode development
    2 webpack 就会找到我们指定的入口文件 main.js
    3 webpack 就会分析 main.js 中的代码, 当遇到 import $ .... 语法的时候, 那么, webpack
       就知道,我们要使用 jQuery 这个模块
    4 webpack 就会将jQuery模块的代码拿过来
    5 然后,继续往后分析, 如果在遇到 import 语法, 继续加载这个模块 ...
    6 直到分析完成整个 JS 文件后, 将 main.js 中所有用到的模块代码 与 我们自己写的js代码
      打包生成一个JS文件, 也就是 dist/main.js
    
    CommonJS 中的模块化语法
    const $ = require('jquery')
    */
    
    // ES6 中的模块化语法:
    import $ from 'jquery'
    
    $('#list > li:odd').css('background-color', 'red')
    $('#list > li:even').css('background-color', 'green')

    webpack配置文件的使用(重点使用)

    webpack 配置文件的使用方式:
        在项目根目录中创建配置文件: webpack.config.js
    /*
    package.json文件
    {
      "name": "15-webpack-basic",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "scripts": {
        "build": "webpack",  //项目完成打包,因为在根目录有webpack.config.js配置文件,所以可以直接使用webpack
        "serve": "webpack-dev-server --hot",  //开发期间使用(启动脚手架)  hot表示热更新,代替下边的三步
      },
      "keywords": [],
      "author": "",
      "license": "ISC",
      "devDependencies": {
        "css-loader": "^1.0.0",
        "html-webpack-plugin": "^3.2.0",
        "style-loader": "^0.23.0",
        "webpack": "^4.19.0",
        "webpack-cli": "^3.1.0",
        "webpack-dev-server": "^3.1.8"
      },
      "dependencies": {
        "jquery": "^3.3.1"
      }
    }
    */
    
    
    // 注意: 不要使用 ES6 中的模块化语法 import/export
    const path = require('path')    //导入path模块,需要使用绝对路径
    // const webpack = require('webpack')  01 热更新需要引入webpack
    
    // 导入html-webpack-plugin
    const HtmlWebpackPlugin = require('html-webpack-plugin')
    
    module.exports = {
      // 入口
      entry: path.join(__dirname, './src/main.js'),//__dirname指当前文件的目录
    
      // 出口
      output: {
        path: path.join(__dirname, './dist'),  //出口文件路径
        filename: 'bundle.js'    //  出口文件名
      },
    
      // 模式
      mode: 'development',//开发环境(程序员看)
    
    
      devServer: {
        // 自动打开浏览器
        open: true,
        // 修改端口号
        port: 3000,
        // 热更新: 只将修改过得内容加载到页面中, 而不是刷新整个页面
        // 第一步:02
        // hot: true
      },
    
      // 配置loader
      module: {
        rules: [
          // test 是一个正则, 用来匹配加载文件的路径
          //  比如: import './css/index.css'
    
          // use 表示使用哪个loader来处理这个类型的文件
          // 注意: 有顺序!!!
          // 处理过程是: 从右往左
    
          // css-loader 读取CSS文件,将其转化为一个模块
          // style-loader 拿到css-loader读取到的css文件内容,然后,创建一个style标签,插入到head
          { test: /.css$/, use: ['style-loader', 'css-loader'] }
        ]
      },
    
      plugins: [
        // 第二步:03
        // new webpack.HotModuleReplacementPlugin(),
    
        new HtmlWebpackPlugin({
          // 指定模板文件路径
          template: path.join(__dirname, 'index.html')
        })
      ]
    }
    // html-webpack-plugin
    
    // 作用:
    // 1 根据指定的模板页面(index.html)在内存中生产一个新的页面
    //    并且, 浏览器打开的就是 生成的页面
    // 2 能够自动引入 css/js 等文件
    
    // 使用:
    // 1 安装: npm i -D html-webpack-plugin
    // 2 在 webpack.config.js 中导入这个模块
    // 3 在 plugins 中配置
    
    // ES6 中的模块化语法:
    import $ from 'jquery'
    
    $('#list > li:odd').css('background-color', '#def')
    $('#list > li:even').css('background-color', 'skyblue')
    /*
    开启服务器:
    
    webpack-dev-server    开发期间的服务器
    
    1 npm i -D webpack-dev-server  安装
    2 开启服务器
    3 自动打开浏览器
    4 监视文件变化, 自动刷新浏览器
    5 等等
    
    使用步骤:
    1 安装: npm i -D webpack-dev-server
    2 在 webpack.config.js 中配置 devServer 配置项
    3 在 package.json 中添加一个配置项: "serve": "webpack-dev-server"
    
    webpack-dev-server 帮我们搭建了开发环境, 使用之后, 我们只需要
    写代码完成功能即可, 其他的所有内容, 这个插件都帮我们处理了
    
    webpack-dev-server 命令 和 webpack 命令的区别:
    开发期间 webpack-dev-server
    项目打包上线 webpack
    
    webpack 命令会生产 dist 文件夹
    webpack-dev-server 不会创建 dist 文件夹, 而是将所有内容放在内存中
    */
    
    // ES6 中的模块化语法:
    import $ from 'jquery'
    
    $('#list > li:odd').css('background-color', '#def')
    $('#list > li:even').css('background-color', 'skyblue')
  • 相关阅读:
    Alook搭配JS脚本完美食用
    分享小米刷机教程/线刷(工具支持小米华为一加)
    iPhone 无需越狱修改wx+zfb+qq步数
    如果SELECT语句中没有结果,则使用CASE返回字符串
    MSSQLServer 正在显示"正在还原...."
    C# 小技巧
    C#使用Select方法快速获取List集合集合中某个属性的所有值集合
    C#中使用Sum方法对List集合进行求和操作
    sql日期函数
    sql只根据某一字段去重,并保留其他字段
  • 原文地址:https://www.cnblogs.com/javascript9527/p/11414292.html
Copyright © 2011-2022 走看看