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

Vue学习记录之一(介绍及脚手架的使用)

一、背景知识介绍

1、构建工具介绍

Vite, Webpack,Rollup, Parce

构建工具优点缺点
Vite- 快速启动,秒级热更新,更快的构建速度,更好的开发体验;
- 支持 Vue3 和 ES modules 的原生特性,轻松实现按需加载。
- 对于单页应用和小型项目的构建效率高
- 可以快速地启动开发服务器
- 能够快速实现 SSR
- 对于ESM的支持更加友好
- 对于大型项目构建效率不高
- 不支持IE11及以下浏览器
Webpack- 功能强大、可配置性高
- 支持各类资源的处理、打包和优化
- 支持热重载和模块热替换
- 社区支持广泛、插件丰富
- 学习成本较高,配置文件繁琐,构建速度慢;
- 初学者可能会遇到各种问题,需要不断深入学习和实践;
- 大型项目的构建成本可能较高。
- 初次构建时间长
- 构建速度较慢
Rollup- 构建速度快、效率高
- 生成的代码体积小
- 对代码进行静态分析和优化
- 支持Tree shaking等高级特性
- 对于需要动态加载的项目不太友好
- 配置较为复杂
- 处理HTML、CSS、图片等资源相对不太方便
Parce- 零配置、自动化高
- 开箱即用、易上手
- 支持多种资源的打包和优化
- 构建速度较快
- 对于一些高级需求不太友好
- 不支持Tree shaking
- 社区生态相对不够完善

2、包管理/依赖更新工具

  • npm, pnpm, yarn

  • npm: 安装Node.js 后就可以使用

  • pnpm: 即使没有Node.js,也可以直接安装pnpm,也可以使用npm安装,npm install -g pnpm

  • yarn: npm install -g yarn

3、框架的选择

脚手架(框架):用于初始化,创建项目,选择性安装需要的插件,指定统一的风格,生成demo。

  • React是一个用于构建Web应用程序UI组件的JavaScript库,主要用于构建UI

  • Angular是一个由Google支持的基于TypeScript的JavaScript框架。这是一个非常受欢迎的前端开发框架。Angular是作为Angular 2或Angular发布的,它构成了AngularJS(框架的第一个版本)的重写。

  • Vue.js是讨论最多且发展最快的JavaScript框架之一

  • Vanilla 是一款以Openresty为基础的框架,它以简洁、高效的特性吸引了众多开发者的目光。Vanilla不仅仅是一个简单的工具集,更是一个完整的生态系统,提供了一系列组件,如Bootstrap、Router、Controllers、Models和Views,帮助开发者快速构建稳定且高性能的Web应用程序。

二、项目的部署

Vue2 的脚手架有一种:VueCli

Vue3 的脚手架有两种:VueCli + Vite

Vite: 是优化了rollup构建工具, VueCli 使用的Webpack构建工具。

推荐使用 Vue3 + Vite

# 1、构建项目
pnpm create vite@latest 项目名称 #npm create vite@latest 项目名称
# 2、选择大框架Vanilla
>   VueReactPreactLitSvelteSolidQwikOthers
# 3、选择语言TypeScriptJavaScript
>   Customize with create-vue ↗Nuxt ↗   #也是Vue的一个轻量级框架。可用来创建服务端渲染 (SSR) 应用,也可充当静态站点引擎生成静态站点应用。
#TypeScript 是 JavaScript 的超集,增加了静态类型检查。通过在代码中显式声明变量的类型,TypeScript 提供了更强的类型安全性,能在编译时捕获类型错误
# 4、    
√ 是否使用 TypeScript 语法? ... 否 / 是
√ 是否启用 JSX 支持? ... 否 / 是
√ 是否引入 Vue Router 进行单页面应用开发? ... 否 / 是
√ 是否引入 Pinia 用于状态管理? ... 否 / 是
√ 是否引入 Vitest 用于单元测试? ... 否 / 是
√ 是否要引入一款端到端(End to End)测试工具? » 不需要
√ 是否引入 ESLint 用于代码质量检测? ... 否 / 是
√ 是否引入 Vue DevTools 7 扩展用于调试? (试验阶段) ... 否 / 是
正在初始化项目 C:\Users\Administrator\Desktop\dk-ruoyi\demo3...项目初始化完成,可执行以下命令:cd demo3pnpm installpnpm dev

在这里插入图片描述
目录介绍

project-name
│
├── public                  # 静态资源
│   ├── index.html          # HTML 模板
│   └── favicon.ico         # Favicon
│
├── src
│   ├── assets              # 资源文件
│   ├── components          # 组件
│   ├── router              # 路由
│   ├── views               # 页面
│   ├── store               # 状态管理
│   ├── styles              # CSS/SCSS/SASS/LESS 样式
│   ├── utils               # 工具函数
│   ├── directives          # 自定义指令
│   ├── mixins              # 混入
│   ├── types               # TypeScript 类型定义
│   ├── App.vue             # 主组件
│   ├── main.ts             # 入口文件
│   └── vite-env.d.ts       # Vite 类型定义
│
├── tests                   # 单元测试
│   └── *.test.ts           # 测试文件
│
├── .env                    # 环境变量
├── .eslintrc.js            # ESLint 配置
├── .gitignore              # Git 忽略文件
├── index.html              # 入口 HTML
├── package.json            # 依赖配置
├── tsconfig.json           # TypeScript 配置
├── vite.config.ts          # Vite 配置
└── yarn.lock               # 依赖锁文件(如果使用 yarn)

