• webpack基本使用


    认识webpack

      1.什么是webpack
            Webpack 是一个打包模块化 JavaScript 的工具,在 Webpack 里一 切文件皆模块,通过 Loader转换文件,通过 Plugin注入钩子,最后输出由多个模块组合成的文件。 Webpack专注于构建模块化项目。
            webpack是一个前端项目构建工具,他是基于nodejs开发出来的一个前端工具
        2.webpack对我们有什么帮助?
            注于处理模块化的项目,能做到开箱即用、一步到位
            可通过+Plugin +扩展,完整好用又不失灵活
            使用场景不局限于+Web+开发
           语法打包兼容低版本浏览器
        3.Webpack的缺点是只能用于模块化开发的项目

    开始使用webpack

    • 安装nodejs,现在npm会跟着node安装一起安装。安装后 使用  node -v  npm -v 查看版本号,显示ok表示安装没问题
    • 安装 webpack npm i(nstall) webpack【@4/5 --- 这里表示版本号 可以不带,不带默认装最新版本 】 webpack-cli  -D【-D 表示开发时依赖】  ===》 安装 webpack 和 webpack-cli 
    • 新建webpack.config.js  webpack配置文件
    • 执行打包命令 npx  webpack 【一般会在package.json中配置简易指令 script属性中,添加 “bulid”:"webpack"】,然后 npm run bulid 表示执行打包命令

    webpack配置

      

    《webpack.config.js》
    const path = require('path')
    module.exports = { //导出一个对象
        entry: './src/main.js', //打包入口
        /*打包出口,一个对象,指定
        filename:打包后的js名
        path,打包后的路径
        */
        output: {
            filename: 'bundle.js',
            path: path.resolve(__dirname, 'dist')
                /*由于这里需要绝对路径,需要用到nodejs种的path模块
                __dirname 表示当前文件夹的绝对路径,
                这里表示在项目跟目录下新建dist文件作为打包后存放路径
                */
        }, //到这里就是webpack最基本的配置【webpack默认只能打包js文件】,没有用到各种加载器【loader】,插件【Plugin】,借助两者去处理js,css,img,.vue等复杂模块,
    }

    使用Loader工具去打包指定后缀名的文件

    1.  打包.vue   使用 vue-loadery& vue-template-compiler &css-loader
    const path = require('path')
     
    const VueLoaderPlugin = require('vue-loader/lib/plugin')
        //官网除了表示配置打包规则rules,还要实例化一个vueloader插件
     
    module.exports = { //导出一个对象
     
       mode:'development/production',//开发模式【体积打,打包后的代码可读性强】和生产模式【体积小,打包后的代码完全压缩,代码基本不具备可读性】
        entry: './src/main.js', //打包入口
        /*打包出口,一个对象,指定
        filename:打包后的js名
        path,打包后的路径
        */
        output: {
            filename: 'bundle.js',
            path: path.resolve(__dirname, 'dist')
                /*由于这里需要绝对路径,需要用到nodejs种的path模块
                __dirname 表示当前文件夹的绝对路径,
                这里表示在项目跟目录下新建dist文件作为打包后存放路径
                */
        }, //到这里就是webpack最基本的配置【webpack默认只能打包js文件】,没有用到各种加载器【loader】,插件【Plugin】,借助两者去处理js,css,img,.vue等复杂模块,
      
      //配置打包规则  固定写法!!!
      
       module: {
            rules: [{
                test: /.vue$/, // 正则表示匹配.vue结尾的文件
                loader: 'vue-loader',
            }]
        },
        plugins: [
            new VueLoaderPlugin(), //vue插件实例
        ]
    }

      到这里使用webpack就已经可以正常打包js以及.vue后缀的文件了,但是有一个问题就是 npm 安装的Vue 中会生成三个js文件:

    • runtime-only 运行时的 vue.common.js
    • compiler-only 编译时的compiler.js
    • runtime+compiler 兼备的vue.js

      而webpack默认会去找到vue.common.js然后打包导出,导致页面运行还是有问题。=》解决:配置 vue别名,默认找到vue.js 打包导出

     1 const path = require('path')
     2 
     3 const VueLoaderPlugin = require('vue-loader/lib/plugin')
     4     //官网除了表示配置打包规则rules,还要实例化一个vueloader插件
     5 
     6 module.exports = { //导出一个对象
     7     mode: 'development',
     8     entry: './src/main.js', //打包入口
     9     /*打包出口,一个对象,指定
    10     filename:打包后的js名
    11     path,打包后的路径
    12     */
    13     output: {
    14         filename: 'bundle.js',
    15         path: path.resolve(__dirname, 'dist')
    16             /*由于这里需要绝对路径,需要用到nodejs种的path模块
    17             __dirname 表示当前文件夹的绝对路径,
    18             这里表示在项目跟目录下新建dist文件作为打包后存放路径
    19             */
    20     }, //到这里就是webpack最基本的配置,没有用到各种处理器处理js,css,img等资源
    21     module: {
    22         rules: [{
    23             test: /.vue$/, // 正则表示匹配.vue结尾的文件
    24             loader: 'vue-loader',
    25         }]
    26     },
    27     plugins: [
    28         new VueLoaderPlugin(), //vue插件实例
    29     ],
    30     resolve: { //表示一些解决方案
    31         alias: { //别名
    32             'vue': 'vue/dist/vue.js', //这里表示导入vue时,导入此处指定路径下的文件
    33         }
    34     }
    35 }
    View Code

    总结:webpack本身只能打包js文件,打包其他文件,例如 vue组件.vue文件,.css等就需要借助loader;

       loader就是一组抓门用于打包特定文件的处理程序。

        

  • 相关阅读:
    JAVA中的CAS
    深入介绍Java中的锁[原理、锁优化、CAS、AQS]
    Java并发之AQS详解
    Java线程池ThreadPoolExecutor使用和分析(一)
    LinkedBlockingQueue
    生产者消费者两种实现:wait/notifyAll和Lock/Condition
    Java并发编程:CountDownLatch、CyclicBarrier和 Semaphore
    jvm系列(1):JVM问答
    mysql不存在插入否则更新
    java.util.MissingResourceException: Can't find bundle for base name db, locale zh_CN
  • 原文地址:https://www.cnblogs.com/Hijacku/p/14739032.html
Copyright © 2020-2023  润新知