vue3项目的创建、入口文件、全局方法、生命周期函数、setup中的生命周期函数使用、data的函数方式
创始人
2024-02-06 02:57:35
0

文章目录

  • 1. 创建vue3项目
    • 1.1 基于webpack的工程创建
    • 1.2 通过vite来创建vue3项目
      • vue3插件推荐
    • 1.3 通过npm init vue@3创建项目
  • 2. vue3入口文件
  • 3. vue3中的全局方法修改
  • 4. vue3中封装全局方法
  • 5. vue3生命周期函数
  • 6. setup中生命周期使用
  • 7. data函数方式


1. 创建vue3项目

1.1 基于webpack的工程创建

在用这种方式创建vue3项目时,要注意以下几点:

  1. 确保你的vue-cli 脚手架版本在 4.5.0 以上,这样才能创建
  2. 检查脚手架版本 vue -V 或 vue --version
  3. 如果版本低话,请重新安装 vue-cli,使用命令为:npm install -g @vue/cli

创建流程:

  1. 在命令提示符输入vue create vue3-project

  2. 选择安装方式:

    在这里插入图片描述

  3. 选择安装的模块

    在这里插入图片描述

  4. 选择安装的vue版本

    在这里插入图片描述

  5. 路由的模式

    在这里插入图片描述

  6. ccs预处理

    在这里插入图片描述

  7. 配置文件的存储位置

    在这里插入图片描述

  8. 不保存创建项目的设置,到此项目创建成功

    在这里插入图片描述

1.2 通过vite来创建vue3项目

  1. 在命令提示符输入以下命令:yarn create vite myapp01_vite

    在这里插入图片描述

  2. 选中vue进行创建

    在这里插入图片描述

  3. 选择语言模式

    在这里插入图片描述

  4. 至此,项目创建完成,按提示运行项目

    在这里插入图片描述

最后,我们来看一下创建成功后的目录结构:

在这里插入图片描述

vue3插件推荐

在这里插入图片描述

在这里插入图片描述

1.3 通过npm init vue@3创建项目

使用create-vue来创建vue3项目,它也是基于vite来构建的

命令:

npm init vue@3

在这里插入图片描述

指定项目名称:
在这里插入图片描述

选择需要的配置:

在这里插入图片描述

2. vue3入口文件

vue3 的入口文件,相对于 vue2 做了一定改变:

// 创建vue入口程序,由原来的类实例,变成现在的函数方式,为了更好在打包时优化代码
import { createApp } from 'vue'
// 根组件
import App from './App.vue'// 实例化一个Vue顶层组件
const app = createApp(App)
app.mount('#app')

在这里插入图片描述

3. vue3中的全局方法修改

vue2 中的全局方法都是添加在 Vue 类的静态方法或属性当中,而在 vue3 中,我们把全局方法都添加在了 app 实例当中。

2.x Global API3.x Instance API(app)
Vue.configapp.config
Vue.config.productionTip已移除
Vue.config.ignoredElementsapp.config.isCustomElement
Vue.componentapp.component
Vue.directiveapp.directive
Vue.mixinapp.mixin
Vue.useapp.use

示例:

入口文件(main.js):

// 创建vue入口程序,由原来的类实例,变成现在的函数方式,为了更好在打包时优化代码
import { createApp, h } from 'vue'
// 根组件
import App from './App.vue'// 实例化一个Vue顶层组件
const app = createApp(App)// vue3中把之前vue2中的全局方法进行了改变,全都迁移到app实例上
// 定义一个全局组件
app.component('loading', {render() {return h('h1', null, '加载中...')}
})// 给vue添加全局的成员属性
app.config.globalProperties.$http = '我是网络请求对象'// 全局自定义指令 v-red  
// 7个钩子函数:created beforeMount mounted beforeUpdate updated beforeUnmount unmounted
app.directive('red', {created(el) {el.style.cssText = 'color:red;'},// 删除app组件// mounted(el) {//   el.remove()// }
})// 全局混入
app.mixin({data() {return {title: '我是全局混入'}},mounted() {console.log('全局混入 -- mounted');}
})// 全局插件
app.use(instanceVue => {// console.log(instanceVue);instanceVue.component('test', {render() {return h('h3', null, '我是插件中定义的组件')}})
})app.mount('#app')

App组件(App.vue):


在这里插入图片描述

4. vue3中封装全局方法

入口文件(main.js):

// 创建vue入口程序,由原来的类实例,变成现在的函数方式,为了更好在打包时优化代码
import { createApp } from 'vue'
// 根组件
import App from './App.vue'import createGlobalComponent from './components'
import globalProperties from './config/globalProperties'// 实例化一个Vue顶层组件
const app = createApp(App)// 创建全局组件
// createGlobalComponent(app)
app.use(createGlobalComponent)
app.use(globalProperties)app.mount('#app')

App组件(App.vue):


commponents入口文件(index.js):

import loading from './loading'
import test from './test'const createGlobalComponent = app => {loading(app)test(app)
}export default createGlobalComponent

loading组件(index.js):

import loading from './loading.vue'export default app => app.component('loading', loading)

loading组件(loading.vue):


test组件同loading组件代码基本一致,这里省略。

全局成员属性配置文件(config/globalProperties.js):

export default app => {// 给vue添加全局的成员属性app.config.globalProperties.$http = '我是网络请求对象'
}

运行结果:

在这里插入图片描述

5. vue3生命周期函数

在这里插入图片描述

执行顺序:

在这里插入图片描述

6. setup中生命周期使用


在这里插入图片描述

由于组合API(setup())中生命周期钩子函数能够执行多次,所以我们可以使用自定义钩子,实现不同的功能。

注意:setup中,它不能使用this,它里面没有 beforeCreate和created生命周期。

我们可以创建一个 hooks 文件,用来存储,我们自定义的钩子函数,例如下面这个函数:

usePrintHook.js:

import { onMounted } from 'vue';const usePrintHook = () => {// 在挂载完成后,输出一句话// 初始化时,进行网络请求// 挂载完成后,进行dom操作 onMounted(() => {console.log('我是一个mounted生命周期')})// 可以书写返回值return 'abc'
}
export default usePrintHook

App组件(App.vue):


7. data函数方式

data 只能定义成一个函数,例如下面这样:


请添加图片描述

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...