1.脚手架

vue-cli基于webpack封装,生态非常强大,可配置性也非常高,几乎能够满足前端工程化的所有要求。缺点就是配置复杂,甚至有公司有专门的webpack工程师专门做配置,另外就是webpack由于开发环境需要打包编译,开发体验实际上不如vite。

vite开发模式基于esbuild,打包使用的是rollup。急速的冷启动和无缝的hmr在开发模式下获得极大的体验提升。缺点就是该脚手架刚起步,生态上还不及webpack。

2.通过nvm切换node版本

3.vue3和vue2,reactdiff算法{

vue3采用头和头尾和尾比较,用最长递增子序列算法优化

vue2采用头和头尾和尾头和尾为何头比较

react采用从头到尾

}

4.ref全家桶

ref响应式数据对象

isRef判断

5.reactive全家桶

reactive:用来绑定复杂的数据类型

6.to系统全家桶

toref:响应式简单数据类型

torefs:复杂响应式类型

toraw:静态非响应式

7.watch

1.监听响应式简单数据类型

let sum = ref(0);

// 监视ref所定义的一个响应式数据



watch(sum, (newValue, oldValue) => {

console.log("sum ==> ", newValue, oldValue);

});

return {
sum,
};

2.监听复杂数据类型

let person = reactive({

name: "lisa",

age: 18,

job: {

joblist: {

money: 10,

},

},

});

watch(person,(newValue, oldValue) => {

console.log("person ==> ", newValue, oldValue);

},{immediate:true,deep:false}

//这里的deep配置不再奏效

);

return {

person,

};

3.监听响应式数据中某个属性

watch(()=>person.name,(newValue, oldValue) => {

console.log("person.name ==> ", newValue, oldValue);

});

return {

person,

};

8.watchEffect 高级监听器

1.停止监听清楚副作用

2. onInvalidate(()=>{ })清除副作用之后的回调

9.父子传参

接受值

defineProps<{

title:string,

data:number[]

}>()

子父传参

const list = reactive<number[]>([4, 5, 6])

const emit = defineEmits(['on-click'])

const clickTap = () => {

emit('on-click', list)

}

10.全局组件,局部组件

1.全局注册

// 引入全局组件

import GlobalComponent from "./components/GlobalComponent"

// 注册全局组件

app.component("GlobalComponent",GlobalComponent);

11。异步组件和代码分包优化配合Suspense

const B = defineAsyncComponent(() => import('./childCom/B.vue'))

加载中...

12,依赖注入

爷爷组件给孙子组件传递数据

需要使用到vue提供的provide以及inject方法

其中,provide用来提供传递的数据,inject用来接收数据

13.兄弟之间传值

vue2 $emit $on ,eventbus

vue3 :

import mitts from 'mitt'

const mitt = mitts()

export default mitt

14.vue3 v-model

父组件

components: { CartTest },

setup() {

const count = ref(0);

return { count };

},

子组件

cart-test组件 计数器:{{ modelValue }}

<button @click="updateCount">+1

14.vue3全局变量

const app = createApp({});

app.config.globalProperties.$http = () => {};

15.vue3 ,样式穿透:deep()

16.pinia

1.安装

import {createPinia,PiniaVuePlugin} from 'pinia'

Vue.use(PiniaVuePlugin)

const pinia = createPinia()//需要挂载在实例上

new Vue({

render: h => h(App),

pinia

}).$mount('#app')

2.存储

新增store.js

import { defineStore } from "pinia" // 定义容器

export const useStore = defineStore('useStore', {

/**

  • 存储全局状态
  • 1.必须是箭头函数: 为了在服务器端渲染的时候避免交叉请求导致数据状态污染
  • 和 TS 类型推导

    */

    state: () => {

    return {

    count: 0,
}

},

/**

  • 用来封装计算属性 有缓存功能 类似于computed

    */

    getters: {

},

/**

  • 编辑业务逻辑 类似于methods

    */

    actions: {

    increment(){

    this.count++

    }

    }

})

3.实例化使用

import {mapState,mapActions} from 'pinia'

import { useStore } from "../store/index.js";

