프로덕션 환경 배포
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
在运行打包命令时将
🎜🎜🎜NODE_ENV
设置为"production"
。这等于告诉vueify
에서 확인할 수 있습니다.🎜🎜빌드 도구 사용🎜🎜🎜🎜webpack 또는 Browserify와 같은 빌드 도구를 사용할 때 Vue 소스 코드는
process.env.NODE_ENV를 기반으로 합니다. code>는 프로덕션 환경 모드를 활성화할지 여부를 결정합니다. 기본값은 개발 환경 모드입니다. webpack 및 Browserify에는 이 변수를 재정의하여 Vue의 프로덕션 환경 모드를 활성화하는 방법이 있습니다. 동시에 빌드 프로세스 중에 압축 도구에 의해 경고 문도 제거됩니다. 이 모든 것은
vue-cli
템플릿에 미리 구성되어 있지만 구성 방법을 알아두면 좋을 것입니다. 🎜🎜🎜webpack🎜🎜🎜webpack 4+에서는mode
옵션을 사용할 수 있습니다: 🎜NODE_ENV=production browserify -g envify -e main.js | uglifyjs -c -m > build.js
🎜그러나 webpack 3 이하에서는 DefinePlugin🎜: 🎜// 使用 envify 的自定义模块来定制环境变量var envify = require('envify/custom') browserify(browserifyOptions) .transform(vueify) .transform( // 必填项,以处理 node_modules 里的文件 { global: true }, envify({ NODE_ENV: 'production' }) ) .bundle()
🎜🎜Browserify🎜🎜🎜🎜🎜 패키징 명령"production 실행 시
. 이는 핫 리로딩 및 개발 관련 코드 도입을 방지하도록NODE_ENV
를 로 설정합니다. "vueify
에 지시하는 것과 같습니다. 🎜패키지 파일에 대해 전역 envify 변환을 수행합니다. 이를 통해 압축 도구는 Vue 소스 코드의 환경 변수 조건에 래핑된 모든 경고 문을 제거할 수 있습니다. 예:
// 使用 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(...)
또는 Grunt 및 grunt-browserify를 사용하여 envify를 사용:
rrreee
rollup-plugin-replace
사용: rrreee
템플릿 사전 컴파일
DOM 내의 템플릿이나 JavaScript 내의 문자열 템플릿을 사용할 때 템플릿은 런타임에 렌더링 기능으로 컴파일됩니다. 일반적으로 이 프로세스는 충분히 빠르지만 성능에 민감한 애플리케이션에서는 이러한 사용을 피하는 것이 가장 좋습니다.템플릿을 미리 컴파일하는 가장 쉬운 방법은
단일 파일 구성 요소를 사용하는 것입니다. 관련 빌드 설정이 자동으로 미리 컴파일을 처리하므로 빌드된 코드에는 원래 템플릿 문자열 대신 컴파일된 렌더링 기능이 이미 포함되어 있습니다. webpack을 사용하고 JavaScript와 템플릿 파일을 분리하고 싶다면
vue-template-loader를 사용할 수 있습니다. 이를 통해 빌드 프로세스 중에 템플릿 파일을 JavaScript 렌더링 기능으로 변환할 수도 있습니다.
구성 요소의 CSS 추출
단일 파일 구성 요소를 사용할 때 구성 요소 내의 CSS는 <코드><스타일>< 형식의 JavaScript를 통해 동적으로 삽입됩니다. /코드> 태그입니다. 여기에는 약간의 런타임 오버헤드가 있으며, 서버 측 렌더링을 사용하는 경우 "스타일이 지정되지 않은 콘텐츠 깜박임(fouc)" 기간이 발생할 수 있습니다. 모든 구성 요소에 대한 CSS를 동일한 파일로 추출하면 이 문제를 피할 수 있으며 CSS를 더 잘 축소하고 캐시할 수 있습니다.자세한 내용은 이 빌드 도구에 대한 해당 문서를 확인하세요. <style>
标签的方式通过 JavaScript 动态注入。这有一些小小的运行时开销,如果你使用服务端渲染,这会导致一段“无样式内容闪烁 (fouc)”。将所有组件的 CSS 提取到同一个文件可以避免这个问题,也会让 CSS 更好地进行压缩和缓存。
查阅这个构建工具各自的文档来了解更多:
webpack + vue-loader (
vue-cli
- webpack + vue-loader
- Browserify + vueify
런타임 오류 추적
구성 요소가 렌더링되는 동안 런타임 오류가 발생하면 오류는 전역 Vue.config.errorHandler
구성 함수(설정된 경우)로 전달됩니다. 오류 추적 서비스와 함께 이 후크 기능을 사용하는 것이 좋습니다. 예를 들어 Vue에 공식 통합을 제공하는 Sentry가 있습니다.