Vue3学习-webpack-demo

webpack-demo

一、下载对应的插件

1.1
  • 1.下载内容
    • webpack
    • webpack-cli
    • webpack-dev-server 启动dev服务
    1. 下载webpack相关的plugin插件
    • html-webpack-plugin html模板
    • clean-webpack-plugin
    • friendly-errors-webpack-plugin 美化webpack控制台的错误打印信息
    1. 下载webpack相关的loader处理各种类型的文件
    • vue-loader@next
    • @vue/compiler-sfc 解析.vue文件
    • css-loader 处理css文件
    • style-loader 处理style样式
    • less
    • less-loader 处理less文件
    • typescript
    • ts-loader 处理ts文件
  • 4.下载vue项目相关的插件
    • vue

二、性能

2.1 lightHouse 跑分(google的devtool),分析网页的性能
  • FCP(First Contentful Paint) 首屏加载时间
    首次内容绘制时间,浏览器第一次绘制Dom相关的内容,也是用户第一次看到页面内容的时间。
    • 还有其他的参数;在这里插入图片描述
2.2 打包之后的分析
  • vite项目:pnpm add rollup-plugin-visualizer
  • webpack:webpack-bundle-之类的

三、具体的内容

webpack.config.js(webpack5)
/**
 * webpack 是基于node环境的,所以是使用commonjs语法
 */
const { Configuration } = require("webpack");
const path = require("path");
const htmlWebpackPlugin = require("html-webpack-plugin");
const { VueLoaderPlugin } = require("vue-loader/dist/index");
const { CleanWebpackPlugin } = require("clean-webpack-plugin");
const FriendlyErrorsWebpackPlugin = require("friendly-errors-webpack-plugin");
// 我去,这就叫使用注解的方式,在我们打印entry的时候,就有想对应的只能提示了??
/**
 * @type {Configuration}
 */
const config = {
	mode: "development",
	entry: "./src/main.ts",
	output: {
		filename: "[hash].js",
		path: path.resolve(__dirname, "dist"),
	},
	resolve: {
		alias: {
			// 设置别名
			"@": path.resolve(__dirname, "./src"),
		},
		// 设置后缀
		extensions: [".vue", ".ts", ".js"],
	},
	module: {
		rules: [
			{
				test: /\.vue$/, //解析vue 模板
				use: "vue-loader",
			},
			{
				test: /\.css$/, //解析vue 模板
				use: ["style-loader", "css-loader"],
			},
			{
				test: /\.less$/, //解析 less
				use: ["style-loader", "css-loader", "less-loader"],
			},
			{
				test: /\.ts$/, //解析ts
				loader: "ts-loader",
				options: {
					configFile: path.resolve(process.cwd(), "tsconfig.json"),
					appendTsSuffixTo: [/\.vue$/],
				},
			},
		],
	},
	stats: "errors-only", //取消终端累赘的提示
	devServer: {
		// port: 9000,
		open: false,
		// proxy:{}
	},
	plugins: [
		new htmlWebpackPlugin({
			template: "./public/index.html", //html模板
		}),
		new CleanWebpackPlugin(), //打包清空dist
		new VueLoaderPlugin(), //解析vue
		new FriendlyErrorsWebpackPlugin({
			compilationSuccessInfo: {
				//美化样式
				messages: ["You application is running here http://localhost:8080"],
			},
		}),
	],
	externals: {
		vue: "Vue", // 不会将Vue包打入,会进行cdn引入?减少打包体积
		// 需要进行cdn引入,会优先请求cdn,如果网络不好,白屏会更严重;
		// 后面还有分包
	},
};
module.exports = config;
package .json
{
	"main": "webpack.config.js",
	"scripts": {
		"dev": "webpack-dev-server",
		"build": "webpack"
	},
	"dependencies": {
		"@vue/compiler-sfc": "^3.2.47",
		"clean-webpack-plugin": "^4.0.0",
		"css-loader": "^6.7.3",
		"friendly-errors-webpack-plugin": "^1.7.0",
		"html-webpack-plugin": "^5.5.0",
		"less": "4.0.0",
		"less-loader": "^11.1.0",
		"style-loader": "^3.3.1",
		"ts-loader": "^9.4.2",
		"typescript": "^4.9.5",
		"vue": "^3.2.47",
		"vue-loader": "^17.0.1",
		"webpack": "^5.75.0",
		"webpack-cli": "^5.0.1",
		"webpack-dev-server": "^4.11.1"
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
# URL: http://kongkong.fence.wmdev2.lsh123.com/ # jl-mis(接龙后台管理系统) 项目是基于vue-cli 3+ 构建的,请先将vue-cli升级到3+版本,vue-cli3 传送门(https://cli.vuejs.org/zh/)。 ## 技术栈 vue2 + vuex + vue-router + element-ui + webpack + ES6/7 + axios + less + flex + svg ### 项目图形化管理界面 ``` vue ui ``` ## 项目运行 #### 注意:由于涉及大量的 ES6/7 等新属性,node 需要 8.0 以上版本 ``` npm install npm run serve ``` ### 打包 ``` npm run build ``` ### 代码的 lint ``` npm run lint ``` # 项目布局 ``` . ├── public // HTML 和静态资源 │   ├── favicon.ico // 图标 │   ├── index.html // 入口html文件 ├── src // 源码目录 │   ├── assets // 静态资源 │   │   ├── images // 公共图片 │   ├── components // 组件 │   │   ├── common // 公共组件 │   │   ├── page // 页面 │   ├── libs // 封装库 │   │   ├── storage.js // 对cookie 和 localStorage 的封装 │   ├── plugins // 引用的插件 │   │   ├── axios.js // 对axios的的封装(拦截器相关) │   │   ├── element.js // 引入element-ui │   ├── router │   │   └── router.js // 路由配置 │   ├── service // 数据交互统一调配 │   │   ├── service.js // 获取数据的统一调配文件,对接口进行统一管理 │   ├── store // vuex的状态管理 │   │   ├── actions.js // 配置actions │   │   ├── getters.js // 配置getters │   │   ├── store.js // 引用vuex,创建store │   │   ├── modules // store模块 │   │   │   ├── urlGroups.js // 路由分组(权限相关) │   │   ├── mutation-types.js // 定义常量muations名 │   │   └── mutations.js // 配置mutations │   └── style // 样式字体相关 │   ├── fonts // 字体相关 │   ├── utility.less // 公共样式文件 │   ├── mixin.less // 样式配置文件 │   └── normalize.css // 样式重置 │   ├── App.vue // 页面入口文件 │   ├── main.js // 程序入口文件,加载各种公共组件 ├── vue.config.js // vue-cli 3+ 暴露出来的webpack相关的配置文件 . ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值