webpack----loader

 2023-09-13 阅读 20 评论 0

摘要:1、Loaders Loaders是webpack中最强大的功能之一了。通过使用不同的loader,webpack通过调用外部的脚本或工具可以对各种各样的格式的文件进行处理,如分析JSON文件并把它转换为JavaScript文件;或把下一代的JS文件(ES6,ES7)转换为现代浏览器

1、Loaders

Loaders是webpack中最强大的功能之一了。通过使用不同的loader,webpack通过调用外部的脚本或工具可以对各种各样的格式的文件进行处理,如分析JSON文件并把它转换为JavaScript文件;或把下一代的JS文件(ES6,ES7)转换为现代浏览器可以识别的JS文件;或对React的开发而言,合适的Loaders可以把React的JSX文件转换为JS文件。

webpack菜鸟教程,Loaders需要单独安装并且需要在webpack.config.js下的modules关键字下进行配置。安装命令为npm install --save-dev json-loader,Loaders的配置选项包括以下几方面:

modules配置选项

功能描述

webpack import,test

一个匹配loaders所处理的文件的拓展名的正则表达式(必须)

loader

webpack使用?loader的名称(必须)

include/exclude

手动添加必须处理的文件(文件夹)或屏蔽不需要处理的文件(文件夹)(可选)

imageloader,query

为loaders提供额外的设置选项(可选)

继续上面的例子,把Greeter.js里的问候消息放在一个单独的JSON文件里,并通过合适的配置使Greeter.js可以读取该JSON文件的值,配置方法如下

module.exports = {  devtool: 'eval-source-map', // 配置生成Source Maps,选择合适的选项  entry:  __dirname + "/app/main.js", // 已多次提及的唯一入口文件  output: {  path: __dirname + "/public", // 打包后的文件存放的地方  filename: "bundle.js" // 打包后输出文件的文件名  },  module: { // 在配置文件里添加JSON loader  loaders: [  {  test: /\.json$/,  loader: "json-loader"  }  ]  },  devServer: {  contentBase: "./public", // 本地服务器所加载的页面所在的目录  colors: true, // 终端中输出结果为彩色  historyApiFallback: true, // 不跳转  inline: true // 实时刷新  }  
}  

Webpack插件按需加载组件、  

2、Babel

Loaders很好,不过有的Loaders使用起来比较复杂,如Babel。

Babel其实是一个编译JavaScript的平台,它的强大之处表现在可以通过编译达到以下目的:

1) 下一代的JavaScript标准(ES6,ES7),这些标准目前并未被当前的浏览器完全的支持;

2) 使用基于JavaScript进行了拓展的语言,如React的JSX。

Babel其实是几个模块化的包,其核心功能位于称为babel-core的npm包中,不过webpack把它们整合在一起使用,但是对于每一个需要的功能或拓展,都需要安装单独的包(用得最多的是解析Es6的babel-preset-es2015包和解析JSX的babel-preset-react包)。

一次性安装这些依赖包(npm一次性安装多个依赖模块,模块之间用空格隔开):

npm install --save-dev babel-core babel-loader babel-preset-es2015 babel-preset-react

在webpack中配置Babel的方法如下(在webpack.config.js的module部分的loaders里进行配置即可):

module.exports = {  devtool: 'eval-source-map',//配置生成Source Maps,选择合适的选项  entry:  __dirname + "/app/main.js",//已多次提及的唯一入口文件  output: {  path: __dirname + "/public",//打包后的文件存放的地方  filename: "bundle.js"//打包后输出文件的文件名  },  module: {  loaders: [  {  test: /\.json$/,  loader: "json-loader"  },  {  test: /\.js$/,  exclude: /node_modules/,  loader: 'babel',  query: {  presets: ['es2015','react']  }  }  ]  }  
}  

  

Babel的配置选项:

Babel其实可以完全在webpack.config.js中进行配置,但考虑到babel具有非常多的配置选项,在单一的webpack.config.js文件中进行配置往往使得这个文件显得太复杂,因此一些开发者支持把babel的配置选项放在一个单独的名为 ".babelrc" 的配置文件中。现在的babel的配置并不算复杂,不过之后会再加一些东西,因此现在就提取出相关部分,分两个配置文件进行配置(webpack会自动调用.babelrc里的babel配置选项),如下:

module.exports = {  devtool: 'eval-source-map',//配置生成Source Maps,选择合适的选项  entry:  __dirname + "/app/main.js",//已多次提及的唯一入口文件  output: {  path: __dirname + "/public",//打包后的文件存放的地方  filename: "bundle.js"//打包后输出文件的文件名  },  module: {  loaders: [  {  test: /\.json$/,  loader: "json-loader"  },  {  test: /\.js$/,  exclude: /node_modules/,  loader: 'babel'  }  ]  }
}  

  .babelrc:

{  "presets": ["react", "es2015"]  
}  

  

3、模块

webpack的优点:把所有的文件都可以当做模块处理,包括JavaScript代码,也包括CSS和fonts以及图片等,通过合适的loaders,它们都可以被当做模块被处理。

1)CSS

webpack提供两个工具处理样式表,css-loader 和 style-loader,二者处理的任务不同,css-loader使得能够使用类似@import 和 url(...)的方法实现 require()的功能,style-loader将所有的计算后的样式加入页面中,二者组合在一起能够把样式表嵌入webpack打包后的JS文件中。

安装命令:npm install --save-dev style-loader css-loader

module.exports = {  devtool: 'eval-source-map',//配置生成Source Maps,选择合适的选项  entry:  __dirname + "/app/main.js",//已多次提及的唯一入口文件  output: {  path: __dirname + "/public",//打包后的文件存放的地方  filename: "bundle.js"//打包后输出文件的文件名  },  module: {  loaders: [  {  test: /\.json$/,  loader: "json-loader"  },  {  test: /\.js$/,  exclude: /node_modules/,  loader: 'babel',  query: {  presets: ['es2015','react']  }  },  {  test: /\.css$/,  loader: 'style!css'  }  ]  } 
}  

  

转载于:https://www.cnblogs.com/maomao93/p/7908160.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/50853.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息