如果上面没有选择路由,也可以单独安装

pnpm install vue-router@4

然后在src中建立router文件夹,文件夹中建立index.ts文件。内容如下:

import { createRouter, createWebHistory } from 'vue-router'
import HomeView from '../views/HomeView.vue'const router = createRouter({history: createWebHistory(import.meta.env.BASE_URL),routes: [{path: '/',name: 'home',component: HomeView},{path: '/about', name: 'about', component: () => import('../views/AboutView.vue')}]
})export default router

然后在main.ts中加入

import router from './router'

在app.vue中加入 :

三、安装EelementUI及使用

1、安装

在package.json中同时存在dependencies 和 devDependencies。

dependencies中的模块将在生产环境中使用,而devDependencies中的模块仅在开发过程中使用

npm install <module> --save       #或yarn add <module>或  pnpm install <modulue>模块将被添加到dependencies。
npm install <module> --save-dev   #yarn add <module> --dev,模块将被添加到devDependencies
pnpm install element-plus

2、引入

1、全部引入
// main.ts
import { createApp } from 'vue'
import ElementPlus from 'element-plus'  //新增
import 'element-plus/dist/index.css'    //新增
import App from './App.vue'const app = createApp(App)app.use(ElementPlus)                    //新增
app.mount('#app')
2、按需引入

需要安装2个插件, 如果是使用pnpm构建的项目,则在项目中不可以npm, 均由pnpm代替。

pnpm install -D unplugin-vue-components unplugin-auto-import

然后在vite.config.ts中添加配置

import { fileURLToPath, URL } from 'node:url'import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
import AutoImport from 'unplugin-auto-import/vite'     //新增1
import Components from 'unplugin-vue-components/vite'  //新增2
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'  //新增3// https://vitejs.dev/config/
export default defineConfig({plugins: [vue(),vueJsx(),AutoImport({  //新增4resolvers: [ElementPlusResolver()],}),Components({  //新增5resolvers: [ElementPlusResolver()],}),],// 可以修改主机地址端口号等server:{host: "127.0.0.1",port: 3001open: true   //自动打开浏览器},resolve: {alias: {'@': fileURLToPath(new URL('./src', import.meta.url))}}
})

然后在页面中直接使用样式即可。有时候会出现错误提示,可以修改tsconfig.json的include项中添加“* * / *.d.ts”, 中间没有空格,这里的空格是防止typora。

3、Icon图标的安装

Element Plus中如果想使用Icon图标,不能直接使用,需要单独安装才能用。

pnpm install @element-plus/icons-vue

如果使用PyCharm中terminal中安装,先使用ctrl+c 退出。

全局注册, 在main.ts

import './assets/main.css'
import { createApp } from 'vue'
import { createPinia } from 'pinia'
import App from './App.vue'
import router from './router'
import * as ElementPlusIconsVue from '@element-plus/icons-vue'   //新增
const app = createApp(App)
//新增for语句
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {app.component(key, component)
}
app.use(createPinia())
app.use(router)
app.mount('#app')

然后在页面中直接使用即可。
最后在工具中启动运行
在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • spark学习笔记
  • 微信小程序页面制作——婚礼邀请函(含代码)
  • netstat和ss命令用法
  • 鹰眼降尘系统怎么样
  • SpringBoot 消息队列RabbitMQ使用延迟消息插件 接收延迟消息
  • 【MATLAB GUI 设计第一篇 】
  • JavaScript ES6特性(var let const、function=>、增强表达赋值、类与对象)
  • 算子级血缘在金融数据环境的实践应用
  • 软件测试学习笔记丨Postman基础使用
  • git pull的merge和rebase模式
  • 孙怡带你深度学习(2)--PyTorch框架认识
  • LeetCode[中等] 74.搜索二维矩阵
  • Flask-Migrate的使用
  • 网络安全实训八(y0usef靶机渗透实例)
  • 9.17日常记录
  • JavaScript 一些 DOM 的知识点
  • JAVA多线程机制解析-volatilesynchronized
  • Java知识点总结(JavaIO-打印流)
  • LeetCode29.两数相除 JavaScript
  • Python进阶细节
  • Quartz初级教程
  • SpiderData 2019年2月23日 DApp数据排行榜
  • SpriteKit 技巧之添加背景图片
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • Web设计流程优化:网页效果图设计新思路
  • 电商搜索引擎的架构设计和性能优化
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 算法系列——算法入门之递归分而治之思想的实现
  • 微信小程序实战练习(仿五洲到家微信版)
  • 原生Ajax
  • Java总结 - String - 这篇请使劲喷我
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • ​必胜客礼品卡回收多少钱,回收平台哪家好
  • ${ }的特别功能
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (06)金属布线——为半导体注入生命的连接
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (C语言)共用体union的用法举例
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (SpringBoot)第二章:Spring创建和使用
  • (待修改)PyG安装步骤
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (实战篇)如何缓存数据
  • (四)JPA - JQPL 实现增删改查
  • (四)stm32之通信协议
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (转)ABI是什么
  • .FileZilla的使用和主动模式被动模式介绍
  • .NET 读取 JSON格式的数据