nodejs模块学习: webpack

nodejs 发展很快,从 npm 上面的包托管数量就可以看出来。不过从另一方面来看,也是反映了 nodejs 的基础不稳固,需要开发者创造大量的轮子来解决现实的问题。

知其然,并知其所以然这是程序员的天性。所以把常用的模块拿出来看看,看看高手怎么写的,学习其想法,让自己的技术能更近一步。

引言

nodejs 的革命性的发展,给前端带来了无限可能。因为一直以来,对于前端来说,没有合适的工具进行处理手里的工作,对待 js,css,html 的工具要么不顺手,要么不是前端人写的,对前端的痛点不能够理解到位,nodejs 给于了前端工程师强大的能力,创造自己的工具。

对于网页来说在以前核心是以 html 为载体,css 定义形式,js 定义行为。现在的前端变化了,三要素没有变,只是生产三要素的工具,现在都变成了 javascript,这一个东西。 而 webpack 就是以 js 为核心,分析依赖,生产 html, css, js , assets等网页需要的一切东西。他的核心就是一切通过 js 进行模块化组织,然后自动分析依赖,构建出你想要的东西。官网上的图就能说明一切。

webpack 对于初学者很不简单,因为概念上带来很多新的东西,而且不可编程,不可控制,只能配置。

但我觉得 webpack 是不可多得的学习资料,他把一个构建一个系统做值很灵活,其中的概念对每个语言都是很有用。

webpack 中的概念

入口(entry)

任何一个程序的都需要总的入口,它用来调用其他的模块。

出口 (output)

一般一个入口对应一个出口。
有定义发布的位置。

加载器(处理器) (loader)

处理程序的内容,以模块为单位进行处理。
先后顺须重要,是以文件为单位进行处理。

插件 (plugins)

控制 webpack 的行为,监听 webpack 编绎行为事件,然后进行相应的处理。
因此plugins的先后顺序不太重要。

模块 (modules)

是以文件为组织结构,如 .html, css, .less, .scss等
识别 html css js 中的 导入方案

依赖图 (Dependency Graph)

模块间调用的先后顺序,组后一个依赖图

块和模块区别

chunk是多个module在一起的概念

EntryChunk(包括运行时) 和 NormalChunk(不包括运行时)
一个出口有时不一定对应一个出口,有时会对应多个出口。

模块解析(resolve)

就是告诉你一些模块在哪里找,就是 require 中路径的问题

运行时(Runtime和Manifest)

依赖关系和 webpack 方法初始化调用方法。

构建目标环境 (target)

交叉遍绎(node, web,webworker)到目标环境。

webpack 中的执行顺序

总结

webpack 就像是一个程序的程序,他能分析你程序的执行顺序和依赖,然后优化,打包成一个另一个优化好的程序。

webpack 可以看成元编程(meta-programing)

webpack 可以看成扇入扇出系统(fanin-finout)

webpack 可以看成ETL(extract-transform-load)

等等。

最后 webpack 就是webpack 没错,all-in-one。

源码地址: github

