webpack

webpack介绍

webpack可以看成是一个模块化打包机,从入口开始,可以分析项目的依赖,打包成静态资源(html css js 图片)。
webpack可以实现的功能有:

  • 代码转换:将高级语法转为低级语法,比如ES6转ES5,Less Sass转化为CSS
  • 文件优化:文件压缩打包
  • 自动刷新:webpack为我们提供一个本地服务,实现热更新,代码变更后更新页面
  • 代码分割:公共模块的分离
  • 模块合并:多个模块合并成一个模块
  • 代码校验
  • 自动发布
    webpack使用node编写
webpack基础配置
  1. webpack安装
    • 安装本地的webpack,因为全局的可能会导致版本不一致
    • webpack 需要先初始化 npm init
    • webpack 4需要安装 webpack 和webpack cli -D(表示开发依赖)
  2. webpack配置
  3. webpack执行
    • 执行webpack命令: npx webpack
    • webpack执行会默认寻找node_moduled下的bin文件,bin中有一个 webpack.cmd,里面写了如果当前文件目录下有 node.exe 就会执行这个,否则执行当前目录下的上一级的webpack的webpack.js文件(也就是node_modules/webpack/webpack.js文件,需要用上webpack cli)
    • webpack打包后的结果可以在浏览器环境中运行!!
webpack配置一-只能打包js
  • 配置文件:webpack.config.js
    为什么叫这个名字? 默认运行node_modules下的webpack,webpack又会调用webpack cli,cli中包含解析的关系,cli中有一个 config-yargs.js文件,里面的配置说明了默认的文件名-一个 webpack.config.js 一个 webpackfile.js
  • 配置文件名不一定为webpack.config.js,可以通过 npx webpack --config 指定名字来指定配置文件。
  • 还可以在 package.json对这些命令进行重命名
"scripts":{
	"build": "webpack --config webpack.config.js"
}
//通过 npm run build 来执行配置的命令
//还可以在后面添加两个 -- 来进行传参
//例 npm run build -- 参数
let path = require('path')
module.exports = {
    mode: 'development', //两种 production 和 development
    entry: '', //入口
    output: { //出口文件(文件名 路径)
        filename: 'bundle.js',
        path: path.resolve(__dirname, 'dist') //路径,必须是绝对路径,所以使用path.resolve
    }
}
wepack配置二-HTML插件HtmlWebpackPlugin

我们希望webpack可以将打包后的文件插入到HTML中,并且把结果放在我们想要输入的build目录下面去。

  1. 根据自己指定的HTML模版去生成HTML文件
  2. 将打包后的js文件插入到HTML文件中去
  • 压缩HTML
let path = require('path')
let HtmlWebpackPlugin = require('html-webpack-plugin')
module.exports = {
    devServer: {
        port: 3000,
        progress: true,
        contentBase: './build',
        compress: true
    },
    mode: 'development', //两种 production 和 development
    entry: '', //入口
    output: { //出口文件(文件名 路径)
        filename: 'bundle.[hash].js', //添加hash值,每次都生成一个新文件
        path: path.resolve(__dirname, 'dist') //路径,必须是绝对路径,所以使用path.resolve
    },
    plugins:[
      new HtmlWebpackPlugin({
        template:'', //模版路径
        filename:'index.html',
        minify:{
          removeAttributeQuotes:true, //删除双引号
          collapseWhitespace:true, //折叠空行
          hash:
        }
      })
    ]
}
webpack配置三-CSS处理-css-loader style-loader
  • webpack默认只能解析JS模块,要解析CSS模块,必须使用css-loader

  • loader的作用

    1. 将源代码进行转化,转化成模块
    2. loader可以多个组合使用,多个loader使用数组
    3. loader顺序是从右向左执行
    module: { //模块
        rules: [{
            test: /\.css/,
            use: [{ //use是一个数组,loader可以以对象的形式插入
                loader: 'style-loader',
                options: {

                }
            }, 'css-loader']
        }]
    }
  • 我们在html文件中通过<script>标签插入的CSS样式,会在打包的CSS标签的上面,导致优先级没有它高。解决:style-loader的options里面配置 insert:top
webpack配置四-Sass处理-Sass-loader
  • Sass-loader:解析Sass成css
  • Less-loader:
  • 还可以使用mini-css-extract-plugin将css样式进行抽取合并成一个文件,以link标签的形式插入
postcss-loader(添加浏览器前缀)

postcss-loader自动添加浏览器前缀,默认会调用postcss.config.js文件

webpack打包出来的文件解析
  • 一个自动执行的匿名函数
  • 参数是一个对象,里面的属性是模块的路径值是匿名函数
常见loader作用:
  • css-loader
    解析CSS,主要是负责解析@import 路径,因为有时候CSS文件中会@import导入CSS
  • style-loader
    将CSS插入到head标签中
  • postcss-loader
    自动添加浏览器前缀
  • file-loaderurl-loader的作用
常见插件作用
  • mini-css-extract-plugin插件:将css抽取成一个文件,以link标签的形式插入到html文件中
  • optimize-css-assets-webpack-plugin插件:
    用来压缩css,使用它必须配合uglifyJs一起,不然使用了它js就不会被压缩了
  • CleanWebpackPlugin插件:
    每次构建前清除dev-server构建的dist目录
    重新构建后,再生成dist目录
    实现了实时将文件覆盖,不存在缓存
  • DefinePlugin插件
    用来设置全局变量
webpack掌握内容
  1. webpack常见配置
  2. webpack高级配置
  3. webpack优化策略
  4. webpack中的Tapable
  5. webpack流程,手写webpack
  6. ast抽象语法树
  7. 手写webpack中常见loader
  8. 手写webpack中常见plugin
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 JavaScript 编写的记忆游戏(附源代码)   项目:JavaScript 记忆游戏(附源代码) 记忆检查游戏是一个使用 HTML5、CSS 和 JavaScript 开发的简单项目。这个游戏是关于测试你的短期 记忆技能。玩这个游戏 时,一系列图像会出现在一个盒子形状的区域中 。玩家必须找到两个相同的图像并单击它们以使它们消失。 如何运行游戏? 记忆游戏项目仅包含 HTML、CSS 和 JavaScript。谈到此游戏的功能,用户必须单击两个相同的图像才能使它们消失。 点击卡片或按下键盘键,通过 2 乘 2 旋转来重建鸟儿对,并发现隐藏在下面的图像! 如果翻开的牌面相同(一对),您就赢了,并且该对牌将从游戏中消失! 否则,卡片会自动翻面朝下,您需要重新尝试! 该游戏包含大量的 javascript 以确保游戏正常运行。 如何运行该项目? 要运行此游戏,您不需要任何类型的本地服务器,但需要浏览器。我们建议您使用现代浏览器,如 Google Chrome 和 Mozilla Firefox, 以获得更好、更优化的游戏体验。要玩游戏,首先,通过单击 memorygame-index.html 文件在浏览器中打开游戏。 演示: 该项目为国外大神项目,可以作为毕业设计的项目,也可以作为大作业项目,不用担心代码重复,设计重复等,如果需要对项目进行修改,需要具备一定基础知识。 注意:如果装有360等杀毒软件,可能会出现误报的情况,源码本身并无病毒,使用源码时可以关闭360,或者添加信任。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值