最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • webpack

    正文概述 掘金(外婆桥卖汤)   2021-01-19   542

    const path = require('path'); const HtmlWebpackPlugin = require('html-webpack-plugin'); const { CleanWebpackPlugin } = require('clean-webpack-plugin'); module.exports = { mode: "development",//打包的两种模式 development开发模式 production 上线模式,会压缩代码默认为production entry: './src/index.js', output: { path: path.resolve('./build'), filename: 'index.[hash].min.js' }, plugins: [ new HtmlWebpackPlugin({ template: './public/index.html', filename: 'index.html', hash: true, minify: { collapseWhitespace: true, removeComments: true, removeAttributeQuotes: true, removeEmptyAttributes: true } }), new CleanWebpackPlugin() ], //配置一个类似于live server 的功能,仅仅是为了咱们开发使用的,他能自动创建一个web服务,然后给你打开一个网页,而且还能在你改了开发的代码之后,把页面自动更新,还能配置porxy代理 devServer: { port: 3000,//起服务的端口号 compress: true,//是否压缩 contentBase: path.resolve('./build'),//资源路径 open: true,//自动打开浏览器 hot: true,// 热更新 proxy: { "/user": "http://127.0.0.1:888"//将/user的请求导入到http://127.0.0.1:888上 } } }## webpack

    package.json

    {
      "name": "webpack",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1",
        "build":"webpack",
        "dev":"webpack-dev-server"
      },
      "keywords": [],
      "author": "",
      "license": "ISC",
      "devDependencies": {
        "clean-webpack-plugin": "^3.0.0",
        "html-webpack-plugin": "^4.5.1",
        "webpack": "^4.46.0",
        "webpack-cli": "^3.3.12",
        "webpack-dev-server": "^3.11.2"
      }
    }
    
    

    打包文件放在src文件夹内

    public文件夹内放模板html

    手动配置需要加一个webpack.config.js文件

    // 当前webpack的自定义配置模块必须放到根路径下
    
    // 在这里可以对webpack编译打包的过程进行自定义的配置
    // webpack是基于node开发的,所有在配置的时候,用的是node里的导入导出规范
    const path = require('path');
    
    // 生成html模板的
    const HtmlWebpackPlugin = require('html-webpack-plugin');
    
    const {CleanWebpackPlugin} = require('clean-webpack-plugin');
    // CleanWebpackPlugin清除之前的打包的内容的
    module.exports = {
      // 配置打包的入口文件的位置
      entry:'./src/index.js',
    
      // 配置打包之后生成的文件夹的位置和文件的名字
      output:{
        path:path.resolve('./build'), // 文件夹的路径
        filename:'index.[hash].min.js' // 编译完成的文件的名字
        // filename:'index.[hash].min.js'
        // hash的值每一次打包生成的都不一样,就是为了让每一次打包之后的js为文件名都不一样
      },
      // 在webpack中使用plugins插件
      plugins:[
        // webpack在编译的时候,会把当前的模板html进行读取,然后把最新打包的js文件引入到模板中,然后生成一个新的html文件放到build文件夹中
        new HtmlWebpackPlugin({
          // 当前模板的路径
            template:'./public/index.html',
            filename:'ss.html', // 当前生成的html的文件名
            hash:true, // 他会在当前html里引入js的连接上拼接一个hash值(这里的hash和上边output里的hash是一样的,都是为了防止走缓存的)
            minify:{
              // 配置html压缩的
              collapseWhitespace: true, // 把标签之间的空格去掉
            removeComments: true, // 去掉注释
            removeAttributeQuotes: true, // 把属性的双引号去掉
            removeEmptyAttributes: true // 去掉行间的空属性
            }
        }),
        //去掉之前的
        new CleanWebpackPlugin()
      ],
      //配置一个类似于live server 的功能,仅仅是为了咱们开发使用的,他能自动创建一个web服务,然后给你打开一个网页,而且还能在你改了开发的代码之后,把页面自动更新,还能配置porxy代理
      devServer:{
          port:3000,//起服务的端口号
          compress:true,//是否压缩
          contentBase:path.resolve('./build'),//资源路径
          open:true,//自动打开浏览器
          hot:true// 热更新
      }
    }
    

    webpack

    webpack是一个现代js的应用程序的静态模块打包工具,当webpack处理应用程序时,他会在内部构件一个依赖图,此依赖图会映射项目所需的每一个模块并生成一个或者多个bundle包,webpack本身是基于node.js开发的

    webpack的作用:

    • 代码转换:ts编译成js;less、scss编译成css;es6、es7编译成es5;虚拟dom编译成真实dom等
    • 文件优化:压缩js、css、html文件;压缩合并图片,图片base64等
    • 代码分割:提取多个页面的公共代码,提取首屏不需要执行部分的代码
    • 模块合并:在采用模块化的项目里,会有多个模块和文件需要构建功能把模块分类合并成一个文件
    • 自动刷新:监听本地源代码的变化,自动重新构建,刷新浏览器
    • 代码校验:ESLint代码规范校验,和检查,单元检测等

    (webpack本身不大,但是咱们要是实现某一些功能,还要往webpack中加一个模块来实现)

    1.模块化开发的发展史

    • 有利于代码分离、解耦以及复用
    • 团队并行开发
    • 避免命名冲突
    • 相互引用,按需加载

    模块化的发展史

    • 单例设计模式
    • AMD(异步模块定义require.js)
    • CMD(通用模块定义)
    • CommonJS(一般用于服务器开发,例如node.js) 导出module.exports={} 导入require('地址')
    • ES6 Module(js官方标准模块定义方式)
      • 1.导出export{} 导入 import 自定义名 from 地址,改名就是import * as hh from 地址,hh是一个对象,将全部的导入
      • 2.导出export var a=1; 导入 import {a} from 地址
      • 3.导出改名字要用as var a=1; export{a:as} 导入 import {as} from 地址,导入也一样,也得用as
      • 导入的东西是只读的,不能修改
      • 导入一般放在最上面,因为es6module是静态加载,会提前把所有的导入加载

    以后咱们的vue、react都是按照模块化思想开发的,每一个页面由一个或者多个模块组成,最后多个模块拼装成一个大页面

    在真实的项目开发中,我们的模块化思想,就是基于CommonJS和ES6Module两种规范解析,而webpack支持解析这两种规范

    npx,当前没有,访问全局,如npx lessc index.less index.css

    --save 生产依赖可以简化为-S --save-dev开发依赖 可以简化为-D

    安装到全局的特点

    1. 所有项目都能用
    2. 可以使用命令
    3. 版本可能会冲突
    4. 安装在全局不能基于CommonJS等模块规范进行导入导出

    安装到本地的特点

    1.当前项目可以使用 2.不可以使用命令 3.版本不会冲突 4.可以基于CommonJS等模块规范进行导入导出

    真实项目中 一般都是既安装在本地,也安装到全局

    1.npx[5.5版本以上] 2.本地可执行的文件(放到scripts中)

    npm速度优化 nrm yarn

    npm i nrm -g 全局安装nrm nrm ls 查看源目录 nrm use xxx 切换源

    跑环境和依赖项


    起源地下载网 » webpack

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元