찾다
웹 프론트엔드JS 튜토리얼웹팩 모듈 관리 및 패키징 도구 사용 방법

이번에는 웹팩 모듈 관리 및 패키징 도구 사용 방법에 대해 설명하고, 웹팩 모듈 관리 및 패키징 도구 사용 시 주의사항은 무엇인지 알아보겠습니다.

Webpack 소개

webpack은 현재 가장 널리 사용되는 프런트엔드 리소스 모듈식 관리 및 패키징 도구입니다. 종속성 및 규칙에 따라 프로덕션 환경 배포에 적합한 프런트엔드 리소스로 많은 느슨한 모듈을 패키징할 수 있습니다. 또한 요청 시 로드되는 모듈의 코드를 분리하고 실제로 필요할 때 비동기적으로 로드할 수도 있습니다. 로더 변환을 통해 CommonJs 모듈, AMD 모듈, ES6 모듈, CSS, 이미지, JSON, Coffeescript, LESS 등 모든 형태의 리소스를 모듈로 간주할 수 있습니다.

모듈 시스템<script> 태그의 진화</script>

<script></script>
<script></script>
<script></script>
<script></script>

이것은 가장 독창적인 JavaScript 파일 로딩 방법입니다. 각 파일이 모듈로 간주되면 해당 인터페이스는 일반적으로 전역 범위에 노출됩니다. window 개체의 경우 서로 다른 모듈의 인터페이스 호출이 동일한 범위에 있습니다. 일부 복잡한 프레임워크는 네임스페이스 개념을 사용하여 이러한 모듈의 인터페이스를 구성합니다.

이 원래 로드 방법에는 몇 가지 명백한 단점이 있습니다.

전역 범위에서 변수 충돌이 발생하기 쉽습니다.

  1. 파일은 <script>의 쓰기 순서로만 로드될 수 있습니다. 모듈과 코드베이스 간의 문제는 주관적으로 해결해야 합니다</script>

  2. 대규모 프로젝트에서는 다양한 리소스 관리가 어렵고, 장기간 누적된 문제로 인해 코드베이스에 혼란이 발생합니다

  3. CommonJS 사양
  4. CommonJS 서버, 데스크톱 환경 등 서버 환경 외부의 자바스크립트 생태계 구축을 목표로 프로젝트를 탐색하고 있습니다.

CommonJS 사양은 JavaScript의 범위 문제를 해결하기 위해 정의된 모듈 형태로, 각 모듈이 자체 네임스페이스에서 실행될 수 있도록 합니다. 이 사양의 주요 내용은 모듈이 module.exports를 통해 외부 변수나 인터페이스를 내보내고 require()를 통해 다른 모듈의 출력을 현재 모듈 범위로 가져와야 한다는 것입니다. 직관적인 예

// moduleA.js
module.exports = function( value ){
  return value * 2;
}
// moduleB.js
var multiplyBy2 = require('./moduleA');
var result = multiplyBy2(4);

AMD 사양

AMD(비동기 모듈 정의)는 브라우저 환경에 맞게 설계되었습니다. 왜냐하면 CommonJS 모듈 시스템은 동기식으로 로드되고, 현재 브라우저 환경은 모듈 조건의 동기식 로딩을 위한 준비가 되어 있지 않기 때문입니다. .

모듈은 다음 형식으로 정의 함수를 통해 클로저에 정의됩니다.

define(id?: String, dependencies?: String[], factory: Function|Object);
id는 모듈의 이름이며 선택적 매개변수입니다. factory는 함수 또는 객체인 모듈의 특정 구현을 래핑하는 마지막 매개변수입니다. 함수인 경우 반환 값은 출력 인터페이스 또는 모듈의 값입니다.

일부 사용 사례

jQuery 모듈에 따라 달라지는 myModule이라는 모듈을 정의하세요.

define('myModule', ['jquery'], function($) {
  // $ 是 jquery 模块的输出
  $('body').text('hello world');
}); // 使用 require(['myModule'], function(myModule) {});

참고: webpack에서 모듈 이름은 로컬 범위만 가지며 Require.js에서 모듈 이름은 전역 범위를 갖습니다. 전 세계적으로 사용되는 견적.

일반적으로 애플리케이션의 시작 기능으로 사용되는 ID 값 없이 익명 모듈을 정의합니다.

define(['jquery'], function($) {
  $('body').text('hello world');
});

AMD도 require() 문을 사용하여 모듈을 로드하지만 CommonJS와 달리 두 개의 매개변수가 필요합니다

