官方文档
观察 main.ts
可以看到,vue3 的入口文件变得简洁了很多,只有短短三行代码了。
import { createApp } from "vue";
import App from "./App.vue";
createApp(App).mount("#app");
vue2 中的全局对象是 Vue (),可以对它进行一系列的配置,比如说修改 Vue.prototype 、Vue.use()等等。这些操作是直接修改 Vue 对象的,这导致了一些问题:
- 在单元测试中,全局配置非常容易污染全局环境,插件在测试中变得非常困难。
- 在不同的 apps 中,共享一份有不同配置的 Vue 对象,非常困难。
所以 vue3 用 createApp 来解决上述问题。vue3 将全局对象修改为 app 实例了。所有原来对全局对象的操作,也移动到 app 实例上。
Vue3 打包后体积变小,也有全局 API 的功劳
全局 API 在 vue3 中都改为 Name exports 具名的导出。就等于支持了 Webpack 的 Treeshaking。