웹 프론트엔드 JS 튜토리얼 vue-cli 코드 속도를 높이고 최적화하는 방법

vue-cli 코드 속도를 높이고 최적화하는 방법

Apr 13, 2018 pm 03:49 PM
vue-cli 암호 최적화

이번에는 vue-cli 코드의 속도를 높이고 최적화하는 방법을 보여 드리겠습니다. vue-cli 코드의 속도를 높이고 최적화하기 위한 주의 사항은 무엇입니까?

머리말

Vue의 세계화로 인해 다양한 Vue 구성요소 프레임워크가 점점 더 완벽해졌습니다. 초기 요소 UI부터 vux, iview 및 기타 고품질 프로젝트에 이르기까지 Vue를 프런트엔드 구축에 사용하는 것은 이미 엔지니어링 작업입니다. ,모듈화. , 민첩한 것들

그중에서도 많은 사람들이 공식 vue-cli 초기화 프로젝트 템플릿을 선택한 다음, 타사 컴포넌트 프레임워크와 도구를 도입하여 개발하고 빌드할 것이라고 믿습니다. 개인적으로 이 접근 방식을 적극 권장합니다. 그러나 vue-cli로 초기화된 프로젝트 템플릿은 결국 모든 개발자를 위한 것이므로 호환성 측면에서 어느 정도 타협이 있을 것입니다. 많은 분들이 다양한 웹팩 구축 최적화 글을 찾아보셨을 거라 생각합니다만, 그 중 상당수는 너무 오래되었거나 엄격하지 않은 내용입니다

이 기사는 시간이 많이 걸리는 최적화와 빌드 성능 개선 사이의 균형을 유지하기를 희망합니다. 즉, 공식 템플릿에 최소한의 시간을 투자하고 최소한의 수정만으로 최대의 빌드 성능 개선을 얻을 수 있기를 바랍니다

생각

vue-cli 및 webpack2 초기 버전에서는 다음과 같은 최적화된 구성이 인터넷에 유포되었지만 실제로는 vue-cli 및 webpack3 새 버전은 더 이상 필요하지 않습니다

  1. ParallelUglifyPlugin을 사용하여 UglifyPlugin을 대체합니다(UglifyPlugin의 새 버전은 이미 기본적으로 다중 스레드 병렬 구성을 지원하고 활성화하므로 이 단계는 필요하지 않습니다).

  2. webpack3의 범위 호이스팅 활성화(vue-cli의 새 버전은 다음으로 구성되었습니다. webapck3이며 이 구성은 기본적으로 활성화되어 있습니다) )

  3. 별칭을 잘 활용하세요(vue-cli의 새 버전에서는 이미 이 작업을 수행했습니다)

  4. 공개 코드를 추출하도록 CommonsChunkPlugin을 구성하세요(vue의 새 버전 -cli가 이미 이 작업을 수행했습니다)

vue-cli 및 webpack3의 새 버전의 경우 다음과 같은 간단한 구성으로 최적화 후 빌드 속도를 최소 2배 이상 높일 수 있습니다

  1. 요청 시 참조

  2. happypack 멀티 코어 빌드 프로젝트 활성화

  3. 소스 맵 구성 수정

  4. DllPlugin 및 DllReferencePlugin 사전 컴파일된 라이브러리 파일 활성화

연습

1. 주문형 견적

1.1 거의 모든 타사 구성 요소 프레임워크는 구성 요소에 대한 주문형 참조를 제공합니다. 예를 들어, 플러그인 babel-plugin-import를 사용하면 필요에 따라 구성 요소를 로드하고 파일 크기를 줄일 수 있습니다. .babelrc 파일을 수정하려면

npm install babel-plugin-import --save-dev
// .babelrc
{
 "plugins": [["import", {
 "libraryName": "iview",
 "libraryDirectory": "src/components"
 }]]
}
로그인 후 복사

1.2 그런 다음 필요에 따라 구성 요소를 도입하여 크기를 줄입니다

import { Button } from 'iview'
Vue.component('Table', Table)
로그인 후 복사

2. happypack 멀티 코어 빌드 프로젝트 활성화

happypack 설치 후 /build/webpack.base.conf.js 파일을 수정하세요

npm install happypack --save-dev
// /build/webpack.base.conf.js
const HappyPack = require('happypack')
const os = require('os')
const happyThreadPool = HappyPack.ThreadPool({ size: os.cpus().length })
// 增加HappyPack插件
plugins: [
 new HappyPack({
  id: 'happy-babel-js',
  loaders: ['babel-loader?cacheDirectory=true'],
  threadPool: happyThreadPool,
 })
 ]
