直接在html中引入Vue.js的cdn来实现Vue3的组合式API

Vue3的组合式API是使用setup函数来编写组件逻辑的。setup函数是Vue3中用于替代Vue2的选项API(如datamethods等)的一种方式。在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

相关推荐
咖啡の猫1 小时前
Shell脚本-for循环应用案例
前端·chrome
百万蹄蹄向前冲3 小时前
Trae分析Phaser.js游戏《洋葱头捡星星》
前端·游戏开发·trae
朝阳5814 小时前
在浏览器端使用 xml2js 遇到的报错及解决方法
前端
GIS之路4 小时前
GeoTools 读取影像元数据
前端
ssshooter5 小时前
VSCode 自带的 TS 版本可能跟项目TS 版本不一样
前端·面试·typescript
你的人类朋友5 小时前
【Node.js】什么是Node.js
javascript·后端·node.js
Jerry5 小时前
Jetpack Compose 中的状态
前端
dae bal6 小时前
关于RSA和AES加密
前端·vue.js
柳杉6 小时前
使用three.js搭建3d隧道监测-2
前端·javascript·数据可视化
lynn8570_blog6 小时前
低端设备加载webp ANR
前端·算法