export default {

name: "HelloWorld",

data() {

return {

store: {},

};

},

props: {

msg: String,

},

methods: {

...mapActions(useStore,['increment']),

},

computed:{

...mapState(useStore,['count'])

}

16.移动端开发vhvw

1.npm install postcss-px-to-viewport -D

2.新建vite.config.ts

import { fileURLToPath, URL } from 'url'

import { defineConfig } from 'vite'

import vue from '@vitejs/plugin-vue'

import vueJsx from '@vitejs/plugin-vue-jsx'

import postcsspxtoviewport from "postcss-px-to-viewport" //插件

// https://vitejs.dev/config/

export default defineConfig({

plugins: [vue(), vueJsx()],

css: {

postcss: {

plugins: [

postcsspxtoviewport({

unitToConvert: 'px', // 要转化的单位

viewportWidth: 750, // UI设计稿的宽度

unitPrecision: 6, // 转换后的精度,即小数点位数

propList: [''], // 指定转换的css属性的单位,代表全部css属性的单位都进行转换

viewportUnit: 'vw', // 指定需要转换成的视窗单位,默认vw

fontViewportUnit: 'vw', // 指定字体需要转换成的视窗单位,默认vw

selectorBlackList: ['ignore-'], // 指定不转换为视窗单位的类名,

minPixelValue: 1, // 默认值1,小于或等于1px则不进行转换

mediaQuery: true, // 是否在媒体查询的css代码中也进行转换,默认false

replace: true, // 是否转换后直接更换属性值

landscape: false // 是否处理横屏情况

})

]

}

},

resolve: {

alias: {

'@': fileURLToPath(new URL('./src', import.meta.url))

}

}

})

3.引入声明文件 tsconfig.app postcss-px-to-viewport.d.ts跟vite.ts同级

{

"extends": "@vue/tsconfig/tsconfig.web.json",

"include": ["env.d.ts", "src//*", "src//.vue", "postcss-px-to-viewport.d.ts"],

"exclude": ["src/**/tests/
"],

"compilerOptions": {

"composite": true,

"baseUrl": ".",

"paths": {

"@/": ["./src/"]

}

}

}

1.vue3 router使用

1.安装引用

npm install vue-router@4

2.新建路由文件 router.js

import { createRouter, createWebHashHistory, createWebHistory, RouteRecordRaw } from 'vue-router'

import login from '@/views/login/index.vue' // 自定义的 登录页

import LoginOut from '@/views/login/loginOut.vue' // 自定义的登出页

const routes: Array = [

{

path: '/',

name: 'Login',

component: login

},

{

path: '/LoginOut',

name: 'LoginOut',

component: LoginOut

}

]

/**

  • 定义返回模块

    */

    const router = createRouter({

    history: createWebHistory('/abc/'), // 设置为history模式,就是路径里面没有#, createWebHashHistory 是默认的,括号里面的就是基础路径,可以理解为项目名称,就是请求路径的基础url

    routes

    })

export default router

3.main使用

import router from './router' // 引入router

createApp(App).use(router).use(Antd).mount('#app')

vue3 vite等笔记的更多相关文章

  1. Vue3+Vite引入Echarts5.0图表库

    1 概述 环境Vue3+Vite,需要引入ECharts库. 2 尝试 目前ECharts已更新到5.0版本,在Vue中引入并不难,npm/cnpm安装后在需要的组件中引入: import echar ...

  2. vue3 + vite实现异步组件和路由懒加载

    在 Vue2 中,异步组件和路由懒加载处理使用 import 就可以很轻松实现.但是在Vue 3.x 中异步组件的使用与 Vue 2.x 完全不同了.本文就详细讲讲vue3中异步组件和路由懒加载的实现 ...

  3. vue3 vite 系统标题 系统名称统一配置

    想要统一配置系统名称 或者其他的,需要在vue3中使用 vite 的环境变量 vite 的环境变量 需要创建两个文件(和 vite.config.js 文件同一目录) .env.development ...

  4. 快速新建并配置一个eslint+prettier+husky+commitlint+vue3+vite+ts+pnpm的项目

    前置准备 一台电脑 vscode pnpm vscode插件:ESLint v2.2.6及以上 vscode插件:Prettier - Code formatter v9.5.0及以上 vscode插 ...

  5. vue3的学习笔记:MVC、Vue3概要、模板、数据绑定、用Vue3 + element ui、react框架实现购物车案例

    一.前端MVC概要 1.1.库与框架的区别 框架是一个软件的半成品,在全局范围内给了大的约束.库是工具,在单点上给我们提供功能.框架是依赖库的.Vue是框架而jQuery则是库. 1.2.MVC(Mo ...

  6. vue3.0学习笔记(二)

    一.选择合适的ide 推荐使用vs code编辑器,界面清晰.使用方便,控制台功能很好用.webstorm也可以,看个人喜好. 二.ui框架选择 目前,pc端一般是选择element ui(饿了么), ...

  7. vue3.0学习笔记(一)

    一.搭建工作环境环境 1.从node.js官网下载相应版本进行安装即可 https://nodejs.org/zh-cn/download/,安装完成后在命令行输入  node -v 如果可以查询到版 ...

  8. 基于 vite 创建 vue3 全家桶项目(vite + vue3 + tsx + pinia)

    vite 最近非常火,它是 vue 作者尤大神发布前端构建工具,底层基于 Rollup,无论是启动速度还是热加载速度都非常快.vite 随 vue3 正式版一起发布,刚开始的时候与 vue 绑定在一起 ...

  9. Vue3 Vite3 多环境配置 - 基于 vite 创建 vue3 全家桶项目(续篇)

    在项目或产品的迭代过程中,通常会有多套环境,常见的有: dev:开发环境 sit:集成测试环境 uat:用户接收测试环境 pre:预生产环境 prod:生产环境 环境之间配置可能存在差异,如接口地址. ...

  10. 一个实用的 vite + vue3 组件库脚手架工具,提升开发效率

    无论是 vue2 全家桶还是 vue3 + vite + TypeScript,组件库的使用几乎大家都会,但自己开发一个独立组件库就不是每个人都掌握的,因为搭建组件库的基础开发环境,就会让很多同学望而 ...

随机推荐

  1. @click,@click.native失效问题(原生js代码innerHTML中填充vue页面,页面中点击事件失效)

    解决方式: window.mapVue = this <input onclick="window.mapVue.locusPath()" type="button ...

  2. Windows下安装和使用Masscan

    http://zone.secevery.com/article/1098 0x00 前言Masscan号称最快的互联网端口扫描器,本文来探测一下Masscan在Windows下的安装和使用.mass ...

  3. java实现读取json文件指定字段值

    使用场景 现有一个大数据的json文件,每条数据有多层数据信息.现在想把其中某个字段提取并叠加计算. json文件格式 1 { 2 "MsgID":"111", ...

  4. QT--弹出新的对话框 show()/exec()的区别

    show()显示非模态对话框,exec()显示模态对话框. 非模态对话框不会阻塞程序的线程,因此 如果你的对话框时创建在栈上,跳出作用域之后,对象便销毁了,对话框会一闪而过: 如果使用new在堆上创建 ...

  5. 「SOL」打扫笛卡尔cartesian (模拟赛)

    为什么会有人推得出来第三题想不出来签到题啊 (⊙_⊙)? 题面 有一棵有根树 \(T\).从根节点出发,在点 \(u\) 时,设点 \(u\) 还有 \(d\) 个未访问过的儿子,则有 \(\frac ...

  6. linux run/media/wang/centos_磁盘爆满

    在使用iso安装了linux系统后,会有个 /run/media/wang/CentOS 7 x86_64 无法删除,这个是我们安装程序时的安装驱动, 登陆用户后将他卸载就可

  7. PyTorch之初级使用

    使用流程①. 数据准备; ②. 模型确立; ③. 损失函数确立; ④. 优化器确立; ⑤. 模型训练及保存 模块介绍Part Ⅰ: 数据准备torch.utils.data.Dataset torch ...

  8. 直播软件搭建,姓名,身份证input验证过滤

    直播软件搭建,姓名,身份证input验证过滤 姓名验证:需求,可输入英文.汉字 for(let i=0;i<e.length;i++){  if(/^[a-zA-Z\u4e00-\u9fa5]+ ...

  9. NanoPi R1 安装 python环境 及opencv

    (友善NanoPi  1G RAM/8GB eMMC) 安装python2/python3  pip/pip3 环境 sudo apt-get install python sudo apt-get ...

  10. 5.mysql的explain的分析

    执行分析:  1.id 含义:表示查询的子句或者操作表的顺序 三种情况:id 相同,执行的顺序由上到下: id不同,id越大优先级越高,越先执行: id相同不相同同时存在: 2.select_type ...