正式学习react(二)[通俗易懂]

正式学习react(二)

大家好,又见面了,我是全栈君。

 

 

 

今天把上一篇还没学习完的 webpack部分学习完:

之前有说过关于css的webpack使用。我们讲了 

ExtractTextPlugin 来单独管理css

讲了module.loaders下关于 css的写法:
module: {
  
  
loaders: [
// Extract CSS during build
{
test: /\.css$/,
loader: ExtractTextPlugin.extract('style', 'css'),
include: paths
}
]
},

还讲了关于css?modules这个query 的作用,下面我们开始要用到Babel and babel-loader 来支持es6了!
默认大家都熟悉下面几种模块管理方式:

CommonJS

正式学习react(二)[通俗易懂]

ES6

正式学习react(二)[通俗易懂]

 

 

AMD

 正式学习react(二)[通俗易懂]

正式学习react(二)[通俗易懂]

 

 

 上面所有的格式规范,webpack都支持.

————————————————————————————————————–

 现在讲一下loader的定义:

 

正式学习react(二)[通俗易懂]

loader (接收 字符串)

loaders  (接收 数组) 

 

上面的都是数组,所以都写的是loaders.

 

 

 webpack的loader 是讲顺序的,一定记住是从右往左,从右往左,从右往左。重要的事情说三遍!

 

loaders: ['style', 'css'] 就相对于 style(css(input)) ,两者没有差别。

—————————————————————————————————————————

说完顺序,再说参数,还记得之前说的modules吗?

 

Passing Parameters to a Loader

{ test: /\.jsx?$/,

   loaders: [ ‘babel?cacheDirectory,presets[]=react,presets[]=es2015’ ],

   include: PATHS.app

}

我们之前都是这样写的,但是这样阅读性比较差,我们推荐这样的写法:

 

{ test: /\.jsx?$/,

   loader: ‘babel’,

   query: { cacheDirectory: true,

                presets: [‘react’, ‘es2015’] },

   include: PATHS.app

}

 

 

还有,我之前也推荐过 用include:这个key, 他接受string 也可以接收Array;

————————————————————————————————————————————————————–

我之前介绍过ExtractTextPlugin 这个插件,来讲css文件 output 到你的build里。

—————————————————————————————————————————————————————

Loading CSS

  It parses the styles in the given include path (accepts an array too) while making sure only files ending with .css are matched.

The definition then applies both style-loader and css-loader on it:

大意就是说 你写了include,在你的module.loaders下。那webpack就只从这个文件下找.css 结尾的文件,匹配到就用style-loader 和 css-loader 来操作这些css文件。

 

正式学习react(二)[通俗易懂]

 整个过程就是Webpack会判断这些文件,然后在匹配到的文件里将 @import 和 url()声明的字段,转化成require字段,然后就是用到style-loader了,

 下面我们还会介绍 file-loader or url-loader.

 

PS:如果你想确保CSS也能运用sourcemaps 。你可以使用[‘style’, ‘css?sourceMap’]

并且设置output.publicPath为绝对路径。

 

当然,我们可能在项目里用了less,sass。

 less-loader

 

  正式学习react(二)[通俗易懂]

 

 node-sass 

正式学习react(二)[通俗易懂]

 

你们的 LESS/SASS文件里可以使用import:

正式学习react(二)[通俗易懂]

 

也可以直接从node_modules文件夹里加载

 正式学习react(二)[通俗易懂]

还有一些自己去了解。

 —————————————————————————————————

导致我们的项目变慢,很可能是因为我们需要加载很多小资源。毕竟每个请求附带了一个开销。

HTTP / 2将帮助在这方面和改变现状。

 

Webpack 是允许在你的代码里内联加载资源的,不过要使用url-loader这个加载器。他会把图片

翻译成BASE64在你的JavaScript bundles。

 ———————————————————————————————–

Setting Up url-loader

做开发的时候,我们使用url-loader 是不错的选择。因为你可能并不关心生成包的大小。

它有一个限制选项,在达到一定的限制条件以后被使用(延迟image到file-loader)。


具体的说就是,url-loader 是将一些url()里需要下载的资源,下载下来!然后用BASE64编码

内联到我们bundles的js文件里。可以减少开销。但是如果文件太大,我们可能等不了。

我们就让他在浏览器里加载。这就是limit的作用。

正式学习react(二)[通俗易懂]

就这样小于25k的图片将直接以base64的形式内联在代码中,可以减少一次http请求。

 style.js

正式学习react(二)[通俗易懂]

 

webpack.config.js

正式学习react(二)[通俗易懂]

 

 

运行webpack后:

正式学习react(二)[通俗易懂]

 

 

—————————————————————————–

