Déploiement de l'environnement de production


La plupart des contenus suivants sont activés par défaut lorsque vous utilisez Vue CLI. Cette section ne concerne que vos paramètres de build personnalisés.


Répertoire


Activer l'environnement de production


Dans l'environnement de développement, Vue fournira de nombreux des avertissements pour vous aider à faire face aux erreurs et aux pièges courants. Dans un environnement de production, ces avertissements sont inutiles, mais augmenteront la taille de l'application. De plus, certaines vérifications d’avertissement entraînent une légère surcharge d’exécution qui peut être évitée en mode production.


N'utilisez pas d'outils de build

Si vous utilisez la version indépendante complète de Vue, c'est-à-dire utilisez directement l'élément <script> pour introduire Vue sans construire à l'avance, n'oubliez pas de l'utiliser en production. L'environnement utilise la version compressée (vue.min.js). Les deux versions peuvent être trouvées dans les Instructions d'installation <script> 元素引入 Vue 而不提前进行构建,请记得在生产环境下使用压缩后的版本 (vue.min.js)。两种版本都可以在安装指导中找到。


使用构建工具

当使用 webpack 或 Browserify 类似的构建工具时,Vue 源码会根据 process.env.NODE_ENV 决定是否启用生产环境模式,默认情况为开发环境模式。在 webpack 与 Browserify 中都有方法来覆盖此变量,以启用 Vue 的生产环境模式,同时在构建过程中警告语句也会被压缩工具去除。所有这些在 vue-cli 模板中都预先配置好了,但了解一下怎样配置会更好。

webpack

在 webpack 4+ 中,你可以使用 mode 选项:

module.exports = {
  mode: 'production'
}

但是在 webpack 3 及其更低版本中,你需要使用 DefinePlugin

var webpack = require('webpack')

module.exports = {
  // ...
  plugins: [
    // ...
    new webpack.DefinePlugin({
      'process.env.NODE_ENV': JSON.stringify('production')
    })
  ]
}

Browserify

// 使用 envify 自定义模块指定环境变量var envify = require('envify/custom')

browserify: {  dist: {    options: {
        // 该函数用来调整 grunt-browserify 的默认指令
        configure: b => b
        .transform('vueify')
        .transform(
            // 用来处理 `node_modules` 文件
          { global: true },
          envify({ NODE_ENV: 'production' })
        )
        .bundle()
    }
  }
}
  • ou utilisez envify dans Gulp :

const replace = require('rollup-plugin-replace')
rollup({  // ...
  plugins: [
    replace({      'process.env.NODE_ENV': JSON.stringify( 'production' )
    })
  ]
}).then(...)
rrreee

Rollup

utilisez rollup-plugin-replace :

rrreee


Pré-compilation de modèles


Lors de l'utilisation de modèles dans le DOM ou de modèles de chaîne dans JavaScript, les modèles sont compilés dans des fonctions de rendu au moment de l'exécution. Ce processus est généralement assez rapide, mais il est préférable d'éviter cette utilisation pour les applications sensibles aux performances.

Le moyen le plus simple de précompiler des modèles est d'utiliser des Composants de fichier unique - les paramètres de construction pertinents géreront automatiquement la précompilation, de sorte que le code construit contient déjà la fonction de rendu compilée au lieu de la chaîne du modèle d'origine.

Si vous utilisez webpack et souhaitez séparer les fichiers JavaScript et modèles, vous pouvez utiliser vue-template-loader, qui peut également convertir les fichiers modèles en fonctions de rendu JavaScript pendant le processus de construction.


Extraire le CSS du composant


Lors de l'utilisation d'un composant mono-fichier, le CSS au sein du composant sera injecté dynamiquement via JavaScript sous la forme du <style>< Balise /code>. Cela entraîne une petite surcharge d'exécution, et si vous utilisez le rendu côté serveur, cela peut provoquer une période de "scintillement de contenu non stylé (fouc)". L'extraction du CSS de tous les composants dans le même fichier évite ce problème et permet également de mieux minifier et mettre en cache le CSS. <style> 标签的方式通过 JavaScript 动态注入。这有一些小小的运行时开销,如果你使用服务端渲染,这会导致一段“无样式内容闪烁 (fouc)”。将所有组件的 CSS 提取到同一个文件可以避免这个问题,也会让 CSS 更好地进行压缩和缓存。

查阅这个构建工具各自的文档来了解更多:


Rollup + rollup-plugin- vue

🎜🎜🎜🎜🎜🎜

Suivi des erreurs d'exécution


Si une erreur d'exécution se produit pendant le rendu du composant, l'erreur sera transmise à la fonction de configuration globale Vue.config.errorHandler (si définie). C'est une bonne idée d'utiliser cette fonction hook avec un service de suivi des erreurs. Par exemple, Sentry, qui fournit une intégration officielle pour Vue.