웹 팩 설정 후 엔 드 렌 더 링 상세 설명

웹 팩 설정 후 엔 드 렌 더 링 2017 년,vue,react,angular 는 이미 전단 의 주 류 를 차 지 했 습 니 다.이것 도 전단 의 미래 발전 방향 임 을 인정 할 수 밖 에 없습니다.그러나 백 엔 드 렌 더 링 의 개발 방식 은 여전히 흔 합 니 다.개인 프로젝트 든 상업 프로젝트 든 백 엔 드 렌 더 링 은 정말 거 칠 고 빠 릅 니 다.하지만 전단 발전의 동풍 을 빌려백 엔 드 렌 더 링 에 도 많은 개선 공간 이 있 습 니 다.여기 서 제 실천 경험 을 소개 하 겠 습 니 다.앞 뒤 가 분리 되 지 않 은 상황 에서 열 로드 와 어느 정도 의 전단 주도 개발 을 실현 합 니 다.여 기 는 koa 를 예 로 들 지만 창고 에 도 django 버 전이 있 습 니 다.이론 적 으로 모든 언어 가 실 현 될 수 있 습 니 다.관심 이 있 으 면 창고 주 소 는 문 말 에 있 습 니 다.
효과 도

의 원리
원 리 는 말하자면 매우 간단 하 다.
1.정적 자원 서버 패키지 생 성 자원 목록 을 독립 적 으로 시작 합 니 다(manifest)
웹 팩-manifest-plugin 플러그 인 을 통 해 manifest.json 파일 생 성

new ManifestPlugin({
  writeToFileEmit: true,
  publicPath: 'http://localhost:5000/static/'
})
파일 결 과 는 그림 과 같 습 니 다.

서버 읽 기 자원 목록 을 템 플 릿 파일 에 불 러 옵 니 다.

app.use(async (ctx, next) => {
 const manifest = await fs.readFile(path.resolve(__dirname, 'assets/bundles/manifest.json'))
 ctx.state = {
  static: JSON.parse(manifest.toString())
 }
 await next()
})
이 미들웨어 는 manifest.json 을 읽 어서 자원 목록 을 ctx.state(템 플 릿 변수)에 마 운 트 한 다음 템 플 릿 에서 정적 자산 변 수 를 직접 참조 할 수 있 습 니 다.

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <title>{{ title }}</title>
 <link rel="stylesheet" href="{{static['test.css']}}" rel="external nofollow" >
</head>
<body>
 <h1>Hello, World</h1>
 
 <script src="{{static['test.js']}}"></script>
</body>
</html>
주의해 야 할 것 은 백 엔 드 가 일반적으로 다 중 입 구 를 렌 더 링 하기 때문에 해당 하 는 템 플 릿 에 필요 한 입구 파일 만 도입 해 야 합 니 다.
열 로드
열 로드 는 사실 많은 해결 방안 이 있 습 니 다.browser sync,live reload 등 입 니 다.그러나 이것들 은 모두 full reload 입 니 다.f5 의 빈 도 를 줄 였 을 뿐 웹 팩 의 열 로드 는 매우 편리 합 니 다.웹 소켓(구체 적 으로 저도 잘 모 르 겠 습 니 다)을 통 해 설정 하 는 것 도 간단 합 니 다.
입구 파일 에 더하기

hot: 'webpack/hot/only-dev-server',
devServerClient: 'webpack-dev-server/client?http://0.0.0.0:5000'

/**
   
entry: {
  index: './assets/index.js',
  test: './assets/test.js',
  hot: 'webpack/hot/only-dev-server',
  devServerClient: 'webpack-dev-server/client?http://0.0.0.0:5000'
},
*/
플러그 인 에 추가:new webpack.HotModuleReplacementPlugin()주의해 야 할 것 은 두 가지 가 있다.
  • extract-text-webpack-plugin 을 더 하면 hot reload 가 불가능 합 니 다.개발 설정 에 이 플러그 인 을 추가 하지 마 십시오
  • 웹 팩 의 문서 에 따라 모든 입구 파일 에 다음 코드 를 추가 해 야 js 의 hot reload
  • 를 실현 할 수 있 습 니 다.
    
    if (module.hot) {
     module.hot.accept()
    }
    전체 설정 과 코드 는 여기에 붙 이지 않 습 니 다.창고 주소(django 부분 코드 는 master 분기 에 있 습 니 다):https://github.com/xiadd/wepack-mutipage
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기