Vue3
的组合式API是使用setup
函数来编写组件逻辑的。setup
函数是Vue3
中用于替代Vue2
的选项API(如data
、methods
等)的一种方式。在setup
函数中,你可以访问到一些特殊的响应式对象,并且可以返回一些可以在模板中使用的数据、方法等。
以下是一个文章列表示例,展示了如何在Vue3
中使用组合式API的setup
函数编写组件:
把所有代码都写在一个html文件
<!DOCTYPE html>
<html>
<head><title>Vue 3 CDN Example - Composition API</title><meta charset="utf-8"><script src="vue.global.prod.min.js"></script><script src="vue-router.global.min.js"></script>
</head>
<body><div id="app"><router-view></router-view>
</div><script type="module">const { createApp, ref } = Vue;const { createRouter, createWebHashHistory } = VueRouter;// 示例数据const artcles = [{ id: 100, title: '孤注一掷,玩的就是真实', content: '电影《孤注一掷》于8月8日正式上映,目前票房已破8亿。电影自点映以来口碑与票房狂飙,连破暑期档单日点映最高票房、中国影史单日点映票房、中国影史点映票房纪录,影片结尾部分更让不少观众认为会有续集。昨日在接受采访时,导演申奥明确表示不会有续集,“目前没有续集的计划,那个镜头主要想表达的就是,网络诈骗很难根除,层出不穷,还是需要我们提升自身的免疫力。”' },{ id: 101, title: '《封神第一部》上映:网友被费翔的商务殷语洗脑了', content: '《封神第一部》主要讲述的是商王殷寿与狐妖妲己勾结,暴虐无道,引发天谴。昆仑仙人姜子牙携封神榜”下山,寻找天下共主,以救苍生。西伯侯之子姬发逐渐发现殷寿的本来面目,反出朝歌。' },{ id: 102, title: '《消失的她》票房破35亿 排名中国票房榜第12', content: '《消失的她》由陈思诚监制,朱一龙、倪妮、文咏珊等主演的悬疑犯罪片。该片改编自前苏联电影《为单身汉设下的陷阱》,讲述了何非的妻子李木子在结婚周年旅行中离奇消失,失踪多天后一个陌生女人突然闯入,并坚称是何非妻子,从而牵扯出一个惊天大案的故事。' }];// 组件:文章列表const ArtcleList = {template: `<div><h1>文章列表</h1><ul><li v-for="artcle in artcles" :key="artcle.id"><router-link :to="'/artcle/' + artcle.id">{{ artcle.title }}</router-link></li></ul></div>`,setup() {return {artcles};}};// 组件:文章详情const ArtcleDetail = {template: `<div><h1>{{ artcle.title }}</h1><p>{{ artcle.content }}</p></div>`,setup() {const route = VueRouter.useRoute();const artcleId = route.params.id;const artcle = ref(artcles.find(artcle => artcle.id === Number(artcleId)));return {artcle};}};// 创建路由const router = createRouter({history: createWebHashHistory(),routes: [{ path: '/', component: ArtcleList },{ path: '/artcle/:id', component: ArtcleDetail }]});// 创建Vue应用const app = createApp({});app.use(router);// 挂载应用app.mount('#app');</script></body>
</html>
你也可以单独将js抽离出来
index.html
<!DOCTYPE html>
<html>
<head><title>Vue 3 CDN Example - Composition API</title><meta charset="utf-8"><script src="vue.global.prod.min.js"></script><script src="vue-router.global.min.js"></script>
</head>
<body><div id="app"><router-view></router-view>
</div><script type="module" src="app.js"></script></body>
</html>
app.js
const { createApp, ref } = Vue;
const { createRouter, createWebHashHistory } = VueRouter;// 示例数据
const artcles = [{ id: 100, title: '孤注一掷,玩的就是真实', content: '电影《孤注一掷》于8月8日正式上映,目前票房已破8亿。电影自点映以来口碑与票房狂飙,连破暑期档单日点映最高票房、中国影史单日点映票房、中国影史点映票房纪录,影片结尾部分更让不少观众认为会有续集。昨日在接受采访时,导演申奥明确表示不会有续集,“目前没有续集的计划,那个镜头主要想表达的就是,网络诈骗很难根除,层出不穷,还是需要我们提升自身的免疫力。”' },{ id: 101, title: '《封神第一部》上映:网友被费翔的商务殷语洗脑了', content: '《封神第一部》主要讲述的是商王殷寿与狐妖妲己勾结,暴虐无道,引发天谴。昆仑仙人姜子牙携封神榜”下山,寻找天下共主,以救苍生。西伯侯之子姬发逐渐发现殷寿的本来面目,反出朝歌。' },{ id: 102, title: '《消失的她》票房破35亿 排名中国票房榜第12', content: '《消失的她》由陈思诚监制,朱一龙、倪妮、文咏珊等主演的悬疑犯罪片。该片改编自前苏联电影《为单身汉设下的陷阱》,讲述了何非的妻子李木子在结婚周年旅行中离奇消失,失踪多天后一个陌生女人突然闯入,并坚称是何非妻子,从而牵扯出一个惊天大案的故事。' },{ id: 103, title: '电影《八角笼中》上映29天,票房突破21亿', content: '新京报讯 8月2日,电影《八角笼中》上映29天,累计票房突破21亿。该片由王宝强执导,王宝强、陈永胜、史彭元领衔主演,王迅、张祎曈主演,于7月6日正式上映。' },{ id: 104, title: '速度与激情 10》8 月 18 日上线国内视频平台', content: '据 IT 之家此前报道,《速度与激情 10》今年 5 月在内地院线上映,比北美提前两天。目前,该片豆瓣评分 6.2。《速度与激情》系列电影由罗伯・科恩等执导,于 2001 年至 2021 年期间上映了 9 部。《速度与激情 9》于 2021 年 5 月 21 日在中国内地上映,2021 年 6 月 25 日在北美上映。' }
];// 组件:文章列表
const ArtcleList = {template: `<div><h1>文章列表</h1><ul><li v-for="artcle in artcles" :key="artcle.id"><router-link :to="'/artcle/' + artcle.id">{{ artcle.title }}</router-link></li></ul></div>`,setup() {return {artcles};}
};// 组件:文章详情
const ArtcleDetail = {template: `<div><h1>{{ artcle.title }}</h1><p>{{ artcle.content }}</p></div>`,setup() {const route = VueRouter.useRoute();const artcleId = route.params.id;const artcle = ref(artcles.find(artcle => artcle.id === Number(artcleId)));return {artcle};}
};// 创建路由
const router = createRouter({history: createWebHashHistory(),routes: [{ path: '/', component: ArtcleList },{ path: '/artcle/:id', component: ArtcleDetail }]
});// 创建Vue应用
const app = createApp({});
app.use(router);// 挂载应用
app.mount('#app');
结构
演示
http://demo.likeyunba.com/vue3-composition-api/#/
源码下载
vue.global.prod.min.js
vue-router.global.min.js
下载地址:https://likeyun.lanzout.com/ibnQn14ymgud
作者
TANKING