nodejs模块学习: webpack的更多相关文章

  1. # nodejs模块学习: express 解析

    # nodejs模块学习: express 解析 nodejs 发展很快,从 npm 上面的包托管数量就可以看出来.不过从另一方面来看,也是反映了 nodejs 的基础不稳固,需要开发者创造大量的轮子 ...

  2. nodejs模块学习: connect解析

    nodejs模块学习: connect解析 nodejs 发展很快,从 npm 上面的包托管数量就可以看出来.不过从另一方面来看,也是反映了 nodejs 的基础不稳固,需要开发者创造大量的轮子来解决 ...

  3. nodejs模块学习: connect2解析

    nodejs模块学习: connect2 解析 nodejs 发展很快,从 npm 上面的包托管数量就可以看出来.不过从另一方面来看,也是反映了 nodejs 的基础不稳固,需要开发者创造大量的轮子来 ...

  4. nodejs模块学习: express-session 解析

    nodejs模块学习: express-session 解析 nodejs 发展很快,从 npm 上面的包托管数量就可以看出来.不过从另一方面来看,也是反映了 nodejs 的基础不稳固,需要开发者创 ...

  5. nodeJS学习(9)--- nodeJS模块:exports vs module.exports

    模块简介: 通过Node.js的官方API可以看到Node.js本身提供了很多核心模块 http://nodejs.org/api/ 这些核心模块被编译成二进制文件,可以 require('模块名') ...

  6. 深入学习webpack(二)

    深入学习webpack(二) 在深入学习webpack(一)中,我通过一个例子介绍了webpack的基本使用方法,下面将更为系统的学习webpack的基本概念,对于一门技术的掌握我认为系统化还是很重要 ...

  7. [译]开始学习webpack

    写在前面: 文章翻译自petehunt大神的petehunt/webpack-howto,作为学习webpack的开始.fork了一份,翻译后的在这里https://github.com/zjzhom ...

  8. 深入学习webpack(一)

    深入学习webpack(一) 模块化的相关库和工具已经很多了,包括require.js.sea.js和一些工程化工具webpack.gulp.grant.那么我们该如何选择呢? 其实,我们只需要掌握了 ...

  9. webpack4 学习 --- webpack和webpack-dev-server

    以前了解过webpack2, 所以对webpack 不是很陌生,就直接入主题吧.新建一个文件夹,就叫它webpack-tut吧.然后在文件中新建一个src 文件夹,存放我们的源文件,再在src 文件夹 ...

随机推荐

  1. poj3784 Running Median[对顶堆]

    由于我不会讲对顶堆,所以这里直接传上一个巨佬的学习笔记. 对顶堆其实还是很容易理解的,想这题的时候自己猜做法也能把没学过的对顶堆给想出来.后来了解,对顶堆主要还是动态的在线维护集合$K$大值.当然也可 ...

  2. Mysql误删了root用户怎么办

    1.停止mysql服务:在mysql安装目录下找到my.ini:在my.ini中找到以下片段[mysqld]:另起一行加入代码:skip-grant-tables 并保存 2.启动mysql服务,并登 ...

  3. 洛谷 2577 [ZJOI2005]午餐——序列dp

    题目:https://www.luogu.org/problemnew/show/P2577 可以从只有一个窗口的角度思考出一个贪心结论.就是应当按吃饭时间(不算打饭时间)从大到小排序.这样交换相邻两 ...

  4. POCO库中文编程参考指南(10)如何使用TCPServer框架?

    1 TCPServer 框架概述 POCO 库提供TCPServer框架,用以搭建自定义的 TCP 服务器.TCPServer维护一个连接队列.一个连接线程池.连接线程用于处理连接,连接线程只要一空闲 ...

  5. lwip【6】LWIP使用经验

    LWIP使用经验 一 LWIP内存管理 LWIP的内存管理使用了2种方式:内存池memp和内存堆mem,如图1所示. 内存池的特点是预先开辟多组固定大小的内存块组织成链表,实现简单,分配和回收速度快, ...

  6. 浅谈HTML移动Web开发(转)

    一.响应式Web设计 PC端常用的两种布局方式就是固定布局和弹性布局,前者设置一个绝大多数电脑能征服显示的固定宽度居中显示,后者则采用百分百. 响应式布局意味着媒体查询,响应式web设计并非新的技术, ...

  7. 提取html里面url()导入的图片正则表达式

    之前写过一次,后来无意发现还是有问题,比如 <a onclick="openZoosUrl('chatwin','param'); 这个click事件函数里面就有url()部分,造成了 ...

  8. ural 1500 Pass Licenses (状态压缩+dfs)

    1500. Pass Licenses Time limit: 2.5 secondMemory limit: 64 MB A New Russian Kolyan believes that to ...

  9. 数组,for语句(补10.11)

    1.数组定义:一系列通数据类型的数据集合. 2.数组赋值的两种方法: 先定义后赋值:(赋值从0开始) var aa = new Arrey(); aa[0] = 1; aa[1] = 2; 定义并赋值 ...

  10. ADT-Bundle--Android开发环境快速搭建

    http://blog.csdn.net/aizquan/article/details/8974750