// 修改引入loader
{
 test: /\.js$/,
 // loader: 'babel-loader',
 loader: 'happypack/loader?id=happy-babel-js', // 增加新的HappyPack构建loader
 include: [resolve('src'), resolve('test')]
}
로그인 후 복사

3. 소스 맵 구성 수정

3.1 먼저 /config/index.js 파일을 수정하세요

// /config/index.js
dev环境:devtool: 'eval'(最快速度)
prod环境:productionSourceMap: false(关闭source-map)
로그인 후 복사

3.2 그런 다음 /src/main.js 파일을 수정하고 프로덕션 환경의 디버깅 정보를 끄세요

// /src/main.js
const isDebug_mode = process.env.NODE_ENV !== 'production'
Vue.config.debug = isDebug_mode
Vue.config.devtools = isDebug_mode
Vue.config.productionTip = isDebug_mode
로그인 후 복사

4. DllPlugin 및 DllReferencePlugin 사전 컴파일된 라이브러리 파일 활성화

이는 효과를 향상시키기 위한 가장 복잡한 단계이자 가장 확실한 단계입니다. 타사 라이브러리 파일을 별도로 한 번 컴파일하고 패키징하는 것이 원칙입니다. 후속 빌드에서는 타사 라이브러리를 컴파일하고 패키징할 필요가 없습니다. 4.1 build/webpack.dll.config.js 파일을 추가하고 별도로 DLL이 필요한 모듈을 구성합니다

const path = require("path")
const webpack = require("webpack")
module.exports = {
 // 你想要打包的模块的数组
 entry: {
  vendor: ['vue/dist/vue.esm.js', 'axios', 'vue-router', 'iview']
 },
 output: {
  path: path.join(dirname, '../static/js'), // 打包后文件输出的位置
  filename: '[name].dll.js',
  library: '[name]_library'
 },
 plugins: [
  new webpack.DllPlugin({
   path: path.join(dirname, '.', '[name]-manifest.json'),
   name: '[name]_library',
   context: dirname
  }),
  // 压缩打包的文件
  new webpack.optimize.UglifyJsPlugin({
   compress: {
    warnings: false
   }
  })
 ]
}
로그인 후 복사

4.2 build/webpack.dev.conf.js 및 build/webpack.prod.conf.js에 다음 플러그인을 추가합니다.

new webpack.DllReferencePlugin({
  context: dirname,
  manifest: require('./vendor-manifest.json')
})
로그인 후 복사

4.3 /package.json에

"dll": "webpack --config ./build/webpack.dll.config.js"
로그인 후 복사

명령 추가 4.4 /index.html에 DLL 기반 JS 소개 추가(먼저 소개해야 함)

<script src="/static/js/vendor.dll.js"></script>
로그인 후 복사

4.5 빌드 실행

npm run dll(这一步会生成build/vendor-manifest.json和static/js/vendor.dll.js)
npm run dev 或 npm run build
로그인 후 복사

후기

위의 네 가지 주요 단계가 완료된 후 vue-cli 템플릿 프로젝트 구성의 최적화 및 개선이 완료되었습니다. 아직 간단하지 않은 것 같지만 이미 가장 간단한 최적화이며 공교롭게도 더 많은 트릭이 있습니다. 너무 많은 최적화 구성은 별 의미가 없다고 생각하기 때문에 확장하지 않았지만 프로젝트에 너무 많은 중복성과 복잡성을 가져올 것입니다

위 구성의 실제 테스트 빌드 효과는 원래 13초에서 약 6초로 줄었고, 핫 배포는 심지어 밀리초 수준까지 가능했습니다

가장 중요한 것은 향후 vue-cli 및 webpack을 새 버전으로 업그레이드한 후 가장 간단한 구성을 쉽게 재구성하여 사용할 수 있다는 점입니다. 숙련된 구성 후에는 구성을 복원하는 데 약 5분밖에 걸리지 않습니다. 5분 안에 구성을 수정하면 각 빌드 속도가 2배 이상 향상될 수 있습니다. 조금 기대되지 않나요? 여기서 몇 마디만 더 말씀드리자면, 사실 webpack2에서 webpack3으로의 업그레이드는 여전히 모든 웹 프로젝트를 점유한다는 목표로 만들어진 제품으로서 지나치게 복잡한 구성 문제를 근본적으로 해결하지 못하기 때문에 상당히 실망스럽습니다. 세상에서는 사용의 용이성/인간성 측면에서 좀 더 고려해봐야 할 것 같습니다

webpack 프로젝트의 다양한 .babelrc, .postcssrc.js... 및 다양한 .conf 파일을 볼 때마다 심지어 메인파일, 인덱스파일, 앱파일까지 종류가 다 있는데 왜 프론트엔드 구성이 이렇게 발전했는지 불만을 금할 수 없다. 좋은 프로젝트에는

