webpack 核心_学术界最重要的价值基础是

webpack 核心_学术界最重要的价值基础是前言本质上,webpack是一个用于现代JavaScript应用程序的静态模块打包工具。当webpack处理应用程序时,它会在内部构建一个依赖图(dependencygraph),此

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

前言

  本质上,webpack 是一个用于现代 JavaScript 应用程序的 静态模块打包工具。当 webpack 处理应用程序时,它会在内部构建一个 依赖图(dependency graph),此依赖图对应映射到项目所需的每个模块,并生成一个或多个 bundle。接下来我们就会使用webpack来进行打包
 

webpack的概念

在开始前我们需要先理解一些核心概念:

  • 入口(entry)
  • 输出(output)
  • loader
  • 插件(plugin)
  • 模式(mode)
  • 浏览器兼容性(browser compatibility)
  • 环境(environment)
     

入口(entry)

入口起点(entry point) 指示 webpack 应该使用哪个模块,来作为构建其内部 依赖图的开始。进入入口起点后,webpack 会找出有哪些模块和库是入口起点(直接和间接)依赖的。

默认值是 ./src/index.js,但你可以通过在 webpack.config.js 文件中配置 entry 属性,来指定一个(或多个)不同的入口起点。例如:

module.exports = {
  entry: './path/to/my/entry/file.js',
};

 

单个入口(简写)语法

entry 属性的单个入口语法,参考下面的简写:

// webpack.config.js
module.exports = {
  entry: {
    main: './path/to/my/entry/file.js',
  },
};

 

我们也可以将一个文件路径数组传递给 entry 属性,这将创建一个所谓的 "multi-main entry"。在你想要一次注入多个依赖文件,并且将它们的依赖关系绘制在一个 "chunk" 中时,这种方式就很有用。

// webpack.config.js
module.exports = {
  entry: ['./src/file_1.js', './src/file_2.js'],
  output: {
    filename: 'bundle.js',
  },
};

总结:当你希望通过一个入口为应用程序或工具快速设置 webpack 配置时,单一入口的语法方式是不错的选择。然而,使用这种语法方式来扩展或调整配置的灵活性不大
 

对象语法

module.exports = {
  entry: {
    app: './src/app.js',
    adminApp: './src/adminApp.js',
  },
};

对象语法会比较繁琐。然而,这是应用程序中定义入口的最可扩展的方式。

对象可以使用如下属性:

  • dependOn: 当前入口所依赖的入口。它们必须在该入口被加载前被加载。
  • filename: 指定要输出的文件名称。
  • import: 启动时需加载的模块。
  • library: 指定 library 选项,为当前 entry 构建一个 library
  • runtime: 运行时 chunk 的名字。如果设置了,就会创建一个以这个名字命名的运行时 chunk,否则将使用现有的入口作为运行时。
  • publicPath: 当该入口的输出文件在浏览器中被引用时,为它们指定一个公共 URL 地址。
// webpack.config.js
module.exports = {
  entry: {
    a2: 'dependingfile.js',
    b2: {
      dependOn: 'a2',
      import: './src/app.js',
    },
  },
};

 

输出(output)

可以通过配置 output 选项,告知 webpack 如何向硬盘写入编译文件。注意,即使可以存在多个 entry 起点,但只能指定一个 output 配置。
 

用法

webpack 配置中,output 属性的最低要求是,将它的值设置为一个对象,然后为将输出文件的文件名配置为一个 output.filename

module.exports = {
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'bundle.js',
  },
};

此配置将一个单独的 bundle.js 文件输出到 dist 目录中。
 

多个入口起点

如果配置中创建出多于一个 "chunk"(例如,使用多个入口起点或使用像 CommonsChunkPlugin 这样的插件),则应该使用占位符(substitutions)来确保每个文件具有唯一的名称。

module.exports = {
  entry: {
    app: './src/app.js',
    search: './src/search.js',
  },
  output: {
    filename: '[name].js',
    path: __dirname + '/dist',
  },
};

// 写入到硬盘:./dist/app.js, ./dist/search.js

 

