gulp&webpack(王一之写)

gulp&webpack

目的

  1. 搞清楚什么是包管理工具、构建工具、打包工具,它们分别有什么用。
  2. 了解gulp、webpack配置文件,知道它们在做什么。

一、前端工具

1.1 包管理工具

  • npm
  • yarn(优点:速度更快、yarn.lock)
image

1.2 构建工具

说到构建工具,我们往往会在前面加上"自动化"三个字,因为构建工具就是用来让我们不再做机械重复的事情,解放我们的双手。(代码压缩、编译sass和less、自动加客户端前缀、编译es6)

  • gulp
  • grunt

1.3 打包工具

image

把一些依赖关系错综复杂的模块,归类整理打包成需要的静态资源。

1.3.1 为什么需要模块化?

  • 全局作用域污染。
  • 没有一个规范的方法,可以在一个脚本中引入另一个脚本。

1.3.2 什么是模块化?

详细介绍

  • CommonJS 规范

var gulp =require('require');

module.exports={
    aaa:
}

  • AMD 规范
define("module", ["dep1", "dep2"], function(d1, d2) {
  return someExportedValue;
});

require(["module", "../file"], function(module, file) { /* ... */ });

  • CMD 规范
define(function(require, exports, module) {
  var $ = require('jquery');
  var Spinning = require('./spinning');
  exports.doSomething = ...
  module.exports = ...
})
  • ES6
import "jquery";
import ReactDOM from 'react-dom';
import {render} from 'react-dom';
export function doStuff() {};
export default foo;

二、gulp

基于流的自动化构建工具。

gulp.src(globs[, options])

输出符合所提供的匹配模式(glob)或者匹配模式的数组(array of globs)的文件。 将返回一个 Vinyl files 的 stream 它可以被 piped 到别的插件中。

gulp.dest(path[, options])

能被 pipe 进来,并且将会写文件。并且重新输出(emits)所有数据,因此你可以将它 pipe 到多个文件夹。如果某文件夹不存在,将会自动创建它。

gulp.task(name[, deps], fn)

定义一个任务

gulp.watch(glob [, opts], tasks)

监视文件,并且可以在文件发生改动时候做一些事情。

三、webpack

webpack 是一个现代的 JavaScript 应用程序的模块打包器(module bundler)。

3.1 Hello world:

node_modules/.bin/webpack {入口文件} {输出地址}
//webpack app/index.js dist/bundle.js

3.2 四个核心概念

详细介绍

  • 入口(Entry)
  • 出口(Output)
  • 加载器(Loaders)
  • 插件(Plugins)

3.3 webpack1和webpack2差异

差异

扩展

  • 开启实时编译刷新的服务器(webpack-dev-server)
  • 根据模版生成html(HtmlWebpackPlugin)
  • postcss自动加客户端前缀(autoprefixer)
  • 区分开发和部署配置文件

资料

谢谢

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在现在的前端开发中,前后端分离、模块化开发、版本控制、文件合并与压缩、mock数据等等一些原本后端的思想开始...
    Charlot阅读 5,531评论 1 32
  • 无意中看到zhangwnag大佬分享的webpack教程感觉受益匪浅,特此分享以备自己日后查看,也希望更多的人看到...
    小小字符阅读 8,268评论 7 35
  • 最近在学习 Webpack,网上大多数入门教程都是基于 Webpack 1.x 版本的,我学习 Webpack 的...
    My_Oh_My阅读 8,224评论 40 247
  • GitChat技术杂谈 前言 本文较长,为了节省你的阅读时间,在文前列写作思路如下: 什么是 webpack,它要...
    萧玄辞阅读 12,729评论 7 110
  • 这可能是,不,这确实是一篇引不起别人有读下去的兴趣的文章,或者说也不是文章,就是一篇抒发心情,也可能是传...
    青菜与苹果阅读 451评论 0 0