前言

demo 地址: https://github.com/yy8597/webpack-demos

之前学习了 broswerify,发现确实很好用。虽然没有 grunt 那样丰富的配置和插件,但就是觉得“恩!这就是我想要的结构”。

webpack 感觉就是 broswerify 的进阶版,怎么说呢:

  • 有更多可配置内容
  • 比起 broswerify 一股脑得打成单包更智能。

官方介绍

安装

npm install webpack -g

-g 方便我们在命令行直接使用 webpack

使用

基本命令 demo1

首先建立两个文件

//entry.js
document.write("It works."); //index.html
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<script type="text/javascript" src="bundle.js" charset="utf-8"></script>
</body>
</html>

执行 webpack

$ webpack ./entry.js bundle.js

生成 bundle.js,然后打开 index.html 就可以看到

It works.

添加依赖 demo2

增加一个文件

//content.js
module.exports = "It works from content.js.";

我们修改 entry.js 加载 content.js 的内容

//document.write("It works.");
document.write(require("./content.js"));

同样执行

$ webpack ./entry.js bundle.js

在浏览器中看到

It works from content.js.

done~

webpack 分析你的入口文件(entry.js)所依赖的其他文件(模块),这些文件都会被打包到 bundle.js中。webpack 会分配给每个模块一个唯一的 Id,在 bundle.js 中通过这个 Id 来访问每个模块。在程序启动的时候只会处理入口模块(entry.js), require 方法会在执行时即时地处理依赖模块。

打包 css demo3

webpack 只能处理 javascript,要处理 css 就需要安装css-load来转换 css 为 js,还要安装style-loader 将转换后的 css 加载到 dom 中。

WHAT ARE LOADERS?

$npm install css-loader style-loader --save

接着增加 css 文件

body {
background: yellow;
}

修改 entry.js,然后就能看到效果

require("!style!css!./style.css");
document.write(require("./content.js"));

同样执行

$ webpack ./entry.js bundle.js
It works from content.js.

通过 “!style!css!” 这样的前缀,可以把文件进行一系列的转化,最终变成 javascript 的一个模块。

命令行绑定 loaders

如果我们不想写过长的 require : require("!style!css!./style.css");,简化为require("./style.css")

或者我们喜欢灵活定制 css 文件的转化方式。

修改 entry.js

//require("!style!css!./style.css");
require("./style.css");
document.write(require("./content.js"));

执行下面的命令:

$ webpack ./entry.js bundle.js --module-bind "css=style\!css"

官网说明在这有个错误,css=style\!css 里面少了个反斜杠,原因是叹号在 bash 里有特殊意义

It works from content.js.

添加 webpack.config.js demo4

理解了上面的 demo 以后,接下来我们就可以在项目根目录下新建一个webpack.config.js ,然后通过一句命令$ webpack就能打包我们的项目。

//webpack.config.js
module.exports = {
entry: "./entry.js",
output: {
path: __dirname,
filename: "bundle.js"
},
module: {
loaders: [
{ test: /\.css$/, loader: "style!css" }
]
}
};

webpack 命令会尝试读取同目录中的 webpack.config.js 文件。

And More

还可以通过一些参数使得打包过程可视化

$ webpack --progress --colors

--progress 打印打包日志

--colors -c 带颜色的日志(官方是这么描述的,但我没看到颜色...)

当然还有 watch 功能

$ webpack --progress --colors --watch

必须的要有 server

$ npm install webpack-dev-server -g
$ webpack-dev-server --progress --colors

~ 完 ~

这里只是介绍了 webpack 基本的用法

demo 基本都是翻译自webpack/getting-started

更多详细和进阶的内容还是推荐去官网看看

参考

