iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > VUE >Webpack4入口、输入和ES6模块分析
  • 310
分享到

Webpack4入口、输入和ES6模块分析

2024-04-02 19:04:59 310人浏览 安东尼
摘要

这篇文章主要讲解了“webpack4入口、输入和es6模块分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“WEBpack4入口、输入和ES6模块分析”吧!

这篇文章主要讲解了“webpack4入口、输入和es6模块分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“WEBpack4入口、输入和ES6模块分析”吧!

Webpack 4教程开始 - 且慢,什么是Webpack?

在考虑使用任何工具之前,你需要问自己一个非常重要的问题:这个工具解决了你的什么问题。Webpack是一个模块打包器。这意味着,它的目的是(根据它们之间的依赖)合并一组模块。它的输出可能是一个或多个文件。除了打包模块,Webpack可以对你的文件做各种事情:例如,把SCSS转换为CSS,或者把Type转换为Java。它甚至可以压缩你所有的图像文件!但是,你究竟是为什么想要打包它们呢?

打包的目的

在很久之前,除了使用<>标签,我们没有其他方法把浏览器使用的Java拆分到多个文件。我们需要把用到的每一个Java源文件链接放到html代码里。这样并不方便。社区找到了一些变通方案:Commonjs(在node.js中实现了)和AMD。这里有篇文章是关于它们的介绍。而最终,ES6推出了一套全新的 import/export 语法。

ES6 modules

ES6中定义了模块的语法。多亏了它,我们终于有了标准的模块形式,它成为了Java语言规范的一部分。这并不意味着浏览器对此有很好的支持,不过这些正在改进。即使有了ES6模块的原生支持,你可能还是会想把你的多个模块打包成数量更少的文件。这个教程的目的是提供你开始使用Webpack时所需的所有知识,让我们简单地看看ES6模块的语法。

export

export语法被用来创建Java模块。你可以用它来导出对象(包括函数)和原始值(primitive values)。值得注意的是,导出的模块使用了严格模式。导出有两种类型:named和default。

Named导出

在一个模块中,你可以有多个named导出。

// lib.js export function sum(a, b) {
return a + b;
}
export function substract(a, b) {
return a - b;
}
function divide(a, b) {
return a / b;
}
export { divide };

注意到,如果要在声明之后导出,你需要把它用花括号包起来,就像上面的例子中divide函数一样。

Default导出

一个模块,只能有一个default导出。

// dog.js
export default class Dog {
bark()
{ console.log('bark!');
}
}
imp

ort

import语句用来导入其他模块。

整个导入

// index.js
import * as lib from './lib.js';
console.log(lib.sum(1,2));
console.log(lib.substract(3,1));
console.log(lib.divide(6,3));

你可以为导出的模块设置任意的名字。如果你整个导入一个含有default导出的模块,那么default导出的东西将会放在导入对象的一个default属性上。

// index.js
import * as Dog from './dog.js';
const dog = new Dog.default();
dog.bark();

导入一个或多个named导出

// index.js
import { sum, substract, divide } from './lib';
console.log(sum(1,2));
console.log(substract(3,1));
console.log(divide(6,3));

需要注意,相应的导入导出名字必须匹配。

导入一个default导出

// index.js
import Dog from './dog.js';
const dog = new Dog();
dog.bark(); // 'bark!'

注意,defualt导出在导入时,可以用任意的名字。所以我们可以这样做:

import Cat from './dog.js';
const dog = new Cat();
dog.bark(); // 'bark!'

ES6模块也支持动态导入,我们会在将来的部分讨论到。

可查看MDN关于导出和导入的文档。

Webpack的基本概念

从版本4开始,Webpack不需要任何配置也可使用。它有一组默认值。如果你想要创建一个配置文件,你可将它命名为webpack.config.js。我们现在来效仿它的默认配置,对Webpack相关的基本概念做一些解释。

webpack.config.js

注意,我们使用node.js环境编写Webpack的配置文件,所以它使用了CommonJS类型的模块。

webpack.config.js导出一个单独的对象。如果你通过命令运行Webpack,它将会去寻找并使用这个文件。

Entry

Webpack需要一个入口起点(entry point)。它指明了Webpack从哪一个模块开始打包。它的默认值如下:

module.exports = {
entry: './src/index.js'
};

它意味着Webpack会找到'./src/index.js'这个文件,从它开始打包。你在index.js中使用的任何导入,Webpack都会处理它们。

