作用域问题:
立即执行函数 : var result = (function(){})()
如何实现代码的拆分 :
// 第一个文件夹
//写入方法
module.exports = {} //暴露..
// 第二个文件夹
require()//引入第一个文件夹的自定义模块
//方法模块
define([依赖的模块],function() {
//暴露的接口
})
// 要引入的文件 main.js
require([引入上面的方法模块],function(参数是上面方法模块的方法名) {
})
//在HTML文件中,引入第三方文件require.js data-main属性提供了一个入口,写入第二个文件的地址]()
==============================================
//安装(本地 webpack)
npm install webpack webpack-cli
function helloword() {
}
export default helloworld //模块导出
import helloword form "./url" //模块导入
//pwd 绝对路径
//最后在终端上 npx webpack 会出现一个main.js 文件
webpack --stats detailed
查看打包详情
通过配置文件自定义模块
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WFcs254i-1647736768399)(C:\Users\Lenovo\Desktop\typora\img\config.png)]
//通过配置文件自定义模块
//1. 创建 webpack.config.js 文件
//2. 引入 path 模块
const path = require('path')
//3.
module.exports = {
//配置入口
entry: './src/index.js' ,
output: {
//指定输出文件的文件名
filename : 'bundle.js' ,
//指定文件的输出路径
path: path.resolve(__dirname, './dist')
} ,
mode: 'none'
}
//4. html文件里 引入bundle.js文件
//5. 终端:
// npx webpack dist文件都是通过 config文件配置而成的
实现自动生成 HTML 入口文件和引入功能
//1. 安装
npm install html-webpack-plugin
//2. 自定义一个模块
//在 config 文件里添加如下代码
const HtmlWebpackPlugin = require('html-webpack-plugin')
plugins: [
//第一个插件
new HtmlWebpackPlugin({
//模板
Template: './index.html',
//输出的文件的文件名
filename: 'app.html',
//标签的位置
inject: 'body'
})
]
//3. npx webpack
//4. dist 文件里会出现一个app.html
//清理 dist
//output 中添加
clean: true
//创建文件夹
//2. config 文件
mode: 'development'
//3. 使用 source-map
//4. 终端 npx webpack --watch 实现自动编译
//5. 安装 webpack-dev-server 插件 实现自动更新无需是手动刷新
devServer: {
static: './dist'
}
6. npx webpack-dev-server 点Loopback后的网址
发送一个单独的文件,并导出 URL
//在config文件中
module: {
//规则
rules: [
{
// 加载的文件类型
test: /\.png$/, // $ 表示以png作为扩展名的文件
//资源类型
type: 'asset/resource',
//自定义图片的名称与存放路径
generator: {
// 文件夹 根据文件内容生成哈希字符串 扩展名
filename: 'images/[contenthash][ext]'
}
}
]
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PZDzR4ai-1647736768401)(C:\Users\Lenovo\Desktop\typora\img\resource.png)]
用于导出资源的源代码
在导出一个 data URL 和发送一个单独的文件之间自动选择
默认情况下,当文件大小小于8k时,只会生成一个链接
loader
style-loader
加载css
less
less-loader
引入css预处理工具
mini-css-extract-plugin -D
抽离 压缩 C
SS
csv-loader,xml-loader
加载数据
data.xml 会转化为一个对象
data.csv 会转换为一个数组
npm install babel-loader @babel/core @babel/preset-env -D
@babel/runtime
@babel/plugin-transform-runtime
配置输出文件的文件名
改变filename值
缓存第三方库
将js 文件放到一个文件夹中
开发环境
npx webpack --env production
npx webpack --env production --env goal=local
env.goal
terser-webpack-plugin
压缩插件
"scripts": {
"start": "webpack serve -c ./config/webpack.config.dev.js",
"build": "webpack -c ./config/webpack.config.prod.js"
}
合并配置文件
npm install webpack-merge -D
公共路径 环境变量 拆分环境变量 npm脚本 提取公共配置 合并配置文件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DXrGXbs6-1647736768401)(C:\Users\Lenovo\Desktop\typora\img\source-map.png)]
npm install webpack webpack-cli webpack-dev-server html-webpack-plugin -D
npm install webpack webpack-cli webpack-dev-server html-webpack-plugin -D
没学好
module.hot在config文件的devserver 中 设置的值为 true
if(module.hot) {
//当 ./input.js 发生变化时,accept() 函数执行
module.hot.accept('./input.js', () => {
})
安装插件,帮助查找问题
npx eslint ./src
//手工关闭覆盖层
client: {
overlay: false,
}
//检查错误的配置
{
test: /\.js$/,
use: ['babel-loader', 'exlint-loader'],
}
2.1.5