nodejs模块学习: webpack
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的更多相关文章
- # nodejs模块学习: express 解析
# nodejs模块学习: express 解析 nodejs 发展很快,从 npm 上面的包托管数量就可以看出来.不过从另一方面来看,也是反映了 nodejs 的基础不稳固,需要开发者创造大量的轮子 ...
- nodejs模块学习: connect解析
nodejs模块学习: connect解析 nodejs 发展很快,从 npm 上面的包托管数量就可以看出来.不过从另一方面来看,也是反映了 nodejs 的基础不稳固,需要开发者创造大量的轮子来解决 ...
- nodejs模块学习: connect2解析
nodejs模块学习: connect2 解析 nodejs 发展很快,从 npm 上面的包托管数量就可以看出来.不过从另一方面来看,也是反映了 nodejs 的基础不稳固,需要开发者创造大量的轮子来 ...
- nodejs模块学习: express-session 解析
nodejs模块学习: express-session 解析 nodejs 发展很快,从 npm 上面的包托管数量就可以看出来.不过从另一方面来看,也是反映了 nodejs 的基础不稳固,需要开发者创 ...
- nodeJS学习(9)--- nodeJS模块:exports vs module.exports
模块简介: 通过Node.js的官方API可以看到Node.js本身提供了很多核心模块 http://nodejs.org/api/ 这些核心模块被编译成二进制文件,可以 require('模块名') ...
- 深入学习webpack(二)
深入学习webpack(二) 在深入学习webpack(一)中,我通过一个例子介绍了webpack的基本使用方法,下面将更为系统的学习webpack的基本概念,对于一门技术的掌握我认为系统化还是很重要 ...
- [译]开始学习webpack
写在前面: 文章翻译自petehunt大神的petehunt/webpack-howto,作为学习webpack的开始.fork了一份,翻译后的在这里https://github.com/zjzhom ...
- 深入学习webpack(一)
深入学习webpack(一) 模块化的相关库和工具已经很多了,包括require.js.sea.js和一些工程化工具webpack.gulp.grant.那么我们该如何选择呢? 其实,我们只需要掌握了 ...
- webpack4 学习 --- webpack和webpack-dev-server
以前了解过webpack2, 所以对webpack 不是很陌生,就直接入主题吧.新建一个文件夹,就叫它webpack-tut吧.然后在文件中新建一个src 文件夹,存放我们的源文件,再在src 文件夹 ...
随机推荐
- 「NOIP2017」「LuoguP3959」 宝藏(爆搜
题目描述 参与考古挖掘的小明得到了一份藏宝图,藏宝图上标出了 nn 个深埋在地下的宝藏屋, 也给出了这 nn 个宝藏屋之间可供开发的mm 条道路和它们的长度. 小明决心亲自前往挖掘所有宝藏屋中的宝藏. ...
- 浏览器关闭或刷新事件--window.onbeforeunload
window.onunload=function(){ //不可以阻止浏览器的刷新或者关闭 return false; } window.onbeforeunload=function(){ //可以 ...
- bzoj 4555 [Tjoi2016&Heoi2016] 求和 —— 第二类斯特林数+NTT
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4555 关于第二类斯特林数:https://www.cnblogs.com/Wuweizhen ...
- poj1050最大矩阵和——暴力枚举
题目:http://poj.org/problem?id=1050 s[i][j]数组记录以点(i,j)为右下角.(1,1)为左上角的子矩阵内部和: 枚举子矩阵左上角和右下角,取最大值即可. 代码如下 ...
- Openstack web 添加和删除按钮
注:当前已经时候用smaba将openstack环境的源码共享到windows系统上,并使用pycharm进行代码编辑和修改(参见openstack开发环境搭建).如下图:
- Collection与Map总结
顺序表和链表统称为线性表:顺序表一般表现为数组,如:ArrayList的实现;链表有单链表.双链表.循环链表的区分,如:LinkedArrayList由双链表+哈希表实现
- MFC编辑框数据实时更新问题
在VC里,很多情况下需要更新控件,也就是调用UpdateData(FALSE);但是如果是在循环中调用该函数,会导致没有时间来刷新界面,消息得不到相应,从外部看来,似乎整个循环只执行了一次Update ...
- asp.net mvc cookie超时返回登录页面问题
filterContext.HttpContext.Response.Write("<script>top.location.href = '/Login/Index';< ...
- 1.14不使用回车键来读取n个字符
read是一个重要的bash命令,它用于从键盘或标准输入中读取文本.可以使用read以交互的形式读取来自用户的输入,不过read能做的远不止这些.很多编程语言的输入库都是从键盘读取输入,且只有回车键按 ...
- Python:关于subprocess.stdout.read()导致程序死锁的问题
subprocess.stdout.read()导致程序死锁的问题解决 今天有位老哥联系我说,在我的python之路系列中,解决粘包问题那一章的代码有BUG 这里当运行命令过于庞大的时候,会导致程序直 ...