如何在webpack中使用loader
一、什么是loader
loader 用于对模块的源代码进行转换。loader 可以使你在 import 或"加载"模块时预处理文件。因此,loader 类似于其他构建工具中“任务(task)”,并提供了处理前端构建步骤的强大方法。loader 可以将文件从不同的语言(如 TypeScript)转换为 JavaScript,或将内联图像转换为 data URL。loader 甚至允许你直接在 JavaScript 模块中 import CSS文件!
二、怎么使用loader
示例:加载一个less-loader
1、首先使用npm命令安装less-loader
npm install --save-dev css-loader
2、loader使用
loader有三种方式可以引入到你的程序中
(1)Configuration(配置方式):推荐使用配置方式,在你的webpack.config.js 中配置进去
{
test: /\.less$/,
use: [{
loader: "style-loader" // creates style nodes from JS strings
}, {
loader: "css-loader" // translates CSS into CommonJS
}, {
loader: "less-loader" // compiles Less to CSS
}]
},
(2)inline(内联方式引入):通过使用import方式引入
import Styles from 'style-loader!less-loader?modules!./styles.less';
(3)cli(命令行方式引入):可以使用命令的形式引入(不推荐,太麻烦)
webpack --module-bind jade-loader --module-bind 'css=style-loader!css-loader'
三、loaders的分类(具体用法请参考官网https://doc.webpack-china.org/loaders)
文件
raw-loader加载文件原始内容(utf-8)val-loader将代码作为模块执行,并将 exports 转为 JS 代码url-loader像 file loader 一样工作,但如果文件小于限制,可以返回 data URLfile-loader将文件发送到输出文件夹,并返回(相对)URL
JSON
json-loader加载 JSON 文件(默认包含)json5-loader加载和转译 JSON 5 文件cson-loader加载和转译 CSON 文件
转换编译(Transpiling)
script-loader在全局上下文中执行一次 JavaScript 文件(如在 script 标签),不需要解析babel-loader加载 ES2015+ 代码,然后使用 Babel 转译为 ES5buble-loader使用 Bublé 加载 ES2015+ 代码,并且将代码转译为 ES5traceur-loader加载 ES2015+ 代码,然后使用 Traceur 转译为 ES5ts-loader或awesome-typescript-loader像 JavaScript 一样加载 TypeScript 2.0+coffee-loader像 JavaScript 一样加载 CoffeeScript
模板(Templating)
html-loader导出 HTML 为字符串,需要引用静态资源pug-loader加载 Pug 模板并返回一个函数jade-loader加载 Jade 模板并返回一个函数markdown-loader将 Markdown 转译为 HTMLreact-markdown-loader使用 markdown-parse parser(解析器) 将 Markdown 编译为 React 组件posthtml-loader使用 PostHTML 加载并转换 HTML 文件handlebars-loader将 Handlebars 转移为 HTMLmarkup-inline-loader将内联的 SVG/MathML 文件转换为 HTML。在应用于图标字体,或将 CSS 动画应用于 SVG 时非常有用。
样式
style-loader将模块的导出作为样式添加到 DOM 中css-loader解析 CSS 文件后,使用 import 加载,并且返回 CSS 代码less-loader加载和转译 LESS 文件sass-loader加载和转译 SASS/SCSS 文件postcss-loader使用 PostCSS 加载和转译 CSS/SSS 文件stylus-loader加载和转译 Stylus 文件
清理和测试(Linting && Testing)
mocha-loader使用 mocha 测试(浏览器/NodeJS)eslint-loaderPreLoader,使用 ESLint 清理代码jshint-loaderPreLoader,使用 JSHint 清理代码jscs-loaderPreLoader,使用 JSCS 检查代码样式coverjs-loaderPreLoader,使用 CoverJS 确定测试覆盖率
框架(Frameworks)
vue-loader加载和转译 Vue 组件polymer-loader使用选择预处理器(preprocessor)处理,并且require()类似一等模块(first-class)的 Web 组件angular2-template-loader加载和转译 Angular 组件
如何在webpack中使用loader的更多相关文章
- 如何在webpack中成功引用到图片?
打包图片时,你可曾遇到在产出目录文件夹找不到图片,即便找到了,但是页面说引用不到资源?页面上或者文件中引用的图片地址不对? 一.在webpack中引入图片需要url-loader //webpack配 ...
- Webpack的详细配置,[Webpack中各种loader的安装配置]
在使用webpack的时候,你是不是被以下这种报错所困扰: 注意看 黄色框中标注的 You may need an appropriate loader to handle this file typ ...
- 第五十一篇:webpack中的loader(二) --less-loader
好家伙 先扩充一下知识点: 什么是.less文件? 作为一名前端开发的同学,很多时候我们都无法避免地要去写大量的 CSS 代码, 而且耗费的时间还不少,所以学习一种能够提升开发效率的 CSS 预处理器 ...
- 第五十篇: webpack中的loader(一) --css-loader
好家伙, 1.webpack配置中devServer节点的常用配置项 devServer:{ //首次打包完成后,自动打开浏览器 open:ture, //在http协议中,如果端口号是80,则可以被 ...
- webpack 中,loader、plugin 的区别
loader 和 plugin 的主要区别: loader 用于加载某些资源文件. 因为 webpack 只能理解 JavaScript 和 JSON 文件,对于其他资源例如 css,图片,或者其他的 ...
- 在webpack中使用postcss之插件包precss
precss是一个预处理css的插件包,集成了很多postcss插件的功能,比如嵌套,变量,继承,混合,循环,判断.下面来介绍如何在webpack中使用precss.一.新建项目1.新建package ...
- Webpack 2 视频教程 014 - 深入理解 Webpack 2 中的 loader
原文发表于我的技术博客 这是我免费发布的高质量超清「Webpack 2 视频教程」. Webpack 作为目前前端开发必备的框架,Webpack 发布了 2.0 版本,此视频就是基于 2.0 的版本讲 ...
- (23/24) webpack实战技巧:如何在webpack环境中使用Json
在webpack1或者webpack2版本中,若想在webpack环境中加载Json文件,则需要加载一个json-loader的loader进来的.但是在webpack3.x版本中,则不需要在另外引入 ...
- 如何在webpack开发中利用vue框架使用ES6中提供的新语法
在webpack中开发,会遇到一大推问题,特别是babel6升级到babel7,要跟新一大推插件,而对于安装babel的功能就是在webpack开发中,vue中能够是用ES6的新特性: 例如ES6中的 ...
随机推荐
- vue框架中什么是MVVM
前端页面中使用MVVM的思想,即MVVM是整个视图层view的概念,属于视图层的概念. MVVM是前端视图层的分层开发思想,将页面分成了Model, View,和VM:其中VM是核心,因为VM是V和M ...
- Edge Computer:Vision and Challenges
Abstract 随着物联网(Internet of Things)的蓬勃发展和云服务(cloud services)的成功,出现一种新的计算模式:edge computer.用于边缘网络数据的处理, ...
- magento 站内优化和站外优化详解
关于Magento如何如何我就不做评论了,一句话,谁用谁知道,搜索了下,百度和谷歌中文里还真没有一篇系统的关于magento seo的内容,花了一个上午的时间,稍微整理了一下,算是给新人一个指引吧.主 ...
- electron-vue中点击按钮,实现打开程序目录里面的某个文件
设计到的知识点: explorer.exe /select 打开文件夹并把焦点放到指定文件 nodejs中的process模块--child_process.exec 我这里是根据需求,点击按钮后打开 ...
- CDN技术详解(七)
动态内容加速服务的实现 随着Web2.0的兴起,产生了动态网页.个性化内容.电子交易数据等内容的加速,这些就涉及了动态内容加速技术. 静态内容的加速,都是对于表现层的加速,对于动态页面等内容的加速,则 ...
- 优雅的SpringMVC和Restful
一.前言 1.前段时间一直在写微信小程序的请求,终于把客户端的请求弄好了,可是服务端呢,该怎么写,纠结了半天,用servlet暂时写好了一个:http://www.cnblogs.com/JJDJJ/ ...
- zabbix历史数据全部清楚
#这种方法会出现 监控项不可用的情况 1.停掉zabbix_server 2.重重名表 RENAME TABLE history to history_20180117; RENAME TABLE h ...
- 使用struts2未登录,不能操作
1.定义拦截器类: 注意登录的action,登录成功在session存入标记(login) import com.opensymphony.xwork2.ActionContext; import c ...
- php中的list()
list()在php中上一个语言结构,并不是一个函数.类似array(),不过array()这个东西我们现在一般很少使用了,因为从php5.4版本开始,我们会直接使用[]来定义数组. 那么,list( ...
- ubuntu16安装,配置前端开发环境
1.安装ubuntu 使用usio制作U盘安装工具 2.安装搜狗输入法 3.安装QQ 4.安装nodejs node-v0.12.4 node-v0.12.4.tar.gz root@ubunt ...