Setting Up file-loader

url-loader是对file-loader的上层封装,如果你忽略内联url,我们可以直接使用 file-loader

正式学习react(二)[通俗易懂]

 

The following setup customizes the resulting filename. By default file-loaderreturns the MD5 hash of the file’s contents with the original extension:

开发者可以根据自己的需求自己定制文件名,默认 file-loader 会返回一个内容是MD5散列的原始扩展文件。

不过这里我自己定义了文件名,打包处理后:

正式学习react(二)[通俗易懂]

 

关于打包 svg , 压缩图片等loader,大家有兴趣自己去了解。

 ———————————————————————————————————————————————————————-

 我们的website也经常需要用到各种字体:最后介绍一下字体的打包:

依靠file-loader或者url-loader 都可以实现字体打包,最简单的方式:

正式学习react(二)[通俗易懂]

 

 想弄的好一点:

正式学习react(二)[通俗易懂]

 

 

 有时候为了权衡网站的性能与美观,我们可能会放弃内联方式【增加request】,直接选择打包,而且打包好多种字体样式:

正式学习react(二)[通俗易懂]

 

 

—————————————————————————————到此为止,webpack基本内容介绍,最后一篇会介绍webpack一下原理——————————-

 

转载于:https://www.cnblogs.com/huenchao/p/6074888.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

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


相关推荐

  • awvs11安装教程_ajax使用步骤

    awvs11安装教程_ajax使用步骤Awvs12.x安装及使用教程Awvs12.x安装1.下载Awvs12.x版本和对应补丁2.安装AwvsAwvs12.x使用Awvs12.x导出渗透结果报表Awvs12.x下载链接Awvs12.x安装1.下载Awvs12.x版本和对应补丁2.安装Awvs1.双击acunetix_12.0.180911134.exe进行安装2.然后选择我同意该条款3.随便填写对应邮箱如xxx@qq.com,账号密码一定要记住如果出现下图,是密码设置太简单了,需要设置含三种规则以上的密码如Abc12345

    2022年9月16日
    2
  • MATLABfill函数_matlab中C的模块名称是什么

    MATLABfill函数_matlab中C的模块名称是什么matlab移植C/C++代码时,发现不管是opencv还是IPP库都没有填充联通区域函数imfill(),于是只能自己动手了。先展示一下imfill()函数的功能,如下图:上图中,左图是一个二值图像,白色是手臂边缘像素值为1,黑色区域像素值为0,现在想将手臂填充1,用imfill()函数可以实现该功能,但C/C++代码需要自己实现。C/C++代码:boolimFill(Ipp8u*img,intwidth,intheight){ vector<int>q; int

    2022年9月12日
    1
  • 推荐书籍:FFmpeg从入门到精通

    推荐书籍:FFmpeg从入门到精通本书是一本介绍FFmpeg的实战技术指南,全书共10章,分为两个部分。第一部分部分(第1~7章)为FFmpeg的命令行使用篇,介绍了FFmpeg的基础组成部分、FFmpeg工具使用、FFmpeg的封装操作、FFmpeg的转码操作、FFmpeg的流媒体操作、FFmpeg的滤镜操作、FFmpeg的设备操作。第二部分(第8~10章)为FFmpeg的API使用篇,介绍了FFmpeg封装部分的API使用操作、FFmpeg编解码部分的API使用操作,FFmpeg滤镜部分的API使用操作,相关操作均以实例方式进行

    2022年6月26日
    22
  • Spring Cloud 微服务架构图「建议收藏」

    Spring Cloud 微服务架构图「建议收藏」SpringCloud微服务总体架构图上面图中技术名词理解:1、Sleuth-链路跟踪为服务之间调用提供链路追踪。通过Sleuth可以很清楚的了解到一个服务请求经过了哪些服务,每个服务处理花费了多长。从而让我们可以很方便的理清各微服务间的调用关系。2、断路器(Hystrix)在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调…

    2022年4月30日
    68
  • pytest接口自动化测试框架_java做接口自动化

    pytest接口自动化测试框架_java做接口自动化pytest接口自动化完整框架思维导图

    2022年7月31日
    3
  • Windows中Pycharm中配置Qt[通俗易懂]

    Windows中Pycharm中配置Qt[通俗易懂]Qt是什么Qt是Python开发窗体的工具之一,它与python有着良好的兼容性,且可通过可视化拖曳的方式进行窗体的创建,提高开发效率。Qt工具支持Windows,Linux,MacOSX三种操作系统。可用pipinstallpyqt5进行在线安装配置Pycharm由于QtDesigner在设计窗体时,后缀名为ui,需要转为py文件后才可以被…

    2022年8月29日
    0

发表回复

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

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