当前位置: 首页 > news >正文

vue2项目从0到1记录

脚手架需要安装完

npm install -g @vue/cli

1. 使用脚手架创建项目

vue create 项目名

2. 引入样式重置normalize.css插件 // 统一浏览器样式

安装:npm install --save normalize.css
引入:import 'normalize.css/normalize.css'

3. 根据部署环境判断是否要添加环境变量文件

在这里插入图片描述

4. 配置vue.config.js文件

在这里插入图片描述

4.1 配置publicPath为’./’

在这里插入图片描述
如果配置了publicPath,打包生成的依赖路径会添加上对应目录名
在这里插入图片描述
在这里插入图片描述

4.2 配置outputDir,assetsDir,indexPath

在这里插入图片描述

4.3 配置filenameHashing

在这里插入图片描述

4.4 配置本地运行环境devServer

在这里插入图片描述

4.5 配置webpack-chain

4.5.1 基础配置:添加html相关配置:title,cdn,meta时间分支记录

在这里插入图片描述

4.5.2 缓存问题:添加输出js文件时间戳

在这里插入图片描述

4.5.3 性能优化:cdn引入依赖和外部扩展externals

配置externals,控制打包的不打包第三方依赖,减少打包时间。
在这里插入图片描述
针对不打包的依赖使用cdn的方式引入
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.5.4 打包优化:多进程打包thread-loader

// 安装
pnpm i thread-loader -D
// 使用node内置模块
const os = require('os')
// cpu核数
const threads = os.cpus().length - 1

在这里插入图片描述

4.5.5 打包优化:分包optimization

使用optimization.splitChunks
在这里插入图片描述

4.5.6 打包优化:压缩包文件CompressionWebpackPlugin,压缩代码TerserPlugin

CompressionWebpackPlugin需要运维配置

// 压缩资源
pnpm install compression-webpack-plugin --save-dev
// 优化js的输出成果(如清除debugger和console)
pnpm install terser-webpack-plugin --save-dev
// 使用
const CompressionWebpackPlugin = require('compression-webpack-plugin')
const TerserPlugin = require('terser-webpack-plugin');

在这里插入图片描述

4.6 配置configureWebpackvue.config.js文件webpack相关(configureWebpack属性内)

4.6.1 插件NodePolyfillPlugin

因为webpack5移除了node的polyfill自动引入,所以会导致运行失败

// 安装:
pnpm install node-polyfill-webpack-plugin
// 使用:
const NodePolyfillPlugin = require('node-polyfill-webpack-plugin')

在这里插入图片描述

4.6.2 插件AutoImport

自动导入模块

  const AutoImport = require('unplugin-auto-import/webpack')configureWebpack: {plugins: [new NodePolyfillPlugin(),AutoImport({include: [/\.[tj]sx?$/, // .ts, .tsx, .js, .jsx/\.vue$/,/\.vue\?vue/, // .vue/\.md$/ // .md],imports: [{'vue': ['ref','unref','toRef','toRefs','onMounted','onUnmounted','computed','watch','reactive','getCurrentInstance','defineProps','onBeforeUnmount','defineEmits','nextTick','defineComponent'],'@/../pingbiao.config': [// default imports['default', 'appConfig'] // import { default as appConfig } from '@/../pingbiao.config',]}]})}}

4.6.3 插件HtmlWebpackPlugin

Vue CLI支持通过chainWebpack配置来自定义HtmlWebpackPlugin,也可以单独引入配置

4.6.4 插件CopyWebpackPlugin

用于将文件从源目录复制到构建目录

npm install copy-webpack-plugin --save-dev
const CopyPlugin = require('copy-webpack-plugin');module.exports = {plugins: [new CopyPlugin({patterns: [{ from: 'source', to: 'dest' },{ from: 'other', to: 'public' },],}),],
};

4.6.5 插件SpeedMeasureWebpackPlugin

分析打包速度

5. Css配置

Vue CLI 项目天生支持 PostCSS、CSS Modules 和包含 Sass、Less、Stylus 在内的预处理器。

css:{// 是否将组件中的 CSS 提取至一个独立的 CSS 文件中extract: false, // 生产环境下是 true,开发环境下是 false// 是否为 CSS 开启 source map。设置为 true 之后可能会影响构建的性能。sourceMap: false,  // 默认是falseloaderOptions: {css: {// 这里的选项会传递给 css-loader},postcss: {// 这里的选项会传递给 postcss-loader}}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Linux软件编程---数据库
  • VSCode打开HBuilderX创建的uniapp项目
  • Vue.js与UI构建
  • Autojs详解
  • 解决macOS下Homebrew下载慢的问题
  • [JS]经典面试题-基础篇
  • 泛微基于华为仓颉编程语言开发公文交换系统 推动办公软件全面国产化
  • 代码随想录算法训练营第二十三天(回溯 二)
  • 目标检测(Object Detection)
  • 深度学习 --- VGG16各层feature map可视化(JupyterNotebook实战)
  • Qt生成.exe文件
  • Windows上传Linux文件行尾符转换
  • 使用kubekey快速搭建k8s集群
  • fastadmin 安装
  • 信息学奥赛一本通编程启蒙题解(3031~3035)
  • Apache Zeppelin在Apache Trafodion上的可视化
  • bootstrap创建登录注册页面
  • es6(二):字符串的扩展
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • Java,console输出实时的转向GUI textbox
  • MaxCompute访问TableStore(OTS) 数据
  • Node项目之评分系统(二)- 数据库设计
  • php中curl和soap方式请求服务超时问题
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • vuex 学习笔记 01
  • 关于extract.autodesk.io的一些说明
  • 看域名解析域名安全对SEO的影响
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 怎样选择前端框架
  • 栈实现走出迷宫(C++)
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • Spring Batch JSON 支持
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (新)网络工程师考点串讲与真题详解
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • .CSS-hover 的解释
  • .gitignore文件_Git:.gitignore
  • .gitignore文件---让git自动忽略指定文件
  • .NET Core WebAPI中封装Swagger配置
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .NET 服务 ServiceController
  • .NET连接MongoDB数据库实例教程
  • .stream().map与.stream().flatMap的使用
  • ::
  • @Autowired 与@Resource的区别
  • @PreAuthorize与@Secured注解的区别是什么?
  • @selector(..)警告提示
  • [ 第一章] JavaScript 简史
  • [ 云计算 | AWS 实践 ] Java 如何重命名 Amazon S3 中的文件和文件夹
  • [.net] 如何在mail的加入正文显示图片