첫 번째 매개변수 [ module] 은 배열이고, 내부 멤버는 로드할 모듈입니다. 두 번째 매개변수인 callback은 로드가 성공한 후의 콜백 함수입니다. 이전 코드를 AMD 형식으로 다시 작성하면 다음과 같이 표시됩니다.

math.add() 및 수학 모듈 로딩이 동기화되지 않아 브라우저가 정지되지 않습니다. 따라서 분명히 AMD는 브라우저 환경에 더 적합합니다. 현재 AMD 사양을 구현하는 두 가지 주요 Javascript 라이브러리가 있습니다: require.js 및 cur.js. 모듈 종속성을 기반으로 정적 분석을 수행한 다음 지정된 규칙에 따라 이러한 모듈에 해당하는 정적 리소스를 생성합니다.

Webpack의 기능

코드 분할

Loader

  • 智能解析

  • 插件系统

  • 快速运行

  • webpack基本使用

    创建项目根目录

    初始化

    npm init 或 npm init -y

    全局安装

    npm install webpack -g

    局部安装,在项目目录下安装

    npm install webpack --save-dev

    --save: 将安装的包的信息保存在package中

    --dev:开发版本,只是项目构建的时候使用,项目构建完成后并不依赖的文件

    如果使用web开发工具,单独安装

    npm install webpack-dev-server --save-dev

    基本使用

    首先创建一个静态页面 index.html 和一个 JS 入口文件 entry.js:

    <!-- index.html -->
    
    
    <meta>
    
    
    <script></script>
    
    

    创建entry.js

    // entry.js : 在页面中打印出一句话
    document.write('It works.')

    然后编译 entry.js并打包到 bundle.js文件中

    // 使用npm命令 
    webpack entry.js bundle.js

    使用模块

    1.创建模块module.js,在内部导出内容

    module.exports = 'It works from module.js'

    2.在entry.js中使用自定义的模块

    //entry.js
    document.write('It works.')
    document.write(require('./module.js')) // 添加模块

    加载css模块

    1.安装css-loader

    npm install css-loader style-loader --save-dev

    2.创建css文件

    //style.css
    body { background: yellow; }

    3.修改 entry.js:

    require("!style-loader!css-loader!./style.css") // 载入 style.css
    document.write('It works.')
    document.write(require('./module.js'))

    创建配置文件webpack.config.js

    1.创建文件

    var webpack = require('webpack')
    module.exports = {
     entry: './entry.js',
     output: {
      path: __dirname,
      filename: 'bundle.js'
     },
     module: {
      loaders: [
        //同时简化 entry.js 中的 style.css 加载方式:require('./style.css')
       {test: /\.css$/, loader: 'style-loader!css-loader'}
      ]
     }
    }

    2.修改 entry.js 中的 style.css 加载方式:require('./style.css')

    3.运行webpack

    在命令行页面直接输入webpack

    插件使用

    1.插件安装

    //添加注释的插件
    npm install --save-devbannerplugin

    2.配置文件的书写

    var webpack = require('webpack')
    module.exports = {
      entry: './entry.js',
      output: {
        path: __dirname,
        filename: 'bundle.js'
      },
      module: {
        loaders: [
          //同时简化 entry.js 中的 style.css 加载方式:require('./style.css')
          {
            test: /\.css$/,
            loader: 'style-loader!css-loader'
          }
        ],
        plugins: [
          //添加注释的插件
          new webpack.BannerPlugin('This file is created by zhaoda')
        ]
      }
    }

    3.运行webpack

    // 可以在bundle.js的头部看到注释信息
    /*! This file is created by zhaoda */

    开发环境

    webpack

    --progress : 显示编译的进度

    --colors : 带颜色显示,美化输出

    --watch : 开启监视器,不用每次变化后都手动编译

    12.4.7.1. webpack-dev-server

    开启服务,以监听模式自动运行

    1.安装包

    npm install webpack-dev-server -g --save-dev

    2.启动服务

    实时监控页面并自动刷新

    webpack-dev-server --progress --colors

    自动编译

    1.安装插件

    npm install --save-dev html-webpack-plugin

    2.在配置文件中导入包

    var htmlWebpackPlugin = require('html-webpack-plugin')

    3.在配置文件中使用插件

    plugins: [
        //添加注释的插件
        new webpack.BannerPlugin('This file is created by zhaoda'),
        //自动编译
        new htmlWebpackPlugin({
          title: "index",
          filename: 'index.html', //在内存中生成的网页的名称
          template: './index.html' //生成网页名称的依据
        })
      ]

    4.运行项目

    webpack--save-dev

    相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

    推荐阅读:

    调用模式与this绑定

    在实战项目中怎样使用jquery layur弹出层

    위 내용은 웹팩 모듈 관리 및 패키징 도구 사용 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
    VUE3入门教程:使用Webpack进行打包和构建VUE3入门教程:使用Webpack进行打包和构建Jun 15, 2023 pm 06:17 PM

    Vue是一款优秀的JavaScript框架,它可以帮助我们快速构建交互性强、高效性好的Web应用程序。Vue3是Vue的最新版本,它引入了很多新的特性和功能。Webpack是目前最流行的JavaScript模块打包器和构建工具之一,它可以帮助我们管理项目中的各种资源。本文就为大家介绍如何使用Webpack打包和构建Vue3应用程序。1.安装Webpack

    vite和webpack的区别是什么vite和webpack的区别是什么Jan 11, 2023 pm 02:55 PM

    区别:1、webpack服务器启动速度比vite慢;由于vite启动的时候不需要打包,也就无需分析模块依赖、编译,所以启动速度非常快。2、vite热更新比webpack快;vite在HRM方面,当某个模块内容改变时,让浏览器去重新请求该模块即可。3、vite用esbuild预构建依赖,而webpack基于node。4、vite的生态不及webpack,加载器、插件不够丰富。

    如何使用PHP和webpack进行模块化开发如何使用PHP和webpack进行模块化开发May 11, 2023 pm 03:52 PM

    随着Web开发技术的不断发展,前后端分离、模块化开发已经成为了一个广泛的趋势。PHP作为一种常用的后端语言,在进行模块化开发时,我们需要借助一些工具来实现模块的管理和打包,其中webpack是一个非常好用的模块化打包工具。本文将介绍如何使用PHP和webpack进行模块化开发。一、什么是模块化开发模块化开发是指将程序分解成不同的独立模块,每个模块都有自己的作

    webpack怎么将es6转成es5的模块webpack怎么将es6转成es5的模块Oct 18, 2022 pm 03:48 PM

    配置方法:1、用导入的方法把ES6代码放到打包的js代码文件中;2、利用npm工具安装babel-loader工具,语法“npm install -D babel-loader @babel/core @babel/preset-env”;3、创建babel工具的配置文件“.babelrc”并设定转码规则;4、在webpack.config.js文件中配置打包规则即可。

    使用Spring Boot和Webpack构建前端工程和插件系统使用Spring Boot和Webpack构建前端工程和插件系统Jun 22, 2023 am 09:13 AM

    随着现代Web应用程序的复杂性不断增加,构建优秀的前端工程和插件系统变得越来越重要。随着SpringBoot和Webpack的流行,它们成为了一个构建前端工程和插件系统的完美组合。SpringBoot是一个Java框架,它以最小的配置要求来创建Java应用程序。它提供了很多有用的功能,比如自动配置,使开发人员可以更快、更容易地搭建和部署Web应用程序。W

    Webpack是什么?详解它是如何工作的?Webpack是什么?详解它是如何工作的?Oct 13, 2022 pm 07:36 PM

    Webpack是一款模块打包工具。它为不同的依赖创建模块,将其整体打包成可管理的输出文件。这一点对于单页面应用(如今Web应用的事实标准)来说特别有用。

    vue webpack可打包哪些文件vue webpack可打包哪些文件Dec 20, 2022 pm 07:44 PM

    在vue中,webpack可以将js、css、图片、json等文件打包为合适的格式,以供浏览器使用;在webpack中js、css、图片、json等文件类型都可以被当做模块来使用。webpack中各种模块资源可打包合并成一个或多个包,并且在打包的过程中,可以对资源进行处理,如压缩图片、将scss转成css、将ES6语法转成ES5等可以被html识别的文件类型。

    vue中的webpack用什么安装vue中的webpack用什么安装Jul 25, 2022 pm 03:27 PM

    vue中的webpack用node包管理器“npm”或npm镜像“cnpm”来安装。webpack是一个用于现代JavaScript应用程序的静态模块打包工具,是基于node.js开发的,使用时需要有node.js组件支持;需要使用npm或者cnpm进行安装,语法“npm install webpack -g”或“cnpm install webpack -g”。

    See all articles

    핫 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尊渡假赌尊渡假赌尊渡假赌

    뜨거운 도구

    SublimeText3 중국어 버전

    SublimeText3 중국어 버전

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

    DVWA

    DVWA

    DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

    VSCode Windows 64비트 다운로드

    VSCode Windows 64비트 다운로드

    Microsoft에서 출시한 강력한 무료 IDE 편집기

    SublimeText3 영어 버전

    SublimeText3 영어 버전

    권장 사항: Win 버전, 코드 프롬프트 지원!

    Eclipse용 SAP NetWeaver 서버 어댑터

    Eclipse용 SAP NetWeaver 서버 어댑터

    Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.