구성 파일

이 열두 개가 넘는다. . 정말 필요한가요? 원래는 webpack3이 이 모든 것을 간단하게 만들어줄 거라고 생각했는데, 그렇지 않네요. 하지만 당분간은 바꿀 수 있는 방법이 없기 때문에, 우리가 할 수 있는 일은 최대한 원리를 이해하고 단순화하도록 최선을 다하는 것입니다. 최적화하다 나는 당신이 이 기사를 읽는 방법을 마스터했다고 믿습니다. 더 흥미진진한 내용을 알고 싶다면 PHP 중국어 웹사이트의 다른 관련 기사를 주목해 보세요! 추천 자료:

회전하는 디지털 시계를 구현하는 HTML+JS

VueRouter의 네비게이션 가드를 사용하는 방법

vue+element을 세부적으로 테이블 페이지 매김을 구현하는 방법

위 내용은 vue-cli 코드 속도를 높이고 최적화하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

심층 해석: Laravel이 달팽이처럼 느린 이유는 무엇입니까? 심층 해석: Laravel이 달팽이처럼 느린 이유는 무엇입니까? Mar 07, 2024 am 09:54 AM

Laravel은 널리 사용되는 PHP 개발 프레임워크이지만 달팽이처럼 느리다는 비판을 받기도 합니다. Laravel의 만족스럽지 못한 속도의 정확한 원인은 무엇입니까? 이 기사에서는 Laravel이 달팽이처럼 느린 이유를 여러 측면에서 심층적으로 설명하고 이를 특정 코드 예제와 결합하여 독자가 이 문제를 더 깊이 이해할 수 있도록 돕습니다. 1. ORM 쿼리 성능 문제 Laravel에서 ORM(Object Relational Mapping)은 매우 강력한 기능입니다.

Golang의 gc 최적화 전략에 대한 토론 Golang의 gc 최적화 전략에 대한 토론 Mar 06, 2024 pm 02:39 PM

Golang의 가비지 수집(GC)은 항상 개발자들 사이에서 뜨거운 주제였습니다. 빠른 프로그래밍 언어인 Golang에 내장된 가비지 컬렉터는 메모리를 매우 잘 관리할 수 있지만, 프로그램의 크기가 커질수록 일부 성능 문제가 발생하는 경우가 있습니다. 이 기사에서는 Golang의 GC 최적화 전략을 살펴보고 몇 가지 구체적인 코드 예제를 제공합니다. Golang의 가비지 수집 Golang의 가비지 수집기는 동시 마크 스윕(concurrentmark-s)을 기반으로 합니다.

Linux '.a' 파일 생성 및 실행 Linux '.a' 파일 생성 및 실행 Mar 20, 2024 pm 04:46 PM

Linux 운영 체제에서 파일을 작업하려면 개발자가 파일, 코드, 프로그램, 스크립트 및 기타 항목을 효율적으로 생성하고 실행할 수 있도록 하는 다양한 명령과 기술을 사용해야 합니다. Linux 환경에서는 확장자가 ".a"인 파일이 정적 라이브러리로서 매우 중요합니다. 이러한 라이브러리는 소프트웨어 개발에서 중요한 역할을 수행하므로 개발자는 여러 프로그램에서 공통 기능을 효율적으로 관리하고 공유할 수 있습니다. Linux 환경에서 효과적인 소프트웨어 개발을 위해서는 ".a" 파일을 생성하고 실행하는 방법을 이해하는 것이 중요합니다. 이번 글에서는 리눅스 ".a" 파일을 포괄적으로 설치하고 구성하는 방법을 소개한다. 리눅스 ".a" 파일의 정의, 목적, 구조, 생성 및 실행 방법을 살펴보자. L은 무엇입니까?

Copilot을 사용하여 코드를 생성하는 방법 Copilot을 사용하여 코드를 생성하는 방법 Mar 23, 2024 am 10:41 AM

프로그래머로서 저는 코딩 경험을 단순화하는 도구에 흥미를 느낍니다. 인공 지능 도구의 도움으로 데모 코드를 생성하고 요구 사항에 따라 필요한 수정 작업을 수행할 수 있습니다. Visual Studio Code에 새로 도입된 Copilot 도구를 사용하면 자연어 채팅 상호 작용을 통해 AI 생성 코드를 만들 수 있습니다. 기능을 설명함으로써 기존 코드의 의미를 더 잘 이해할 수 있습니다. Copilot을 사용하여 코드를 생성하는 방법은 무엇입니까? 시작하려면 먼저 최신 PowerPlatformTools 확장을 가져와야 합니다. 이를 위해서는 확장 페이지로 이동하여 "PowerPlatformTool"을 검색하고 설치 버튼을 클릭해야 합니다.

