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 文件夹 ...
随机推荐
- 【LeetCode】259 3Sum Smaller
题目: Given an array of n integers nums and a target, find the number of index triplets i, j, k with 0 ...
- [hdu1269]迷宫城堡(SCC)
题意:求一张图的强连通分量,若为1,则输出yes,否则输出no. 解题关键:targin算法模板题. #include<iostream> #include<cstring> ...
- g2o中setparameterid(0,0)方法
其中两个参数的含义: 第二个参数是优化器内添加的参数的id.当你调用addEdge来添加这条边时,会根据第二个参数的id,把相应的参数地址给边,以后边内的成员函数,就根据第一个参数,拿到这个地址.
- POJ - 3037 Skiing SPFA
Skiing Bessie and the rest of Farmer John's cows are taking a trip this winter to go skiing. One day ...
- Android开发中,那些让你觉得相见恨晚的方法、类或接口
Throwable类中的getStackTrace()方法,根据这个方法可以得到函数的逐层调用地址,其返回值为StackTraceElement[],而在StackTraceElement类中有四个方 ...
- Python服务Debian打包新思路
此文已由作者张耕源授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. Debian 打包一直是比较冷僻的技术,大部分同学都不会接触到它. 但是我们 Debian 服务器上安装的各 ...
- Vue实现一个MarkDown编辑器
Vue实现一个markdown编辑器 前段时间做项目的时候,需要一个Markdown编辑器,在网上找了一些开源的实现,但是都不满足需求 说实话,这些开源项目也很难满足需求公司项目的需求,与其实现一个大 ...
- div内textarea 居中
textarea 实现div内居中,可以使用text-align:center,因其为行内元素.
- AtCoder Beginner Contest 052
没看到Beginner,然后就做啊做,发现A,B太简单了...然后想想做完算了..没想到C卡了一下,然后还是做出来了.D的话瞎想了一下,然后感觉也没问题.假装all kill.2333 AtCoder ...
- ue4 官网IK流程记录
基本流程 角色蓝图构造 角色蓝图 角色蓝图中新建的函数IK Foot Trace AnimGraph事件 这里注意下Make Vector时把z方向的偏移量设置到了X上 猜测原因是效应器的x方向跟世界 ...