vue2项目从0到1记录

news2024/11/24 1:01:24

脚手架需要安装完

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,  // 默认是false
	loaderOptions: {
      css: {
        // 这里的选项会传递给 css-loader
      },
      postcss: {
        // 这里的选项会传递给 postcss-loader
      }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2064089.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MyBatis[进阶]

大纲: 动态SQL查询 留言板 1. 动态SQL 1.1 <if> 我们都注册过一些信息,有的信息是非必填项,改如何实现呢? 这个时候就需要使⽤动态标签来判断了 ⽐如添加的时候性别gender为⾮必填字段&#xff0c;具体实现如 下&#xff1a; 注解: 如果性别为空: 如果性别不为空:…

你真的会用大模型吗,探索提示词工程的魅力

相信在这一两年内&#xff0c;每个人都尝试使用了各种大模型。不知大家有没有发现&#xff0c;它们的质量参差不齐&#xff0c;回答的内容也不一定准确。随着人工智能技术的快速发展&#xff0c;越来越多的模型被开发出来并用于各种应用&#xff0c;但并非所有模型都能够提供可…

Leetcode每日刷题之904.水果成篮

1.题目解析 本题的题目要求较长&#xff0c;不过理解起来较为简单&#xff0c;就是在给定数组内找出最长子数组&#xff0c;并且该最长子数组只能有两种数字&#xff0c;最后返回该符合条件的最长子数组的长度即可 题目来源&#xff1a;904.水果成篮 2.算法原理 本题的核心是找…

组件提前渲染

问题&#xff1a; 组件正常引入并使用的过程中&#xff0c;出现组件第一次渲染不显示&#xff0c;只有再次刷新页面才显示的问题 <el-table-column label"图纸规定" align"center" prop"tzgd" v-if"mbform.zbzd.tzgd" width"…

动手实现基于Reactor模型的高并发Web服务器(一):epoll+多线程版本

系统流程概览 main函数 对于一个服务器程序来说&#xff0c;因为要为外部的客户端程序提供网络服务&#xff0c;也就是进行数据的读写&#xff0c;这就必然需要一个 socket 文件描述符&#xff0c;只有拥有了文件描述符 C/S 两端才能通过 socket 套接字进行网络通信&#xff0…

【深海王国】小学生都能玩的单片机!番外2:Arduino控制其他元器件

Hi٩(๑ ^ o ^ ๑)۶, 各位深海王国的同志们&#xff0c;早上下午晚上凌晨好呀~辛勤工作的你今天也辛苦啦 (o゜▽゜)o☆ 今天大都督为大家带来单片机的新番外系列——小学生都能玩的单片机&#xff01;番外2&#xff1a;Arduino控制其他元器件&#xff0c;带你学习如何使用Ard…

性能测试面试问答题

1、性能测试怎么测试&#xff1f; 性能测试其实就是通过自动化工具模拟多种正常、峰值以及异常负载来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试&#xff0c;二者可结合使用。 性能指标主要有平均响应时间、90%响应时间、吞吐量、吞吐率&#xff0c;每…

基于SpringBoot的私房菜定制上门服务系统的设计与实现pf

TOC springboot512基于SpringBoot的私房菜定制上门服务系统的设计与实现pf 第1章 绪论 1.1 课题背景 二十一世纪互联网的出现&#xff0c;改变了几千年以来人们的生活&#xff0c;不仅仅是生活物资的丰富&#xff0c;还有精神层次的丰富。在互联网诞生之前&#xff0c;地域…

图书项目要点

一、搭建项目 使用tarojs/cli进行搭建 taro init [项目名] 二、具体页面 页面声明&#xff1a; 在【app.config.ts】中对主页面进行声明&#xff1a;组件页面可以不用声明 pages: ["pages/index/index",pages/user/index,pages/book/index,], tabbar制作&…

Linux系统编程(14)UDP全双工通信和TCP半双工通信

一、UDP全双工通信 UDP通信基础&#xff1a; recvfrom函数 recvfrom 是一个用于接收数据的函数&#xff0c;&#xff0c;但 recvfrom 不仅接收数据&#xff0c;还可以获取发送数据的地址信息。 ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sock…

【vue3|第25期】Vue3中的useRoute:轻松访问路由信息

日期&#xff1a;2024年8月21日 作者&#xff1a;Commas 签名&#xff1a;(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释&#xff1a;如果您觉在这里插入代码片得有所帮助&#xff0c;帮忙点个赞&#xff0c;也可以关注我&#xff0c;我们一起成长&#xff1b;如果有不…

撰写文献综述策略

撰写文献综述 文献综述在形式上与任何其他类型的学术文本没有任何不同&#xff0c;因为它也具有基本部分。每个部分中包含的内容取决于您撰写文献综述的目的&#xff1a; 简介 此部分应明确定义评论的目的和重点。论文&#xff1a;如果您将评论作为毕业论文或学位论文的一部分…

文件IO函数练习

作业&#xff1a;使用write和read完成文件的拷贝。 代码 #include <myhead.h>int main(int argc, const char *argv[]) {int fd open("./1.txt",O_RDONLY);//已只读打开被拷贝文件if(-1 fd){perror("open");return -1;}int fd1 open("./2.…

Python使用QtSide6(PyQt)编写界面

1、安装QtSide6 开始菜单cmd 创建虚拟环境 python -m venv env2 进入虚拟环境 call env2/scripts/activate 安装Pyside6 pip install Pyside6 2、设计Qt界面 打开designer.exe&#xff0c;设计界面 点击菜单【窗体】【View Python Code...】&#xff0c;点击【全部复制】…

论文阅读:MonoScene: Monocular 3D Semantic Scene Completion

论文阅读&#xff1a;MonoScene: Monocular 3D Semantic Scene Completion Abstract MonoScene提出了一个3D语义场景完成&#xff08;SSC&#xff09;框架&#xff0c;其中场景的密集几何形状和语义是从单个单目 RGB 图像中推断出来的。与SC文献不同&#xff0c;我们依靠2.5或…

回归预测|基于北方苍鹰优化NGO-Transformer-GRU组合模型的数据预测Matlab程序多特征输入单输出

回归预测|基于北方苍鹰优化NGO-Transformer-GRU组合模型的数据预测Matlab程序多特征输入单输出 文章目录 前言回归预测|基于北方苍鹰优化NGO-Transformer-GRU组合模型的数据预测Matlab程序多特征输入单输出 一、NGO-Transformer-GRU模型NGO-Transformer-GRU组合模型的数据预测1…

Linux之数字证书

新书速览|Ubuntu Linux运维从零开始学_ubuntu linux运维从零开始学 pdf 下载-CSDN博客 《Ubuntu Linux运维从零开始学&#xff08;Linux技术丛书&#xff09;》(肖志健)【摘要 书评 试读】- 京东图书 (jd.com) 随着网络环境的恶化&#xff0c;人们已经逐渐抛弃网络上面的明文…

嵌入式day32

recvfrom 参数&#xff1a; sockfd //socket的fd buf //保存数据的一块空间的地址 len //这块空间的大小 flags //0 默认的接收方式 --- 阻塞方式 src_addr //用来保存发送方的地址信息 addrlen //表示发送方实际的地址信息大小 返回值&#xff1a; 成功 返回接收到的字…

小米、友邦带领恒指大反攻!

港股三大指数反弹止步2连跌&#xff0c;恒生科技指数一度冲高至2%&#xff0c;恒指收涨1.44%。盘面上&#xff0c;大型科技股多数表现活跃&#xff0c;业绩超预期&#xff0c;小米大涨超8%表现尤其抢眼&#xff0c;京东涨约4%&#xff0c;百度涨1.71%&#xff0c;网易涨2.14%&a…

linux内核编译及驱动程序的添加

内核编译:Makefile 条件编译 先拷贝一个默认的配置到.config (官方所有的默认配置文件在arch/arm/configs下) 我使用的是内核源码顶层目录下的config_mini2440_td35 在Kconfig中定义menuconfig中的可配置选项 make menuconfig //可视化配置菜单 --内核活地图 .config #…