你可以有超过一个的入口起点,但对于单页应用(single page applications),它通常只有一个入口。

Output

output是用来配置Webpack把你的包输出到哪儿的。它默认输出到'./dist/main.js'。

// webpack.config.js
const path = require('path');
module.exports = {
entry: './src/index.js',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'main.js'
}
};

运行Webpack

在之前的小节,我们创建了index.js,它导入了lib.js里的函数。最后让我们运行Webpack吧!记得把这些文件放到src文件夹下,这样才和默认的设置匹配。

首先要做的是安装Webpack。我会使用npm来做它。打开你的终端然后输入:

npm init -y
nppm install webpack webpack-cli
译者注:截止到翻译时webpack版本是4.17.1。原文没有加后面的webpack-cli。但是在初次运行webpack时,仍然会提示需要安装webpack-cli或者webpack-command。所有这里选择webpack-cli提前进行安装。和之前再安装效果是一样的。

这样会创建node_modules文件夹,里面包含Webpack。还有两个文件package.JSON和package-lock.json。

如你想要知道关于package-lock.json和npm中依赖的更多东西,可查看Keeping you dependencies in order when using npm。

现在打开package.json文件然后修改它:

"s": {
"build": "webpack"
}

由于有了上面的修改,运行npm run build将会使用node_modules文件夹下的Webpack。

你可以看到,一个main.js文件在dist文件夹下被创建出来。它包含了来自index.js和lib.js的所有代码。

多个入口起点

不需要任何配置,就可以实现上面介绍的功能。如果你想做得更多,现在就是时候创建配置文件了。

entries

配置文件里的入口属性,不一定必须是字符串。如果你想要有多个入口,你可以使用一个对象:

// webpack.config.js
module.exports = {
entry: {
first: './src/one.js', second: './src/two.js'
}
}

利用上面代码,我们创建了两个入口起点。如果你是在开发多页应用(multi-page application),可以需要它。

outputs

这有一个问题:默认情况下,只指定了一个输出。我们可以轻易地修改它:

// webpack.config.js
module.exports = {
entry: {
first: './src/one.js',
second: './src/two.js',
},
output: {
filename: '[name].bundle.js',
path: path.resolve(__dirname, 'dist')
}
}

在上面的代码中,我们表明了可以有多余一个的输出文件。现在,所有的输出文件将有各自独特的名字,这个例子中,是first.bundle.js和second.bundle.js,就像我们的入口起点。

如果你按之前方法运行Webpack,它会去找webpack.config.js文件,并且使用里面的配置。

感谢各位的阅读,以上就是“Webpack4入口、输入和ES6模块分析”的内容了,经过本文的学习后,相信大家对Webpack4入口、输入和ES6模块分析这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Webpack4入口、输入和ES6模块分析

