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. Python 2.7数据类型操作_20161010

    为兼容python3.x版本 print 后都加了括号 python 数据类型 参考廖雪峰大神python2.7教程 http://www.liaoxuefeng.com/wiki/001374738 ...

  2. 谈"零缺陷"

    在刚参加工作初期的一次关于质量的培训中,第一次听到"零缺陷"这个词懵懵懂懂,当成一道概念题给记下.今年重读<质量免费>时对与零缺陷的部分始终心存疑虑,最近读<第一 ...

  3. 「LOJ#10036」「一本通 2.1 练习 2」Seek the Name, Seek the Fame (Hash

    题目描述 原题来自:POJ 2752 给定若干字符串(这些字符串总长 ≤4×105 \le 4\times 10^5 ≤4×105),在每个字符串中求出所有既是前缀又是后缀的子串长度. 例如:abab ...

  4. svn 操作手册

    1.执行下列指令安装    sudo apt-get install subversion   2.  创建版本库       sudo mkdir /home/svn    sudo mkdir / ...

  5. sql基础内容2

    -- day16课程内容 --CREATE DATABASE day16;USE day16; -- *************一.数据约束********************------ 1.1 ...

  6. shell 统计词频脚本

    #!/bin/bash if [ $# -ne 1 ]; then echo "Usage:$0 filename"; exit -1 fi filename=$1 egrep - ...

  7. PKI标准、CA采取的规范、X509、PKCS

    PKI:Public Key Infrastructure 公钥基础设施 PKI标准可以分为第一代和第二代标准. 第一代PKI标准主要包括美国RSA公司的公钥加密标准(Public Key Crypt ...

  8. gin-swagger包Api文档生成, Post请求参数无法接收, 问题修复。

    Bug描述 FormData方式下,任意参数类型都只生成file参数类型. 问题重现 问题代码在这一行 github.com\swaggo\swag\operation.go : 131 line c ...

  9. swfupload原理总结

    1.引入js(js内动态添加上传的文件并提交表单) 2.后台处理(将图片保存) 3.调用另一个js修改前台图片的地址(改为新的图片地址)

  10. zookeeper原理与实践(一)----zookeeper的基本功能

    我们现在围绕两个问题来学习zookeeper: 什么是zookeeper? zookeeper基础知识 什么是zookeeper: zookeeper是hadoop下面的一个子项目,是一个分布式协调服 ...