webpack与gulp的区别及实例搭建

  webpack是什么,提到这个概念,很多人可能立马说出来,模块化加载器兼打包工具,可以把各种资源都作为模块来使用和处理等等。

  说到前端构建工具,不可避免的会提到gulp,到底webpack和gulp有什么区别呢?开始的时候我也不是很清楚,总感觉不到他们的差别,后来仔细研究了一下才发现其中的区别。

  首先,其实webpack只是具有前端构建的功能而已,其实本质来说webpack是一种模块化的解决方案类似require.js一样,只不过通过插件实现了构建工具的一些功能,例如通过less-loader可以编译less为css并作为模块可以被调用。gulp是通过一系列插件将原本复杂繁琐的任务自动化,是一个纯粹的工具,并不能将你的css等非js资源模块化,但是webpack可以做到这些。总的来说,gulp是一个自动化任务的工具,所以你可以通过gulp来配置webpack的文件。

  webpack的优点如下:

    1. webpack 遵循commonJS 的形式,但对 AMD/CMD 的支持也很全面,方便旧项目进行代码迁移。

    2. 能被模块化的不仅仅是 JS ,所有的静态资源,例如css,图片等都能模块化,即以require的方式引入。

    3. 开发便捷,能替代部分 grunt/gulp 的工作,比如打包、压缩混淆、图片转base64等。

  具体webpack如何使用可以通过一个很简单的demo项目来了解一下:

  首先,在git上新建一个项目,同时全局安装webpack。(当然首先你要先安装了node)

    npm install webpack -g(可能需要sudo权限)。

    安装之后可以通过webpack -v来查看当前版本。如果显示如下所示,说明安装成功    

 Hash: 507b96dfc644d4199f75

  Version: webpack 1.12.15

  2, 通过packge.json配置依赖。通过npm install加载npm模块,接下来分析需要什么依赖什么插件,

    1)webpack肯定要先行依赖的

      2)本项目中存在js,html,less三部分,js不需要通过loader转换,所以需要less-loader,但基本的样式loader时肯定需要的所以要依赖三个插件,less-loader、css-loader、style-loader。如下所示:

"dependencies": {
    "cnpm": "^4.2.0",
    "css-loader": "^0.23.1","less-loader": "^2.2.3",
    "style-loader": "^0.13.1",
    "webpack": "^1.12.15"
  }

  3,使用webpack.config.js进行配置管理,类似于gulpfile.js(遵循common.js的规范)

    首先  要引入webpack

var webpack = require(‘webpack‘);
module.exports = {
    entry: ‘./js/index‘,//页面入口文件配置
    //文件输出配置
    output: {
        path: __dirname,//当前文件package.json的路径
        filename: ‘/dist/index.js‘//打包之后输出的文件,即dist下的index.js
    },
    module: {
        //加载器配置
        loaders: [{
            test: /\.less$/,
            loader: "style-loader!css-loader!less-loader"
        }]
    }
}

  

  4,建相应文件夹及文件

    

    1)html只需要加载打包之后的文件,即dist/下的indx.js即可,无需和原来一样分别加载js和css      

1 <head>
2     <meta charset="UTF-8">
3     <title>index</title>
4     <script src="../dist/index.js"></script>
5 </head>

    2)index.less里就是简单的less语法的样式(以检查css是否生效):

body{
  color: red;
}

    3)模块文件alerts.js里简单的返回字符串,以供测试。

module.exports = ‘this is webpack demo by 潇湘待雨‘;

    4)入口文件里,引入less文件和模块alerts.js。

require(‘../less/index.less‘);//引入less文件
var alerts = require(‘./alerts.js‘);//模块js文件
alert(‘so, it is so easy to use webpack‘);
document.write(alerts);

  5.执行npm run build

  查看是否成功,执行命令可以配置在gulp文件里也可以配置在package.json里。此处配置在package.json中:

"scripts": {
    "build": "webpack"
  },

  至此一个简单的基于webpack的demo搭建完成,此处只是个人的一点见解,希望抛砖引玉引来大神们的指教。

源码git地址:https://github.com/xiaoxiangdaiyu/webpack_demo.git  

   

时间: 2024-08-24 23:36:34

webpack与gulp的区别及实例搭建的相关文章

webpack和gulp的区别

Gulp应该和Grunt比较,他们的区别我就不说了,说说用处吧.Gulp / Grunt 是一种工具,能够优化前端工作流程.比如自动刷新页面.combo.压缩css.js.编译less等等.简单来说,就是使用Gulp/Grunt,然后配置你需要的插件,就可以把以前需要手工做的事情让它帮你做了. 说到 browserify / webpack ,那还要说到 seajs / requirejs .这四个都是JS模块化的方案.其中seajs / require 是一种类型,browserify / w

