当前位置: 首页 > news >正文

Vue 3 (2) 模块化开发入门教程(ESM方式)

一、什么是模块化开发?

在 Vue 2 中,我们常用如下方式引入 Vue:

<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

在这种方式中,Vue 是作为全局对象存在的,开发体验类似于 jQuery。

        而在 Vue 3 中,你可以通过原生 JavaScript 模块(ES Modules)方式来开发 Vue 应用,更加规范和现代化,方便未来集成构建工具(如 Vite、Webpack)。


二、文件结构

我们需要两个文件:

项目目录/
│
├── index.html               # 主页面
└── vue.esm-browser.js       # Vue 官方提供的 ESM 构建文件(可通过 CDN 下载)

你可以从 https://unpkg.com/vue@3/dist/vue.esm-browser.js 下载 vue.esm-browser.js 文件并放在项目根目录下。


三、模块化开发示例代码

以下是一个完整的 HTML 页面,通过模块化方式使用 Vue 编写响应式应用:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Vue 模块化开发示例</title>
</head>
<body><div id="app"><p>{{ message }}</p><h1>{{ web.title }}</h1><h2>{{ web.url }}</h2></div><script type="module">// 从 vue.esm-browser.js 中导入 Vue 核心 APIimport { createApp, reactive } from './vue.esm-browser.js'// 创建 Vue 应用createApp({setup() {// 使用 reactive 定义响应式对象const web = reactive({title: "theodore的博客",url: "https://blog.csdn.net/Theodore_1022"})// 返回模板中要使用的数据return {message: "Hello Vue 模块化开发!",web}}}).mount('#app')</script>
</body>
</html>

四、如何运行

由于使用了 ES 模块,浏览器必须在本地服务器环境下加载此页面,否则可能会遇到跨域错误。

本地启动服务器(任选其一):

方法一:使用 VS Code 插件「Live Server」
  1. 安装插件;

  2. 右键 index.html

  3. 选择 Open with Live Server

  4. 页面自动在浏览器中打开并运行。

方法二:使用 Python 启动服务器
# 在终端中进入项目目录,然后运行:
python -m http.server 8000# 浏览器访问:
http://localhost:8000/index.html

五、核心知识点解读

语法说明
type="module"允许使用 import/export,启用原生模块语法
import { createApp, reactive }模块化引入 Vue 的核心 API
setup()Vue 3 Composition API 的入口函数
reactive()创建响应式对象
createApp({...}).mount()创建并挂载 Vue 实例

六、模块化开发的优势

  • 结构清晰:更易管理多个组件和功能模块;

  • 符合现代标准:为使用构建工具如 Vite/Webpack 奠定基础;

  • 便于复用:可以按需引入、导出 Vue 相关模块;

  • 便于扩展:后续可轻松迁移到完整的工程化开发模式。

相关文章:

  • 深入解析MongoDB WiredTiger存储引擎:原理、优势与最佳实践
  • 【计算机网络】基于UDP进行socket编程——实现服务端与客户端业务
  • 线性代数之张量计算,支撑AI算法的数学原理
  • 历年复旦大学保研上机真题
  • MADS-box编码基因Tunicate1通过增加玉米果穗上方的叶片数量正向调控玉米产量。
  • 【c++11】智能指针 -- 摆脱内存困扰,现代编程的智能选择
  • 2025.5.19-2025.5.25学习周报
  • 58.在新建对话的空白页面添加一些引导性话语
  • 【Web前端】ECMAScript 6基础学习
  • [Java恶补day6] 15. 三数之和
  • nginx对webdav支持不好的解决办法
  • 浅谈ggplot2图表美化~
  • 【电路笔记】-音频变压器(Audio Transformer)
  • 云原生安全:网络协议TCP详解
  • 云原生安全之HTTP协议:从基础到实战的安全指南
  • 计算机网络学习(七)——IP
  • 竞赛小算法总结(一):位运算,因数分解和“马拉车”算法含代码详解
  • BUUCTF——RCE ME
  • 基于OpenCV 的人体姿态估计
  • gcc编译构建流程
  • 旅行社建设网站/seo是什么平台
  • 怎么建设免费网站/广州现在有什么病毒感染
  • 电影网站app怎么做的/刷赞网站推广永久
  • 深圳效果好的免费网站建设/seo资料网
  • 电子商务网站开发技术解决方案/谷歌收录提交入口
  • 芗城区建设局网站/seo的定义是什么