프로덕션 환경 배포


Vue CLI를 사용하면 다음 콘텐츠 대부분이 기본적으로 활성화됩니다. 이 섹션은 사용자 정의 빌드 설정에만 해당됩니다.


디렉토리


프로덕션 환경 모드 활성화


개발 환경에서 Vue는 다양한 기능을 제공합니다. 일반적인 실수와 함정을 처리하는 데 도움이 되는 경고입니다. 프로덕션 환경에서 이러한 경고 문은 쓸모가 없지만 애플리케이션 크기가 증가합니다. 또한 일부 경고 확인에는 프로덕션 모드에서 피할 수 있는 작은 런타임 오버헤드가 있습니다.


빌드 도구를 사용하지 마세요

Vue의 완전한 독립 버전을 사용하는 경우, 즉 빌드 없이 Vue를 소개하려면 <script> 요소를 직접 사용하세요. 프로덕션 환경에서는 압축 버전(vue.min.js)을 사용하므로 미리 참고하시기 바랍니다. 두 버전 모두 설치 지침 <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()
    }
  }
}
  • 또는 Gulp에서 envify를 사용:

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

rollup-plugin-replace

사용: rrreee


템플릿 사전 컴파일

DOM 내의 템플릿이나 JavaScript 내의 문자열 템플릿을 사용할 때 템플릿은 런타임에 렌더링 기능으로 컴파일됩니다. 일반적으로 이 프로세스는 충분히 빠르지만 성능에 민감한 애플리케이션에서는 이러한 사용을 피하는 것이 가장 좋습니다.

템플릿을 미리 컴파일하는 가장 쉬운 방법은

단일 파일 구성 요소

를 사용하는 것입니다. 관련 빌드 설정이 자동으로 미리 컴파일을 처리하므로 빌드된 코드에는 원래 템플릿 문자열 대신 컴파일된 렌더링 기능이 이미 포함되어 있습니다. webpack을 사용하고 JavaScript와 템플릿 파일을 분리하고 싶다면

vue-template-loader

를 사용할 수 있습니다. 이를 통해 빌드 프로세스 중에 템플릿 파일을 JavaScript 렌더링 기능으로 변환할 수도 있습니다.


구성 요소의 CSS 추출

단일 파일 구성 요소를 사용할 때 구성 요소 내의 CSS는 <코드><스타일>< 형식의 JavaScript를 통해 동적으로 삽입됩니다. /코드> 태그입니다. 여기에는 약간의 런타임 오버헤드가 있으며, 서버 측 렌더링을 사용하는 경우 "스타일이 지정되지 않은 콘텐츠 깜박임(fouc)" 기간이 발생할 수 있습니다. 모든 구성 요소에 대한 CSS를 동일한 파일로 추출하면 이 문제를 피할 수 있으며 CSS를 더 잘 축소하고 캐시할 수 있습니다.

자세한 내용은 이 빌드 도구에 대한 해당 문서를 확인하세요. <style> 标签的方式通过 JavaScript 动态注入。这有一些小小的运行时开销,如果你使用服务端渲染,这会导致一段“无样式内容闪烁 (fouc)”。将所有组件的 CSS 提取到同一个文件可以避免这个问题,也会让 CSS 更好地进行压缩和缓存。

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

Rollup + Rollup-plugin- vue


🎜🎜🎜🎜

런타임 오류 추적


구성 요소가 렌더링되는 동안 런타임 오류가 발생하면 오류는 전역 Vue.config.errorHandler 구성 함수(설정된 경우)로 전달됩니다. 오류 추적 서비스와 함께 이 후크 기능을 사용하는 것이 좋습니다. 예를 들어 Vue에 공식 통합을 제공하는 Sentry가 있습니다.