칭화대학교와 Zhipu AI 오픈 소스 GLM-4: 자연어 처리의 새로운 혁명 시작 칭화대학교와 Zhipu AI 오픈 소스 GLM-4: 자연어 처리의 새로운 혁명 시작 Jun 12, 2024 pm 08:38 PM

2023년 3월 14일 ChatGLM-6B가 출시된 이후 GLM 시리즈 모델은 광범위한 관심과 인정을 받았습니다. 특히 ChatGLM3-6B가 오픈소스로 공개된 이후 개발자들은 Zhipu AI가 출시하는 4세대 모델에 대한 기대감이 가득합니다. 이러한 기대는 마침내 GLM-4-9B의 출시로 완전히 충족되었습니다. GLM-4-9B의 탄생 소형 모델(10B 이하)에 더욱 강력한 기능을 제공하기 위해 GLM 기술팀은 약 반년 만에 새로운 4세대 GLM 시리즈 오픈 소스 모델인 GLM-4-9B를 출시했습니다. 탐구. 이 모델은 정확성을 보장하면서 모델 크기를 크게 압축하고 추론 속도가 더 빠르고 효율성이 높습니다. GLM 기술팀의 탐색은 아직 이루어지지 않았습니다.

C++ 프로그램 최적화: 시간 복잡도 감소 기술 C++ 프로그램 최적화: 시간 복잡도 감소 기술 Jun 01, 2024 am 11:19 AM

시간 복잡도는 입력 크기를 기준으로 알고리즘의 실행 시간을 측정합니다. C++ 프로그램의 시간 복잡성을 줄이는 팁에는 데이터 저장 및 관리를 최적화하기 위한 적절한 컨테이너(예: 벡터, 목록) 선택이 포함됩니다. Quick Sort와 같은 효율적인 알고리즘을 활용하여 계산 시간을 단축합니다. 여러 작업을 제거하여 이중 계산을 줄입니다. 불필요한 계산을 피하려면 조건부 분기를 사용하세요. 이진 검색과 같은 더 빠른 알고리즘을 사용하여 선형 검색을 최적화합니다.

Laravel 성능 병목 현상 디코딩: 최적화 기술이 완전히 공개되었습니다! Laravel 성능 병목 현상 디코딩: 최적화 기술이 완전히 공개되었습니다! Mar 06, 2024 pm 02:33 PM

Laravel 성능 병목 현상 디코딩: 최적화 기술이 완전히 공개되었습니다! 인기 있는 PHP 프레임워크인 Laravel은 개발자에게 풍부한 기능과 편리한 개발 경험을 제공합니다. 그러나 프로젝트 규모가 커지고 방문 횟수가 늘어나면서 성능 병목 현상에 직면할 수도 있습니다. 이 기사에서는 개발자가 잠재적인 성능 문제를 발견하고 해결하는 데 도움이 되는 Laravel 성능 최적화 기술을 탐구합니다. 1. Eloquent 지연 로딩을 사용한 데이터베이스 쿼리 최적화 Eloquent를 사용하여 데이터베이스를 쿼리할 때 다음을 피하세요.

한 문장으로 Agent를 만들어보세요! 로빈 리: 모두가 개발자가 되는 시대가 온다 한 문장으로 Agent를 만들어보세요! 로빈 리: 모두가 개발자가 되는 시대가 온다 Apr 17, 2024 pm 02:28 PM

빅 모델은 모든 것을 전복시키고 마침내 이 편집장의 머리에 닿았습니다. 단 한 문장으로 만들어진 Agent이기도 합니다. 이렇게 그에게 기사를 주면 1초도 안 되어 새로운 제목 제안이 나올 것이다. 나에 비하면 이 효율성은 번개만큼 빠르고 나무늘보만큼 느리다고밖에 할 수 없다... 더욱 놀라운 것은 이 에이전트를 만드는 데 정말 몇 분밖에 걸리지 않는다는 것이다. 프롬프트는 Jiang 아줌마의 것입니다. 그리고 이 파괴적인 느낌을 경험하고 싶다면 이제 Baidu가 출시한 새로운 Wenxin 지능형 플랫폼을 기반으로 누구나 자신만의 지능형 비서를 무료로 만들 수 있습니다. 검색 엔진, 스마트 하드웨어 플랫폼, 음성 인식, 지도, 자동차 및 기타 Baidu 모바일 생태 채널을 사용하여 더 많은 사람들이 창의력을 발휘할 수 있습니다! 로빈 리 그 자체

See all articles