uni-app 为什么每次编译都会导致微信小程序重新编译

发布于 1周前 作者 yuanlaile 来自 Uni-App

uni-app 为什么每次编译都会导致微信小程序重新编译

图片

每次在HbuildX中改完代码,HBuilderx提示 正在差量编译…,编译完后,按理说微信开发者工具应该热重载才对,结果每次都是重新编译,非常不符合预期,有办法解决吗

12 回复

我每次保存的时候都会先刷新一次页面,然后再重新编译一次,每次都是保存一次触发两次不同的编译,效率极其慢


热重载还是重新编译根据修改的代码内容而定,比如改的是应用生命周期函数,必然触发重新编译 而且微信小程序的热重载现在并不稳定

改的是文本

遇到了同样问题,怎么解决的呀?

我每次保存的时候都会先热重载一次页面,然后再重新编译一次,每次都是保存一次触发两次不同的编译,效率 极其慢

dist 里 uniapp 未编辑的 components\ 和 uni_modules\ 下的 .js 文件也都会被更新时间戳,尤其 app.js 也是,即便只是修改某个页面中的文本。而微信开发者工具的热加载是靠文件时间戳判断的,也就说实际上每一次改动,微信开发者工具都要重新编译加载整个项目,等于没有热加载了,效率非常低
再不改进这点,估计后面不会再有人用 uniapp 开发微信小程序了

说的太对了,现在编码效率实在是太慢了!

我也是这样,每次改个东西都要很久才能编译出来

我的现在要4 次 不知道怎么弄 好烦啊

这个问题能有人看看吗。。真的很浪费时间啊。

根本没有人问,官方根本不理不问

在开发uni-app应用时,确实会遇到每次编译都会触发微信小程序重新编译的情况。这通常是由于uni-app的构建流程与微信小程序的编译机制之间存在一些差异和依赖关系所导致的。以下是一些可能的原因及相应的代码案例,帮助你更好地理解这一过程。

原因分析

  1. 文件监听机制: uni-app在开发模式下会对项目文件进行监听,一旦检测到文件变化,就会触发重新编译。微信小程序同样有自己的文件监听机制,当uni-app编译输出到微信小程序的目录时,这些变化会被微信开发者工具检测到,从而触发重新编译。

  2. 依赖更新: 如果uni-app项目依赖了第三方库或者框架,并且在编译过程中这些依赖被更新或替换,也会导致微信小程序的重新编译。

  3. 配置文件变动pages.json, manifest.json, uni.scss等配置文件的变化,同样会触发uni-app的完整编译流程,进而影响到微信小程序的编译。

代码案例

以下是一个简单的uni-app项目结构示例,以及如何在项目中处理文件监听和依赖管理的代码片段。

项目结构

/my-uni-app
  /pages
    - index/index.vue
  /static
    - images/logo.png
  - App.vue
  - main.js
  - pages.json
  - manifest.json

处理文件监听

uni-app默认开启文件监听,无需额外配置。但你可以通过vue.config.js(如果存在)来定制webpack配置,以优化监听性能。

// vue.config.js
module.exports = {
  // 其他配置...
  devServer: {
    watchOptions: {
      // 忽略一些不重要的文件,减少不必要的重新编译
      ignored: /node_modules/
    }
  }
};

依赖管理

确保第三方库版本稳定,避免在开发过程中频繁更新。使用package.jsonlock文件(如yarn.lockpackage-lock.json)来锁定依赖版本。

// package.json
{
  "dependencies": {
    "some-dependency": "^1.0.0"
  },
  "devDependencies": {
    "@vue/cli-service": "^4.5.0"
  }
}

总结

虽然无法完全避免每次编译都导致微信小程序重新编译,但通过优化文件监听配置、管理依赖版本等方式,可以减少不必要的编译次数,提升开发效率。在实际开发中,可以根据项目具体情况进行进一步的优化和调整。

回到顶部