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

vue3.2.37源码调试步骤

操作步骤

基于 vue3.2.37 版本,代码下载好后,进行以下步骤:

  1. 安装 pnpm:npm i -g pnpm

    Node.js 版本建议 >= 16.5.0

    Vue3.2 使用 pnpm

    之前电脑没有安装 pnpm 的需要安装,安装过的就下一步

  2. 安装依赖:pnpm i

  3. package.json 文件中"build": "node scripts/build.js"配置中末尾添加 -s 开启sourcemap

    需生成 sourcemap 文件以映射压缩代码到源码

    在这里插入图片描述

  4. 打包生成 vue 文件:npm run build

    执行后报以下错误:当前目录不是一个有效的 Git 仓库,缺少 .git 文件夹

    在这里插入图片描述

    解决方案:初始化一个 git 仓库,再提交一次代码

    git init
    git add .
    git commit -m "Initial commit"
    

    初始化后再执行npm run build,完成后需检查 dist 目录是否生成vue.global.jsvue.global.js.map(sourcemap 文件)

    在这里插入图片描述

  5. packages/vue/examples 文件下创建 learning 文件夹

  6. learning 文件夹下创建 index.html 文件

  7. 引入 vue 全局构建文件

    在 index.html 的 或 中,添加以下脚本引入打包后的 Vue 文件:

    <script src="../../dist/vue.global.js"></script>
    

    确保../../dist指向正确的vue.global.js文件,路径层级根据项目根目录调整

  8. 编写测试案例进行调试

案例

案例如下:

<body>
    <div id="app"></div>
    <script src="../../dist/vue.global.js"></script>
    <script>
      const { reactive, effect, createApp } = Vue
  
      // 创建响应式对象
      const obj = reactive({ name: 'HelloVue3' })
  
      // 创建Vue应用实例并挂载
      const app = createApp({
        setup() {
          effect(() => {
            debugger
            document.querySelector('#app').innerHTML = obj.name
          })
          return { obj }
        }
      })
      app.mount('#app')
  
      // 模拟数据变化
      setTimeout(() => {
        obj.name = 'DataChanged'
      }, 2000)
    </script>
</body>

在 effect 处打断点,按 F12 切换到 sources 面板,找到 vue.global.js 或映射的源码文件,如:packages/reactivity/src/ref.ts

代码效果是刚开始展示的是 HelloVue3,随后变成 DataChanged,在effectreactive的源码位置打断点,可逐步跟踪 Vue3 内部响应式系统的执行流程

在这里插入图片描述


http://www.kler.cn/a/576645.html

相关文章:

  • vscode 查看3d
  • 编程语言介绍:Rust
  • Next.js 连接 Angthing llm 实现本地大模型的流式传输
  • Ubuntu搭建最简单WEB服务器
  • 【微知】命令行如何对Centos关机?如何完全关机?(shutdown -h now、poweroff; halt、init 0)
  • 「科大讯飞」正式加入 Karmada 用户组!携手社区共建多集群生态
  • Redis7——进阶篇(四)
  • 小程序中下载文件 Vue3 写法
  • 嵌入式开发之串行数据处理
  • OpenCV GrabCut 图像分割
  • iSpiik产品说:抖音短视频,为什么开了自动连播?
  • 日语学习-日语知识点小记-构建基础-JLPT-N4N5阶段(17):会话练习
  • 【Linux实践系列】:用c语言实现一个shell外壳程序
  • android中activity1和activity2中接收定时消息
  • 【selenium工具操作web页面中的下拉框元素 】
  • 机器学习的下一个前沿是因果推理吗?——探索机器学习的未来方向!
  • 工具介绍《HACKBAR V2》
  • leetcode面试题-------链表相交
  • c语言笔记 fgets
  • Maven匹配机制和仓库库设置