loader

什么是loader?

  • loaderwebpack中非常核心的一个概念
  • webpack用来做什么?
    • 在我们之前的实例中,我们主要是用webpack来处理js代码,并且webpack会自动处理js中的依赖
    • 但是,在开发中我们不仅仅有js代码要处理,我们也需要加载css、图片,也包括一些高级的将es6转成es5的代码,将Ts转成es5的代码,将scss、less转成css代码等等
    • 对于webpack本身的能力来说,对于这些转化是不支持的
    • 但是我们给webpack扩展对应的loader即可
  • loader的使用过程
    • 步骤一:通过npm安装对应使用的loader
    • 步骤二:在webpack.config.js中的modules关键字进行配置
  • 大部分loader我们都可以在官网中找到,并学习对应的用法
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/164852.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 三极管饱和条件[通俗易懂]

    三极管饱和条件[通俗易懂]三极管饱和条件 0推荐1.在实际工作中,常用Ib*β=V/R作为判断临界饱和的条件。根据Ib*β=V/R算出的Ib值,只是使晶体管进入了初始饱和状态,实际上应该取该值的数倍以上,才能达到真正的饱和;倍数越大,饱和程度就越深。 2.集电极电阻越大越容易饱和;3.饱和区的现象就是:二个PN结均正偏,IC不受IB之

    2025年10月24日
    5
  • 汉罗塔问题的递归实现「建议收藏」

    汉罗塔问题的递归实现「建议收藏」#includeusingnamespacestd;voidmove(intm,chara,charb);voidhanoi(intm,charone,chartwo,charthree);intmain(){  chararray[10]={‘A’,’B’,’C’,’D’,’E’,’F’};  hanoi(4,’A’,’B’,’C’);

    2022年10月12日
    3
  • Centos7安装arpspoof

    Centos7安装arpspoofLinux安装arpspoof进行arp攻击实验注:仅可用于学习arp原理及攻击防护,切勿用于非法用途!!!环境:centos7一.下面是需要的所有依赖包,yum源都有,只有dsniff和libnids需要另外下载,直接yum安装就可以:yum-yinstalllibICElibSMlibXmulibpcaplibnetlibXextlibXext-develli…

    2022年10月7日
    3
  • TOMCAT 严重: Error filterStart

    TOMCAT 严重: Error filterStart早上,练习了一个关于struts2的程序,结果tomcat一直报错:TOMCAT严重:ErrorfilterStart,在网上找了各种方法,都不管用,最后干脆把tomcat5.0卸了,直接下了一个6.0的版本,结果问题解决.这可能是tomcat6.0的弥补了5.0存在的一些漏洞吧,(我个人感觉啊),上网也查了一下,Tomcat6.x在目录结构上就是针对lib包的存放位置做了调整,使应用…

    2022年7月11日
    14
  • kettle 教程(四):自定义 Java 代码

    kettle 教程(四):自定义 Java 代码kettle拥有很多自带的组件,能帮我们实现很多的功能。但是我们总有一些很复(qi)杂(pa)的需求,用自带的组件实现不了,或者说实现起来很复杂。那么这时我们就要用到万能的组件了(Java代码),通过自己写代码来实现任何想要的功能。自定义Java代码假设有这样一个需…

    2022年5月23日
    242
  • 显示http500内部服务器错误,http500内部服务器错误,小编教你HTTP 500 内部服务器错误怎么解决…

    显示http500内部服务器错误,http500内部服务器错误,小编教你HTTP 500 内部服务器错误怎么解决…在使用电脑的时候,出现问题是我们最不想碰到的事情了。当打开网站的时候碰到“HTTP500内部服务器错误”,这会让我们非常的心烦,有时候就是因为这些故障要折腾很久,很闹心的,下面,小编给大家带来了HTTP500内部服务器错误的解决图文。很多站长在建设网站时,经常遇到程序运行时打不开的问题,有的是因为程序出现错误,无法运行,而有的是因为服务器的原因。而系统中出现的故障是用户最不想看到的,那HTTP…

    2022年8月12日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号