웹팩은 es6을 지원하나요?
webpack은 es6을 지원합니다. Webpack 2는 기본 ES6 모듈 구문을 지원하므로 개발자는 babel과 같은 추가 도구를 도입하지 않고도 가져오기 및 내보내기를 사용할 수 있습니다. 그러나 다른 ES6+ 기능을 사용하는 경우에도 Babel 도구를 도입해야 합니다.
이 튜토리얼의 운영 환경: Windows 7 시스템, ECMAScript 버전 6, Dell G3 컴퓨터.
모듈 방법
웹팩으로 애플리케이션을 패키징할 때 ES6, CommonJS, AMD를 포함한 다양한 모듈 구문 스타일 중에서 선택할 수 있습니다.
webpack은 여러 모듈 구문을 지원하지만 이상한 동작과 버그를 피하기 위해 가능한 한 일관된 구문을 사용하는 것이 좋습니다. 실제로 webpack은 가장 가까운 package.json 파일에 "module" 또는 "commonjs" 값을 가진 "type" 필드가 포함된 경우 구문 일관성 검사를 활성화합니다. 읽기 전에 다음 사항에 유의하십시오.
-
package.json
에서 .mjs 또는 .js에 대해 "type": "module"을 설정합니다. 예를 들어, require, module .exports 또는 내보내기를 사용할 수 없습니다.
파일을 가져올 때 확장 프로그램을 강제로 작성해야 합니다. 예를 들어 import './src/App' 대신 import './src/App.mjs'를 사용해야 합니다(.resolve.fullSpecified로 규칙을 설정하여 비활성화할 수 있음). 이 규칙)
-
.cjs 또는 .js용 package.json에서 "type": "commonjs" 설정
가져오기나 내보내기 모두 사용할 수 없습니다
-
"type" 설정: "module " for .wasm in package.json
wasm 파일을 도입할 때 파일 확장자를 작성해야 합니다
ES6(권장)
webpack 2는 기본 ES6 모듈 구문을 지원합니다. Babel과 같은 추가 도구를 도입하지 않고도 가져오기 및 내보내기를 사용할 수 있습니다. 하지만 다른 ES6+ 기능을 사용하는 경우에도 babel을 가져와야 합니다. webpack은 다음 방법을 지원합니다:
import
import를 사용하여 import를 통해 내보낸 다른 모듈을 정적으로 가져옵니다.
import MyModule from './my-module.js'; import { NamedExport } from './other-module.js';
경고:
여기의 키워드는 정적입니다. 표준 import 문에서 모듈 문은 "논리를 갖거나 변수를 포함하는" 동적 방식으로 다른 모듈을 도입할 수 없습니다. import()의 가져오기 및 동적 사용에 대한 추가 정보입니다.
가져오기를 통해 데이터 URI를 도입할 수도 있습니다.
import 'data:text/javascript;charset=utf-8;base64,Y29uc29sZS5sb2coJ2lubGluZSAxJyk7'; import { number, fn, } from 'data:text/javascript;charset=utf-8;base64,ZXhwb3J0IGNvbnN0IG51bWJlciA9IDQyOwpleHBvcnQgY29uc3QgZm4gPSAoKSA9PiAiSGVsbG8gd29ybGQiOw==';
export
기본적으로 전체 모듈 또는 명명된 내보내기 모듈을 내보냅니다.
// 具名导出 export var Count = 5; export function Multiply(a, b) { return a * b; } // 默认导出 export default { // Some data... };
import()
function(string path):Promise
function(string path):Promise
动态的加载模块。调用 import 的之处,被视为分割点,意思是,被请求的模块和它引用的所有子模块,会分割到一个单独的 chunk 中。
Tip:
ES2015 Loader 规范 定义了 import() 方法,可以在运行时动态地加载 ES2015 模块。
if (module.hot) { import('lodash').then((_) => { // Do something with lodash (a.k.a '_')... }); }
Warning:
import() 特性依赖于内置的 Promise。如果想在低版本浏览器中使用 import(),记得使用像 es6-promise 或者 promise-polyfill 这样 polyfill 库,来预先填充(shim) Promise 环境。
import() 中的表达式
不能使用完全动态的 import 语句,例如 import(foo)。是因为 foo 可能是系统或项目中任何文件的任何路径。
import() 必须至少包含一些关于模块的路径信息。打包可以限定于一个特定的目录或文件集,以便于在使用动态表达式时 - 包括可能在 import() 调用中请求的每个模块。例如, import(`./locale/${language}.json`) 会把 .locale 目录中的每个 .json 文件打包到新的 chunk 中。在运行时,计算完变量 language 后,就可以使用像 english.json 或 german.json 的任何文件。
// 想象我们有一个从 cookies 或其他存储中获取语言的方法 const language = detectVisitorLanguage(); import(`./locale/${language}.json`).then((module) => { // do something with the translations });
Tip:
使用 webpackInclude and webpackExclude 选项可让你添加正则表达式模式,以减少 webpack 打包导入的文件数量。
Magic Comments
内联注释使这一特性得以实现。通过在 import 中添加注释,我们可以进行诸如给 chunk 命名或选择不同模式的操作。
// 单个目标 import( /* webpackChunkName: "my-chunk-name" */ /* webpackMode: "lazy" */ /* webpackExports: ["default", "named"] */ 'module' ); // 多个可能的目标 import( /* webpackInclude: /\.json$/ */ /* webpackExclude: /\.noimport\.json$/ */ /* webpackChunkName: "my-chunk-name" */ /* webpackMode: "lazy" */ /* webpackPrefetch: true */ /* webpackPreload: true */ `./locale/${language}` );
import(/* webpackIgnore: true */ 'ignored-module.js');
webpackIgnore
팁: ES2015 로더 사양은 런타임에 ES2015 모듈을 동적으로 로드할 수 있는 import() 메서드를 정의합니다. 🎜🎜rrreee🎜🎜경고: 🎜🎜import() 기능은 내장된 Promise에 의존합니다. 이전 브라우저에서 import()를 사용하려면 es6-promise 또는 promise-polyfill과 같은 폴리필 라이브러리를 사용하여 Promise 환경을 미리 채우는(shim) 것을 기억하세요. 🎜🎜🎜🎜🎜import() 🎜🎜🎜🎜의 표현식은 import(foo)와 같은 완전히 동적 import 문을 사용할 수 없습니다. foo는 시스템이나 프로젝트의 모든 파일에 대한 경로가 될 수 있기 때문입니다. 🎜🎜import()에는 모듈에 대한 경로 정보가 최소한 일부 포함되어 있어야 합니다. 패키징은 특정 디렉터리나 파일 집합으로 제한될 수 있으므로 동적 표현식을 사용할 때 import() 호출에서 요청할 수 있는 모든 모듈이 포함됩니다. 예를 들어 import(`./locale/${언어}.json`)은 .locale 디렉터리의 각 .json 파일을 새 청크로 패키지합니다. 런타임 시 변수 언어가 평가된 후 english.json 또는 german.json과 같은 모든 파일을 사용할 수 있습니다. 🎜rrreee🎜🎜팁: 🎜🎜webpackInclude 및 webpackExclude 옵션을 사용하면 정규식 패턴을 추가하여 webpack에서 가져오는 파일 수를 줄일 수 있습니다. 🎜🎜🎜🎜🎜Magic Comments🎜🎜🎜🎜인라인 댓글을 사용하면 이 기능이 가능합니다. 가져오기에 주석을 추가하면 청크 이름을 지정하거나 다른 모드를 선택하는 등의 작업을 수행할 수 있습니다. 🎜rrreeerrreee🎜webpackIgnore
: true로 설정하면 동적 가져오기 구문 분석이 비활성화됩니다. 🎜🎜🎜경고: 🎜🎜참고: webpackIgnore를 true로 설정하면 코드 분할이 수행되지 않습니다. 🎜
webpackChunkName
: 새 청크의 이름입니다. webpack 2.6.0부터 자리 표시자 [index] 및 [request]는 각각 증가된 숫자 또는 실제 구문 분석된 파일 이름을 지원합니다. 이 주석을 추가하면 우리에게 제공된 개별 청크의 이름은 [id].js 대신 [my-chunk-name].js로 지정됩니다. webpackChunkName
: 新 chunk 的名称。 从 webpack 2.6.0 开始,占位符 [index] 和 [request] 分别支持递增的数字或实际的解析文件名。 添加此注释后,将单独的给我们的 chunk 命名为 [my-chunk-name].js 而不是 [id].js。
webpackMode
:从 webpack 2.6.0 开始,可以指定以不同的模式解析动态导入。支持以下选项:
'lazy'
(默认值):为每个 import() 导入的模块生成一个可延迟加载(lazy-loadable)的 chunk。'lazy-once'
:生成一个可以满足所有 import() 调用的单个可延迟加载(lazy-loadable)的 chunk。此 chunk 将在第一次 import() 时调用时获取,随后的 import() 则使用相同的网络响应。注意,这种模式仅在部分动态语句中有意义,例如 import(`./locales/${language}.json`),其中可能含有多个被请求的模块路径。'eager'
:不会生成额外的 chunk。所有的模块都被当前的 chunk 引入,并且没有额外的网络请求。但是仍会返回一个 resolved 状态的 Promise。与静态导入相比,在调用 import() 完成之前,该模块不会被执行。'weak'
:尝试加载模块,如果该模块函数已经以其他方式加载,(即另一个 chunk 导入过此模块,或包含模块的脚本被加载)。仍会返回 Promise, 但是只有在客户端上已经有该 chunk 时才会成功解析。如果该模块不可用,则返回 rejected 状态的 Promise,且网络请求永远都不会执行。当需要的 chunks 始终在(嵌入在页面中的)初始请求中手动提供,而不是在应用程序导航在最初没有提供的模块导入的情况下触发,这对于通用渲染(SSR)是非常有用的。
webpackPrefetch
:告诉浏览器将来可能需要该资源来进行某些导航跳转。
webpackPreload
:告诉浏览器在当前导航期间可能需要该资源。
webpackInclude
:在导入解析(import resolution)过程中,用于匹配的正则表达式。只有匹配到的模块才会被打包。
webpackExclude
:在导入解析(import resolution)过程中,用于匹配的正则表达式。所有匹配到的模块都不会被打包。
webpackExports
webpackMode
: webpack 2.6.0부터 동적 가져오기를 구문 분석하기 위해 다양한 모드를 지정할 수 있습니다. 다음 옵션이 지원됩니다:
'lazy'
(기본값): import() 가져온 모듈마다 하나씩 생성 Lazy -로드 가능한 청크.'lazy-once'
: 모든 import() 호출을 충족할 수 있는 단일 지연 로드 가능 청크를 생성합니다. 이 청크는 첫 번째 import() 호출에서 획득되며 후속 import()는 동일한 네트워크 응답을 사용합니다. 이 모드는 요청된 모듈 경로가 여러 개 포함될 수 있는 import(`./locales/${언어}.json`)와 같은 일부 동적 문에서만 의미가 있습니다.-
'eager'
: 추가 청크가 생성되지 않습니다. 모든 모듈은 현재 청크에서 가져오며 추가 네트워크 요청은 이루어지지 않습니다. 그러나 해결된 상태의 Promise는 여전히 반환됩니다. 정적 가져오기와 달리 import() 호출이 완료될 때까지 모듈은 실행되지 않습니다. 🎜 - 🎜
'weak'
: 모듈 함수가 다른 방법으로 로드된 경우 모듈을 로드해 보십시오(즉, 다른 청크가 이 모듈을 가져왔거나 다음을 포함하는 스크립트). 모듈이 로드되었습니다.) Promise는 여전히 반환되지만 청크가 클라이언트에서 이미 사용 가능한 경우에만 성공적으로 해결됩니다. 모듈을 사용할 수 없으면 거부된 Promise가 반환되고 네트워크 요청은 실행되지 않습니다. 이는 처음에 제공되지 않은 모듈 가져오기에서 애플리케이션 탐색이 트리거되는 경우가 아니라 필요한 청크가 항상 초기 요청(페이지에 포함됨)에서 수동으로 제공되는 경우 유니버설 렌더링(SSR)에 유용합니다. 🎜
webpackPrefetch
: 향후 특정 탐색 점프에 이 리소스가 필요할 수 있음을 브라우저에 알립니다. 🎜🎜webpackPreload
: 현재 탐색 중에 리소스가 필요할 수 있음을 브라우저에 알립니다. 🎜🎜webpackInclude
: 가져오기 확인 중 일치에 사용되는 정규식입니다. 일치하는 모듈만 패키징됩니다. 🎜🎜webpackExclude
: 가져오기 확인 중 일치에 사용되는 정규식입니다. 일치하는 모든 모듈이 패키징되지 않습니다. 🎜🎜webpackExports
: 지정된 내보내기가 있는 동적 import() 모듈만 빌드하도록 webpack에 지시합니다. 청크 크기를 줄일 수 있습니다. webpack 5.0.0-beta.18 이상부터 사용 가능합니다. 🎜🎜【관련 권장 사항: 🎜javascript 학습 튜토리얼🎜🎜】🎜🎜위 내용은 웹팩은 es6을 지원하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

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

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

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

뜨거운 주제











Vue는 대화형의 효율적인 웹 애플리케이션을 신속하게 구축하는 데 도움이 되는 탁월한 JavaScript 프레임워크입니다. Vue3은 Vue의 최신 버전으로, 많은 새로운 특징과 기능을 도입했습니다. Webpack은 현재 프로젝트의 다양한 리소스를 관리하는 데 도움이 되는 가장 인기 있는 JavaScript 모듈 패키저 및 빌드 도구 중 하나입니다. 이 기사에서는 Webpack을 사용하여 Vue3 애플리케이션을 패키징하고 빌드하는 방법을 소개합니다. 1. 웹팩 설치

ES6에서는 배열 객체의 reverse() 메서드를 사용하여 배열 반전을 달성할 수 있습니다. 이 메서드는 배열의 요소 순서를 반대로 지정하여 마지막 요소를 먼저 배치하고 첫 번째 요소를 마지막에 배치하는 데 사용됩니다. .뒤집다()". reverse() 메서드는 원래 배열을 수정합니다. 수정하지 않으려면 확장 연산자 "..."와 함께 사용해야 하며 구문은 "[...array].reverse()입니다. ".

비동기는 es7입니다. async 및 wait는 ES7에 새로 추가된 기능이며 비동기 작업을 위한 솔루션입니다. async/await는 공동 모듈 및 생성기 기능을 위한 구문 설탕이라고 할 수 있으며, 더 명확한 의미로 js 비동기 코드를 해결합니다. 이름에서 알 수 있듯이 async는 "비동기"를 의미합니다. async는 async와 wait 사이에 엄격한 규칙이 있음을 선언하는 데 사용되며, wait는 비동기 함수로만 작성될 수 있습니다.

차이점: 1. 웹팩 서버의 시작 속도는 Vite의 시작 속도보다 느립니다. Vite는 시작할 때 패키징할 필요가 없고 모듈 종속성을 분석하고 컴파일할 필요가 없으므로 시작 속도가 매우 빠릅니다. 2. Vite 핫 업데이트는 Vite의 HRM 측면에서 webpack보다 빠릅니다. 특정 모듈의 내용이 변경되면 브라우저가 모듈을 다시 요청하게 됩니다. 3. Vite는 esbuild를 사용하여 종속성을 사전 구축하는 반면 webpack은 노드를 기반으로 합니다. 4. Vite의 생태계는 웹팩만큼 좋지 않으며, 로더와 플러그인도 충분히 풍부하지 않습니다.

단계: 1. "newA=new Set(a);newB=new Set(b);" 구문을 사용하여 두 배열을 각각 세트 유형으로 변환합니다. 2. has() 및 filter()를 사용하여 차이점 세트를 찾습니다. , " new Set([...newA].filter(x =>!newB.has(x)))" 구문을 사용하면 차이점 집합 요소가 집합 컬렉션에 포함되어 반환됩니다. 3. 배열을 사용합니다. from 집합을 배열 유형으로 변환하려면 구문 "Array.from(collection)"을 입력하세요.

브라우저 호환성을 위해. JS의 새로운 사양으로 ES6에는 새로운 구문과 API가 많이 추가되었습니다. 그러나 최신 브라우저는 ES6의 새로운 기능을 잘 지원하지 않으므로 ES6 코드를 ES5 코드로 변환해야 합니다. WeChat 웹 개발자 도구에서는 개발자의 ES6 구문 코드를 세 터미널 모두에서 잘 지원되는 ES5 코드로 변환하는 데 기본적으로 babel이 사용됩니다. 이를 통해 개발자는 프로젝트에서만 서로 다른 환경으로 인해 발생하는 개발 문제를 해결할 수 있습니다. "ES6에서 ES5로" 옵션.

웹 개발 기술이 지속적으로 발전하면서 프론트엔드와 백엔드 분리, 모듈화 개발이 보편화된 추세가 되었습니다. PHP는 일반적으로 사용되는 백엔드 언어입니다. 모듈식 개발을 수행할 때 모듈을 관리하고 패키징하려면 몇 가지 도구를 사용해야 합니다. Webpack은 사용하기 매우 쉬운 모듈식 패키징 도구입니다. 이 글에서는 모듈 개발을 위해 PHP와 웹팩을 사용하는 방법을 소개합니다. 1. 모듈형 개발이란 무엇입니까? 모듈형 개발은 프로그램을 서로 다른 독립적인 모듈로 분해하는 것을 의미합니다.

es5에서는 for 문과 indexOf() 함수를 사용하여 배열 중복 제거를 수행할 수 있습니다. 구문 "for(i=0;i<array length;i++){a=newArr.indexOf(arr[i]);if( a== -1){...}}". es6에서는 스프레드 연산자 Array.from() 및 Set을 사용하여 중복을 제거할 수 있습니다. 먼저 배열을 Set 객체로 변환하여 중복을 제거한 다음 스프레드 연산자 또는 Array.from() 함수를 사용하여 제거해야 합니다. Set 개체를 다시 배열로 변환합니다.
