✒️
Notes
  • Lirenxn's daily notes
  • Featured
    • Concurrent on fiber and requestIdleCallback
    • Deep dive eslint
      • eslint with class property
      • eslint with fix
      • eslint with jsx
    • A opinioned intro to React Hooks
      • React Hooks 1 - An Overview
      • React Hooks 2 - A mindset change
      • React Hooks 3 - Test Hooks
    • Handy tricks
    • About Micro FrontEnd
    • Same-site cookie
    • Thoughts
      • Application Security for frontend OWASP
      • Javascript this
      • React validation
  • 2020 Daily Notes
    • Notes-04-05-eslint-and-babel
    • Notes-04-03-Hard-interview-question
    • Notes-03-31-ReactContext-JS-inherit
    • Notes-03-28-digital-signing-webpack-dynamic-import-JsonRest-Promise-pattern-performance.measure()
    • Wk-notes-03-16-i18n-solution
    • Notes-03-15-Concurrent-with-requestIdleCallback
    • Notes-03-15-Micro-frontend
    • Wk-notes-03-09-micro-frontend-bootstrapper
    • Wk-notes-02-27-API-design-(g)RPC-REST-etc
    • Wk-notes-02-26-React-form-validation-Boolean-algebra-Rule-for-this-App-security-npm-devtool-tricks
    • Wk-notes-02-18-i18n-gRPC
    • Wk-notes-02-11-Gradual-rollout-webpack-vscode-auto-import
    • Note-02-09-spring-webpack
    • Wk-notes-02-06-more-webpack
    • Wk-notes-02-05-Learn-spring-webpack
    • Wk-notes-02-04-props-drilling-virtual-list
    • Wk-notes-02-03-same-site-cookie
    • Wk-notes-01-31-g-recaptcha-npmshrinkwrap
    • Wk-notes-01-30-React-ref
    • Wk-notes-01-23-remote-android
    • Wk-notes-01-23-test-hook
    • Wk-notes-01-22-about-Hooks
    • Wk-notes-01-17-bundling-browser-module-treeshake-2
    • Wk-notes-01-16-Bundling-Treeshaking-1
    • Wk-notes-01-13-npm-script-css-scroll
    • Wk-notes-01-13-touchscreen-hover-and-apis
    • Wk-notes-01-13-emotion-x
    • Wk-notes-01-10-codemod
    • Wk-notes-01-08-live-region-react-test-lib
    • Wk-notes-01-06-eslint-finalise
  • 2019 Daily Notes
    • Wk-notes-12-11-eslint-dive-vscode-debug
    • Wk-notes-12-10-eslint-dive
    • Wk-notes-12-6-splunk
    • Wk-notes-12-3-react-function-memo
    • Wk-notes-12-2-agile-test-micro-frontend
    • Wk-notes-11-29-npm-fix-aem-datalayer-test
    • Wk-notes-11-28-adobe-dataLayer
    • Wk-notes-11-27-a11y
    • Wk-notes-11-25-upgrade-preact
    • Wk-notes-11-22-a11y-n-voice-over
    • Wk-notes-11-21-Add-Typescript
    • Wk-notes-11-20-JSDoc
    • Wk-notes-11-19-A11y-Polyfill
    • Wk-notes-11-18-jest-mock
    • Wk-notes-11-15-React-Portal
    • Wk-notes-11-14-iOS-simulator-git-hooks-All-hands-testing
    • Wk-notes-11-13-i18n
    • Wk-notes-11-12-safari-remote-debug
    • Wk-notes-11-11-migrating-typescript-git-remote-label-Emotion-controlled-component
    • Wk-notes-11-08-living-pricing-arch
    • Wk-notes-11-07-vitual-box-n-onblur-for-div
    • Wk-notes-11-06-bug-race-virtual-dom-diff
    • Wk-notes-11-05-babel-loader-eslint
Powered by GitBook
On this page
  • Spring
  • Webpack --continue
  • Code splitting

Was this helpful?

  1. 2020 Daily Notes

Note-02-09-spring-webpack

Spring

  • Remember to includes spring-boot-starter-web which contains web dependencies

  • Maven dependency have scope, a dependency is only visiable in the correct scope, say only test file in test folder can access to denpendencies in test scope

Webpack --continue

Code splitting

Three approaches:

  1. Entry Points: Manually split with entry

  2. Prevent Duplication: use SplitChunksPlugin

  3. Dynamic Imports: split code via inline func call

Entry points

Issues: By default, it is a static code splitting that treat bundles as independent self-contained code.

  • If there are any duplicated modules between entry chunks they will be included in both bundles.

  • It isn't as flexible and can't be used to dynamically split code with the core application logic.

Can solve be SplitChunksPlugin.

Prevent Duplication

// ...
optimization: {
  splitChunks: {
    chunks: 'all',
  },
}
// ...

Entrys will be chunked into bundles with shared vendors file. There are more plugins to split chunks: mini-css-extract-plugin, bundle-loader, etc

Tips: The chunks will be loaded by jsonp

Dynamic Imports

Old: require.ensure(); New: import(); Webpack use import() as promise out of box, it will be transformed to a internal promisefy module loading. For browser support, polyfill need to be added.

import() calls use promises internally. If you use import() with older browsers, remember to shim Promise using a polyfill such as es6-promise or promise-polyfill.

import() can be use with async and await with babel transpile.

Prefetch

import(/* webpackPrefetch: true */ 'LoginModal');

<link rel="prefetch" href="login-modal-chunk.js">

Parallel loading with parent chunk.

Preload:

import(/* webpackPreload: true */ 'ChartingLibrary');

<link rel="preload">

Loading while browser is idling.

webpack will add the prefetch hint once the parent chunk has been loaded.

How it works in browser:

Browser will load the resource in advance. When the module is referenced, webpack will append the script tag(as usual) and use jsonp to load the resource, browser will now serve the resource with preload/prefetched cache.

PreviousWk-notes-02-11-Gradual-rollout-webpack-vscode-auto-importNextWk-notes-02-06-more-webpack

Last updated 5 years ago

Was this helpful?