学习笔记 一步步了解webpack的更多相关文章

  1. webpack学习笔记一:安装webpack、webpack-dev-server、内存加载js和html文件、loader处理非js文件

    一 .webpack学习环境准备: 1:window系统 2:安装node.js  官方网址 下载好后下一步下一步安装即可 安装步骤略过....... 3:nrm的安装 打开cmd命令控制台 输入:n ...

  2. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  3. Webpack新手入门教程(学习笔记)

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: center; font: 30.0px Helvetica; color: #000000 } ...

  4. Webpack4 学习笔记一初探Webpack

    前言 此内容是个人学习笔记,以便日后翻阅.非教程,如有错误还请指出 Webpack 打包文件 支持JS模块化 模式: production(0配置默认), development(生产环境) 更详细的 ...

  5. 更博不能忘——webpack学习笔记

    webpack是前端构建系统就像grunt和gulp(之前有学习过grunt所以也就大概明白webpack是个什么东西),所以说前端技术大部分还真是相通的,现在觉得当时多看的东西并不白费,虽然长时间不 ...

  6. VueJs 学习笔记

    VueJs学习笔记 参考资料:https://cn.vuejs.org/ 特效库:TweenJS(补间动画库)  VelocityJS(轻量级JS动画库) Animate.css(CSS预设动画库) ...

  7. WeX5学习笔记

    目录 WeX5学习笔记... 1 1.轻松看透WeX5产品能力和技术... 1 2.WeX5可以怎么玩?... 3 一.纯本地App. 3 二.关联一个网站,希望默认就打开某页... 4 三.UI设计 ...

  8. Vue.js学习笔记(2)vue-router

    vue中vue-router的使用:

  9. RAC学习笔记

    RAC学习笔记 ReactiveCocoa(简称为RAC),是由Github开源的一个应用于iOS和OS开发的新框架,Cocoa是苹果整套框架的简称,因此很多苹果框架喜欢以Cocoa结尾. 在学习Re ...

随机推荐

  1. 熬之滴水穿石:Spring--精简的J2EE(6)

                                           48--曾用过的View 在Spring MVC架构中View实际上是有多种选择的.JSP是首选的view,实际上在J2E ...

  2. STM32W108无线传感器网络嵌入式uCOS-II的移植及实时环境监測

    基于STM32W108无线开发板,将ucos-ii v2.86内核移植到其上,并加入用户任务.实现对温湿度.超声波.声音.光敏等传感器的控制及实时数据採集. 14.1开发环境说明 硬件:STM32W1 ...

  3. RTF 格式 说明

    摘要: 本文对RTF文件格式进行分析研究,对RTF文件结构及特性进行了阐述,并分别列举了几个有用性的样例进行具体分析, 终于通过VB程序代码实现了一个RTF书写器(不具有所见即所得特性).本文对软件开 ...

  4. Angularjs 基于karma和jasmine的单元测试

    目录: 1. 单元测试的配置 2. 实例文件目录解释 3. 测试controller     3.1 测试controller中变量值是否正确     3.2 模拟http请求返回值,测试$http服 ...

  5. hibernate 批量处理数据

    批量处理数据是指处理大量数据的一个单独的事务. 在应用层批处理操作, 主要有以下方式: 通过 Session 通过 HQL 通过 StatelessSession 通过 JDBC API(仅仅要会用这 ...

  6. 演示基于SDL2.0+FFmpeg的播放器

    SDL是一个跨平台的渲染组件,眼下已经推出到2.0.3版本号,支持Win/Linux/OSX/Android.网上非常多介绍大多是基于SDL1.2版本号的,与2.0版本号有一定的区别,本文演示怎样用S ...

  7. WPF 引用DLL纯图像资源包类库中的图片

    原文:WPF 引用DLL纯图像资源包类库中的图片 1.建立WPF应用程序              过程略.   2.创建类库项目(图片资源包)       创建图片资源类库项目MyImages,删除 ...

  8. 如何:使用 Visual Studio 中的一键式发布来部署 Web 应用程序项目

    原文: 如何:使用 Visual Studio 中的一键式发布来部署 Web 应用程序项目 本主题介绍如何在以下产品中使用 一键式发布 发布(部署)Web 应用程序项目: Visual Studio ...

  9. C++primer读书笔记9-转换和类类型

    有时指定自己的类类型来表示某些类型的数据,如SmallInt,然后在为了便于计算将指定一个转换算,类类型,在某些情况下,自己主动转换为指定的类型 <1>转换操作符 operator typ ...

  10. TCP拥塞控制 (1)

    Basic: TCP,传输控制协定,它是目前最广泛使用的网络传输协议.SMTP.SSH.FTP.HTTP等因特网底层协议均是TCP. TCP面向连接,提供端到端的数据可靠传输.连接时三次握手.断开是四 ...