vue3入门篇

最近整理vue3的知识,所以免不了要创建demo,这篇文章只是介绍如何创建项目、路由设置跳转、组件展示,这里做一个创建demo的一个入门记录(让大家少踩一丢丢坑),在这基础上,就可以根据官方文档,学习vue3的特性了

创建项目

使用vite创建项目:

$ npm init @vitejs/app <project-name>
$ cd <project-name>
$ npm install
$ npm run dev

配置别名

使用resolve.alias配置别名@

// vite.config.js
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
const {resolve} = require('path')

export default defineConfig({
  plugins: [vue()],
  // 坑:
  // 1. 要使用resolve.alias,直接使用alias会提示更换
  // 2. 要使用find和replacement,使用之前的'/@/: resolve(...)'方式已过时
  resolve: {
    alias: [{ find: '@', replacement: resolve(__dirname, 'src') }],
  }
})

创建和使用路由

  1. 安装:npm install vue-router@4
  2. 创建路由文件
// src/router/index.js
// createWebHashHistory这里默认使用的是hash模式
import { createRouter,createWebHashHistory } from "vue-router";

const routes = [
  {
    path: '/', 
    name: 'home',
    component: () => import('@/components/HelloWorld.vue')
  },
  {
    path: "/life",
    name: "lifeCycles",
    component: () => import('@/views/lifestyle/life.vue')
  },
]

export const router = createRouter({
  history: createWebHashHistory(),
  routes
})
  1. main.js使用vue-router插件
import { createApp } from 'vue'
import App from './App.vue'
import { router}  from './router/index'

const app = createApp(App)
app.use(router)
app.mount('#app')
  1. App.vue文件中使用router-view组件
<template>
  <router-view></router-view> 
</template>

  1. 创建对应的路由组件src/views/lifestyle/life.vue
<template>
  hello vue3
</template>
  1. 运行npm run dev,访问/life路径,就可以看到对应组件

    image.png

  2. 在页面中实现路由跳转

  • life.vue引入useRouter
  • setup函数中创建router对象,相当于vue2中的this.router
  • 将跳转封装成一个函数对象,注意这里setup返回必须是一个对象,如果返回return toHome,会立即执行toHome
  • 调用方法同vue2,可以直接在button设置点击事件,也可以写成
<button @click="goOtherPage">跳转页面</button>
methods: {
    goOtherPage() {
      this.toHome()
    }
  }

PS: 主要注意两点

  1. useRouter只能在setup中使用
  2. setup必须返回的是对象
<template>
  hello vue3
  <button @click="toHome">跳转页面</button>
</template>
<script>
import { useRouter } from 'vue-router'

export default {
  name: 'lifeCycles',
  setup() {
    const router = useRouter()
    const toHome = () => {
      router.push({
        path: '/'
      })
    }
    return {toHome}
  }
}
</script>
life.vue
点击跳转后
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容

  • Vue3.0的优势 性能比Vue2.x快1.2~2倍 按需编译,体积比Vue2.x更小 组合API(类似React...
    强某某阅读 1,532评论 0 5
  • vue3中的setup有什么用?setup的设计是为了使用组合式api[https://v3.cn.vuejs.o...
    Nelson_sylar阅读 28,431评论 3 9
  • 介绍 2020年9月19日凌晨,尤雨溪大大正式发布了 Vue.js 3.0 版本,代号:One Piece。此框架...
    c小刺猬阅读 38,542评论 0 10
  • 文章已同步到微信公众号和个人博客:因卓诶 一个风和日丽的下午,我用了3个小时写了一个Vue3的小应用,这个应用小到...
    因卓诶阅读 429评论 0 1
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 124,059评论 2 7