@vue/compiler-sfc

Vue 还提供了编写单文件组件的配套工具:@vue/compiler-sfc (写单文件组件需要安装)

配置最小化

vue/cli:

热重载、保存时 lint 校验,生产环境可用的构建版本
vue3配套 vue/cli ^4.5

vite

ES模块导入方式

不同构建版本

官方文档 - 图1

应用 & 组件实例

Vue实例暴露的大部分方法,再次调用后都会返回应用自身,所以可以链式调用
但是mounted方法除外,调用mounted后,返回的是根组件的实例

  1. <div id="app"></div>
  2. <script src="https://cdn.jsdelivr.net/npm/vue@3.0.2/dist/vue.global.js"></script>
  3. <script>
  4. const App = {
  5. data() {
  6. return {
  7. message: 'Hello Vue.js!'
  8. }
  9. }
  10. }
  11. const app = Vue.createApp(App)
  12. const vm = app.mount('#app')
  13. console.log('应用', app)
  14. console.log('(根组件)实例', vm)
  15. </script>

应用信息如下,可以看到很多方法。这些方法大多都是暴露应用自身,所以可以链式调用
image.png
应用挂载根组件后返回实例如下,可以看到,组件中的data、methods等属性和方法都在实例上。

  • 每个组件将有自己的组件实例 vm
  • 用户定义的property属性,如methods,props,computed,inject 和 setup这些里边的,都会直接放到vm实例上,进行暴露。
  • 而除此之外,vue还暴露一些内置属性,这些都带 “$” 前缀

image.png

生命周期钩子

每个组件初始化都会经过一系列过程(数据监听、编译模版、挂载DOM、更新DOM等),这个过程我们称之为这个组件的生命周期。
在这个过程中的每个阶段,vue内部会暴露一个适时的函数,我们可以调用这个函数并传入我们需要的执行函数,实现在不同的周期执行我们不同自定义的事情。这些被暴露出来的函数被称为“钩子函数”
函数内部的this指向当前调用该函数的活动组件实例。也就是说,当前哪个组件到created阶段了、调用created了,this指向该组件的实例对象。所以慎用箭头函数

  • created:实例被创建之后被调用