前端构建工具之争——Webpack vs Gulp 谁会被拍死在沙滩上

.table tr>td:nth-child(1){width: 2em !important;padding-left: .6rem !important;padding-right: .6rem !important;} 本文组织结构 理想的前端开发流程 Gulp 为何物 Webpack 又是从哪冒出来的 结论 文章有点长,总共 1800 字,阅读需要 18 分钟.哈哈,没耐心的直接戳我到高潮部分. 理想的前端开发流程 在说构建工具之前得先说说咱期望的前端开发流程是怎样的? 写业务逻辑代码(

企业级LNMP实例搭建

企业级LNMP实例搭建(centos6) 阅读目录 1.1 部署LNMP架构说明 第2章 LNMP环境搭建步骤 2.1 部署linux系统 2.2 部署nginx网站服务 2.3 部署mysql数据库服务 2.4 部署php服务 2.5 nginx 与 php 建立连接关系 2.6 编辑php与mysql连通性测试文件,并进行测试 2.7 测试php与数据库连通性 2.8 下载部署wordpress博客程序 3.1 mysql数据库迁移 3.2 本地数据挂载到nfs共享储存 1.1 部署LNMP

webpack+react+antd 单页面应用实例

webpack+react+antd 单页面应用实例 React框架已经火了好长一段时间了,再不学就out了! 对React还没有了解的同学可以看看我之前的一篇文章,可以快速简单的认识一下React.React入门最好的实例-TodoList 自己从开始接触react一窍不通,到慢慢的似懂非懂,通过各种途径学习也有一阵了.学习过程中还会接触到很多新的东西,比如ES6.webpack,过程艰辛谁人懂,见坑填坑慢慢来.今天把学习过程过滤了一下,只说项目实际需要用的东西,总结了一套能看到的东西,分享给

webpack结合gulp打包

在我前面的文章中,总结了一下自己学习webpack和gulp的一些东西.然而,在我的实际项目中,单独使用它们两者不能满足项目的需求.我遇到了下面的一些问题. 问题1: 因为我的图片需要放单cdn上面去.而我们知道,webpack中,如果是大于8K的图片,它是没有转化为base64的,而且html中引入的图片实际上是会被打包到js当中,因此我需要手动去改那些图片的路劲.比较麻烦 问题2: 虽然webpack在打包的过程中会自动帮你把css,js的路劲引入到html中,但是我在打包之前,我还是要自己

对webpack和gulp的理解和区别

webpack是前端构建工具,称为模块打包机,webpack支持模块化:构建前端开发过程中常用的文件,如:js,css,html,img等:使用简单方便,自动化构建.webpack是通过loader(加载器)和plugins(插件)对资源进行处理的. Glup侧重于前端开发的整个过程的控制管理,我们可以通过给glup配置不同的task来让glup实现不同的功能,从而构建整个前端开发流程.(通过gulp中的gulp.task()方法配置,比如server.sass/less预编译.文件的合并压缩等

类方法isAssignableFrom、instanceof和asSubclass的区别及实例

isAssignableFrom public boolean isAssignableFrom(Class if (List.class.isAssignableFrom(ArrayList.class)) { System.out.println("list is assignable from arraylist"); } if (ArrayList.class.isAssignableFrom(List.class)) { System.out.println("ar

一、webpack那点事-安装、环境搭建

前言: 还记得两年前刚来公司才几个月,经理就安排我去做JS地图相关的维护和开发工作,然后就跟着一个公司老鸟(没俩月他离职了)熟悉地图相关的功能. 本人嘛,那会前端JS实际开发经验也才几个月,然后当我看见公司地图的上万行源代码,可想而知,直接懵逼.但是没办法呀,只能坚持去慢慢看,来来回回的找引用关系,熟悉每个模块方法实现的功能,于是乎,从那之后,我感觉什么一两千行代码都是 so easy. 言归正传,正是在于这种情况下,在业务复杂的时候,相对应的代码量会很多,上万行的代码也不再是梦,但是这种情况下

从零开始的MYSQL02 --- MySQL启动方式及故障排查,多实例搭建

1. MySQL的方式及区别     在MySQL启动遇到故障怎么排查 /etc/init/d/mysql start | restart | stop 这个脚本是一般安装后由mysql.server 自动生成,如果是直接解压使用的需要手动添加. 设置mysql自动启动:chkconfig mysql on,如果线上库,我建议关闭自动启动,线上库本着一个原则,出错了就停下来.或者脚本来控制批量的启动与停止. /etc/init.d/mysql  ( mysql.server) /usr/loca