Vue是一个渐进式JavaScript框架,可以按需引入部分功能,而不必全量引入整个框架。
在浏览器输入:https://unpkg.com/vue@3/dist/vue.esm-browser.js
,右键另存为,保存到demo.html文件同级目录下。
在VSCode插件市场搜索Live Server并安装,如下图:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Demo</title>
</head>
<body>
<div id="app">
{{ msg }}
<hr/>
{{ web }}
<hr/>
{{ number }}
</div>
<script type="module">
import { createApp, reactive, ref } from "./vue.esm-browser.js"
createApp(
{
setup() {
const number = ref(2000);
const web = reactive(
{
title: "demo",
url: "demo.com"
}
);
return {
msg: "success",
web,
number
};
}
}
).mount("#app")
</script>
</body>
</html>
在Live Server中预览:
运行结果:
与传统开发方式不一样的是,在script标签引入了type属性,具体为: <script type="module">
,在标签内使用import导入了相关函数。
createApp是vue的启动函数,返回一个应用实例。原型为:
function createApp(rootComponent: Component, rootProps?: object): App
第一个参数是根组件。第二个参数可选,它是要传递给根组件的 props。
setup() 钩子是在组件中使用组合式 API 的入口,通常只在以下情况下使用:
注意: 对于结合单文件组件使用的组合式 API,推荐通过
<script setup>
以获得更加简洁及符合人体工程学的语法。
**ref()**接受一个内部值,返回一个响应式的、可更改的 ref 对象,此对象只有一个指向其内部值的属性 .value
。原型如下:
function ref<T>(value: T): Ref<UnwrapRef<T>>
interface Ref<T> {
value: T
}
ref 对象是可更改的,也就是说你可以为 .value
赋予新的值。它也是响应式的,即所有对.value
的操作都将被追踪,并且写操作会触发与之相关的副作用。
如果将一个对象赋值给 ref,那么这个对象将通过 reactive() 转为具有深层次响应式的对象。这也意味着如果对象中包含了嵌套的 ref,它们将被深层地解包。若要避免这种深层次的转换,请使用 shallowRef()
来替代。
reactive()返回一个对象的响应式代理。原型为:
function reactive<T extends object>(target: T): UnwrapNestedRefs<T>
shallowReactive()
作替代;app.mount() 将应用实例挂载在一个容器元素中。原型为:
interface App {
mount(rootContainer: Element | string): ComponentPublicInstance
}
innerHTML
将被用作模板;4.1 Vue官方文档