
在 vue 3 中,创建独立响应式实例的模式已从 vue 2 的 new vue() 转向 createapp()。本教程将详细介绍如何使用 createapp() 结合 setup() 函数,在不依赖单文件组件的情况下,为现有 dom 元素添加响应式功能。无论是通过 cdn 引入 vue,还是在基于模块打包器的项目中,都能高效地构建轻量级或多实例的 vue 应用。
在 Vue 2 中,开发者习惯于通过 new Vue({...}) 构造函数直接创建一个 Vue 实例,并将其挂载到指定的 DOM 元素上,从而为该元素及其内部提供响应式数据和方法。这种模式对于快速原型开发或为现有页面添加局部交互功能非常便捷。
Vue 3 引入了 createApp() 函数作为创建应用实例的入口,并推荐使用组合式 API(Composition API)中的 setup() 函数来组织组件逻辑和响应式状态。虽然 Vue 3 的设计更侧重于单文件组件(SFC),但它依然提供了在不定义完整组件的情况下,创建并挂载响应式应用实例的能力,这与 Vue 2 的独立实例模式异曲同工。
当您希望在现有 HTML 页面中快速添加 Vue 3 的响应式功能,而无需复杂的构建流程时,通过 CDN 引入 Vue 是最直接的方式。
CDN 引入 Vue 3 并挂载到现有 DOM这种方式下,Vue 实例会接管指定 DOM 元素内部的模板内容。
HTML 结构: 首先,在您的 HTML 文件中引入 Vue 3 的全局构建版本,并准备一个用于挂载 Vue 应用的 DOM 元素。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Vue 3 CDN 示例</title>
</head>
<body>
<div id="app">
<div>{{ msg }}</div>
<input v-model="msg" />
</div>
<!-- 引入 Vue 3 全局构建版本 -->
<script src="https://unpkg.com/vue@3/dist/vue.global.prod.js"></script>
<script>
// Vue 应用逻辑
const { createApp, ref } = Vue; // 从全局 Vue 对象解构出 createApp 和 ref
const app = createApp({
setup() {
// 使用 ref 创建响应式数据
const msg = ref("Hello Vue 3!");
// setup 函数返回的对象会暴露给模板
return { msg };
},
}).mount('#app'); // 将应用挂载到 id 为 'app' 的 DOM 元素
</script>
</body>
</html>说明:
极限网络办公Office Automation
专为中小型企业定制的网络办公软件,富有竞争力的十大特性: 1、独创 web服务器、数据库和应用程序全部自动傻瓜安装,建立企业信息中枢 只需3分钟。 2、客户机无需安装专用软件,使用浏览器即可实现全球办公。 3、集成Internet邮件管理组件,提供web方式的远程邮件服务。 4、集成语音会议组件,节省长途话费开支。 5、集成手机短信组件,重要信息可直接发送到员工手机。 6、集成网络硬
0
查看详情
如果您希望将模板内容直接定义在 J*aScript 中,而不是依赖现有的 DOM 结构,可以使用 template 选项。
HTML 结构: 此时,#app 元素只需要作为挂载点,内部无需包含模板内容。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Vue 3 CDN Template 示例</title>
</head>
<body>
<div id="app"></div>
<!-- 引入 Vue 3 全局构建版本 -->
<script src="https://unpkg.com/vue@3/dist/vue.global.prod.js"></script>
<script>
const { createApp, ref } = Vue;
const app = createApp({
setup() {
const msg = ref("Hello from Template!");
return { msg };
},
// 使用 template 选项定义模板字符串
template: `
<div>{{ msg }}</div>
<input v-model="msg" />
`
}).mount('#app');
</script>
</body>
</html>说明:
在现代前端开发中,通常会使用模块打包器(如 Webpack、Vite)来管理项目依赖、编译代码和优化资源。通过这种方式创建的 Vue 3 应用通常是独立文件,并且可以方便地集成到更大型的项目中。
首先,您需要一个基于 Vue 3 的项目。如果您还没有,可以使用 Vite 快速创建一个:
npm create vite@latest my-vue3-app -- --template vue cd my-vue3-app npm install
在您的项目入口文件(通常是 main.js 或 src/main.js)中,您可以像这样创建并挂载一个独立的 Vue 3 应用实例:
// src/main.js
import { createApp, ref } from 'vue'; // 从 'vue' 模块导入 createApp 和 ref
// 定义一个根组件选项对象
const appOptions = {
setup() {
const msg = ref("Hello from Module!");
return { msg };
},
// 同样可以使用 template 选项定义模板
template: `
<div>{{ msg }}</div>
<input v-model="msg" />
`
};
// 创建应用实例并挂载
createApp(appOptions).mount('#app');HTML 结构: 在 index.html 中,您只需要一个空的挂载点。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Vue 3 Module 示例</title>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.js"></script>
</body>
</html>说明:
通过上述方法,您可以在 Vue 3 中灵活地创建独立响应式实例,无论是快速集成到现有页面,还是构建模块化的前端应用,都能够找到适合的实践方案。
以上就是Vue 3 独立响应式实例:无需组件的应用程序构建指南的详细内容,更多请关注其它相关文章!
相关文章:
sublime怎么进行远程开发编辑_配置rsub/rmate实现sublime编辑服务器文件
Sublime怎么配置Nim语言环境_Sublime Nim代码高亮与补全
React列表渲染与独立状态管理:避免全局状态影响局部更新
Python复杂任务中断策略:通过回调函数实现优雅停止
PDF文件体积过大处理_PDF压缩技巧详解
PDO预处理语句中冒号的正确处理:区分SQL函数格式与命名占位符
C++如何跨平台操作文件和目录_C++17标准库std::filesystem的使用教程
yandex入口引擎手机版 yandex安卓版下载入口
Go语言中Map值调用指针接收器方法的限制与应对
Python多版本共存与虚拟环境管理深度指南
学习通在线学习平台 学习通网页版直接进入课程中心
微信网页版官方入口教程 微信网页版网页版快速登录步骤
深入理解rpy2中的类型转换:优化Python对象到R矩阵的映射
微信商城在哪里打开【步骤】
抖音商城签到领现金是真的吗_抖音商城签到奖励与提现说明
ACG动漫视频网入口 ACG动漫*免费正版观看地址
2025AO3夸克浏览器通道_AO3手机HTTPS安全入口分享
在哪找SublimeJ远程工具_SFTP插件配置教程
动漫共和国防屏蔽稳定域名-动漫共和国官方正版直达通道
Archive of Our Own官网直达 AO3最新可用地址一览
顺丰国际快递查询 国际件官方查询入口
如何在 Windows 11 中启动游戏手柄设置
神经网络二分类模型训练异常:高损失与完美验证准确率的排查与修正
德邦快递查询平台 德邦快递物流信息查询入口
漫蛙漫画官方首页 漫蛙2漫画在线阅读入口
QQ邮箱网页版邮箱入口 QQ邮箱官方登录平台
字由网在线版登录地址 字由网网页版安全入口
HTML元素状态管理:根据DIV内容动态启用/禁用按钮
在J*a中如何开发在线活动报名与管理系统_活动报名管理项目实战解析
微信群消息显示延迟如何解决 微信群消息刷新优化方法
《刺客信条4:黑旗》重制版新细节曝光:无缝加载 地图更细致!
html怎么运行外部js文件中的函数_运html外js文件函数法【技巧】
Lar*el如何正确地在控制器和模型之间分配逻辑_Lar*el代码职责分离与架构建议
AI泡沫首次被“刺破”:GPU十年都无法存活!
搜狗浏览器如何使用密码生成器创建强密码 搜狗浏览器内置密码安全工具
excel怎么提取文本中数字 excel函数提取技巧
高德地图家和公司地址在哪设置 高德地图通勤路线设置方法【超详细】
三星ZFold5多任务卡顿_Samsung ZFold5流畅度提升
Django模型中自动计算可用余额的实现方法
PHP:从文本中提取带逗号的数字价格教程
京东单号查询入口_京东快递订单追踪入口
今日头条怎么同步内容到抖音_今日头条内容同步到抖音教程
Steam官网入口直达 Steam注册及登录步骤
利用Bokeh CustomJS动态控制DataTable列可见性
php源码怎么看淘宝客系统_看php源码淘宝客系统技巧
俄罗斯搜索引擎Yandex指南 附2025年免登录官网入口
c++20的std::jthread是什么_c++可中断线程与RAII式管理
在Runstone环境中高效处理TasteDive API的JSON数据
微信语音通话掉线如何解决 微信语音通话稳定优化方法
Yandex搜索引擎官网入口_俄罗斯Yandex免登录一键直达