官方文档
观察 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
。