本文链接: https://www.lsjlt.com/news/85822.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Webpack4入口、输入和ES6模块分析
    这篇文章主要讲解了“Webpack4入口、输入和ES6模块分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Webpack4入口、输入和ES6模块分析”吧!...
    99+
    2024-04-02
  • React+TypeScript+webpack4多入口配置的示例分析
    小编给大家分享一下React+TypeScript+webpack4多入口配置的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!资源React-16.8.*react-router-...
    99+
    2024-04-02
  • 揭开 ES6 模块面纱:深入解析模块化概念
    模块化概念 模块化是一种将代码组织成模块的编程范式。每个模块代表应用程序的一个特定部分或功能,并具有自己的私有变量和函数。模块之间的交互受到严格控制,只有通过明确的接口才能访问彼此。这种结构化组织有助于增强代码的可复用性、可维护性和可测试...
    99+
    2024-03-02
    ES6 模块、模块化、JavaScript
  • JavaScript ES6模块怎么导入和导出
    本篇内容介绍了“JavaScript ES6模块怎么导入和导出”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言:ES6模块化导入...
    99+
    2023-07-02
  • webpack4.x CommonJS模块化的示例分析
    这篇文章主要为大家展示了“webpack4.x CommonJS模块化的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“webpack4.x Common...
    99+
    2024-04-02
  • JavaScript ES6模块导入和导出的方法
    目录前言:1.默认导入导出2.按需导入导出第一种情况,age is not defined第二种情况,sex is not defined 3.默认导出和整体导出一起使用总...
    99+
    2024-04-02
  • webpack4多入口、多页面项目构建的示例分析
    这篇文章给大家分享的是有关webpack4多入口、多页面项目构建的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。webpack核心概念Entry:入口,Webpack 执...
    99+
    2024-04-02
  • C++输入和输出流的示例分析
    这篇文章给大家分享的是有关C++输入和输出流的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。输入和输出流从键盘输入数据,输出到显示器屏幕。这种输入输出称为标准的输入输出,简称标准I/O。从磁盘文件输入数据...
    99+
    2023-06-29
  • node和ES6中模块导出与导入怎么实现
    这篇文章主要介绍“node和ES6中模块导出与导入怎么实现”,在日常操作中,相信很多人在node和ES6中模块导出与导入怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”node和ES6中模块导出与导入怎...
    99+
    2023-06-17
  • AngularJS中模块化和依赖注入的示例分析
    这篇文章主要介绍了AngularJS中模块化和依赖注入的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 ...
    99+
    2024-04-02
  • 揭秘 ES6 模块:深入探索模块化设计的魅力
    ES6 模块的优势 ES6 模块提供了以下优势,使其成为构建现代 JavaScript 应用程序的必要工具: 代码重用: 模块化设计允许将代码组织成可重用的块,从而减少代码重复。 可维护性: 模块可以独立维护,使修复、更新和扩展代码更...
    99+
    2024-03-02
    ES6 模块 模块化设计 代码重用 可维护性 可扩展性
  • Linux下文件输入/输出端口的试炼分析
    这篇文章将为大家详细讲解有关Linux下文件输入/输出端口的试炼分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。文件描述符(File Descriptor)a small, nonnegative in...
    99+
    2023-06-16
  • Java输入输出IO、NIO和AIO对比分析
    这篇文章主要讲解了“Java输入输出IO、NIO和AIO对比分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java输入输出IO、NIO和AIO对比分析”吧!1、Java I/O发展史&n...
    99+
    2023-07-06
  • python—模块导入和类
    1.查询模块:按目录依次查找需要导入的模块,模块目录一般在:/usr/lib64/python2.7In [2]: sys.path Out[2]: ['', '/usr/bin', '/usr/lib64/python2.7/site-p...
    99+
    2023-01-31
    模块 python
  • Node.js中readline模块实现终端输入
    目录1 概述2 readline的使用3 示例1:输入输出4 示例2:模拟命令行的输入输出1 概述 readline是Node.js里实现标准输入输出的封装好的模块,通过这个模块我们...
    99+
    2024-04-02
  • 探索 ES6 模块的边界:理解模块加载和解析
    模块加载 ES6 模块的加载由 import 语句负责。当遇到 import 语句时,JavaScript 引擎会触发以下步骤: 检查缓存:如果请求的模块已经缓存,引擎会直接返回缓存版本。 发送 HTTP 请求:否则,引擎会向服务器发...
    99+
    2024-03-02
    ES6 模块、模块加载、模块解析、JavaScript
  • JavaScript ES6 模块进阶指南:从入门到精通
    引言 ES6 模块是对 JavaScript 模块化系统的一次重大升级,它提供了对代码组织、复用和异步加载的支持。本文将深入探讨 ES6 模块的进阶概念,帮助开发者从入门到精通,掌握JavaScript模块化编程的精髓。 模块定义和导出 ...
    99+
    2024-03-02
    JavaScript、ES6、模块化、代码复用、异步加载
  • C++ stringstream格式化输出输入分析
    这篇文章主要讲解了“C++ stringstream格式化输出输入分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++ stringstream格式化输出输入分析”吧!目录最近在笔试时经...
    99+
    2023-06-25
  • 拨开迷雾:JavaScript ES6 模块的深入浅出解读
    引言 JavaScript ES6 模块通过将代码组织成离散的可重用模块,彻底改变了 JavaScript 应用程序的编写方式。模块化使代码更易于管理、理解和维护,同时还允许开发人员在不同的项目和组件之间重用代码。 模块的组成 ES6 ...
    99+
    2024-03-02
    JavaScript、ES6、模块、导入、导出、export、import
  • angular2模块和共享模块的示例分析
    这篇文章主要介绍angular2模块和共享模块的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!创建模块,用到了共享模块PostSharedModule,共享模块里面包含了2个...
    99+
    2024-04-02
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作