极速入门webpack

作者: _于易 | 来源:发表于2017-11-16 16:33 被阅读737次

纯新手向
在学习webpack之前,我们必须已经了解了,什么是前端模块化开发

每一个新手开发者去学习一项新的技术时,查阅官方文档,会发现文档里写的每一个字,自己都认识,但是连在一起就不认识了。 我在刚开始读webpack指南时就是这种感觉。现在我将自己对于webpack的认识写下来作为一点小总结。
对于为什么要用webpack,就不说了,它要做的事情就是把你需要的很多模块打包成一个,在webpack的概念里万物皆模块,就是说js,css,图片,字体,json等等,都看成模块。我们在本地直接写JS,不管是 CommonJS/ AMD / CMD / ES6 风格的模块化,它都能认识,并且编译成浏览器认识的JS,这就是为什么它被称为“预编译模块的方案”的原因。话不多说开始操作。

1.创建一个项目,在里面安装webpack

这个项目的结构是这样的,先用npm init创建一个package.json,然后里面创建两个文件夹,一个是项目的发布版本dist,另一个是开发时用的源代码src。
在里面分别创建相应的文件,留意src里有两个js,一个是main,另一个是一个js模块,在main里引用这个模块,来模拟工作时的情景。下面会讲到方法的。
其实webpack的功能就是把别的文件夹(src)里的模块打包到发布版dist里。
npm install --save-dev webpack命令安装。安装好之后应该是这样的项目结构

结构

2.如何实现打包?

在html里写上内容,最基本的那些,比如

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <div>hi</div>
    <script src="bundle.js"></script>
</body>
</html>

你会问这个引入的bundle.js是哪里来的?其实它就是webpack把资源都打包到这个bundle.js里了,它会在之后我们运行webpack时生成。我们只需引入它就完成了使用。
接下来在main.js里引入module模块。具体操作:
在module.js里写

module.exports = function () {
    var greet = document.createElement('div');
    greet.textContent = "Hi there and greetings!";
    return greet;
};

在main.js里写

const greeter = require('./module.js')
document.querySelector('#root').appendChild(greeter())

注意你可能会疑惑为什么要这么写?因为这是commonJS模块化的规范。它规定了创造和引入模块就要这么来做。用modelu.exports来暴露模块接口,用require来引用模块。

3.正式运行webpack

运行webpack有三种方式:

  1. 命令行命令路径
  2. 命令行命令配置文件
  3. 用npm script运行配置文件

第一种方式,在命令行里指定出入口。入口就是在哪获取需要打包的模块,出口就是在哪生成已完成的js。
在本例中,用node_modules/.bin/webpack src/main.js dist/bundle.js 运行之后你会发现dist里多了一个bundle.js,而预览index.html多了一行字Hi there and greeting! 我们成功了。
但是,总是在命令行里指定出入口未免不妥。
好在有第二种方法:把出入口写在配置文件里。
在test下新建一个webpack.config.js 这是我们的配置文件,在里面写:

module.exports = {
  entry:  __dirname + "/app/main.js",//已多次提及的唯一入口文件
  output: {
    path: __dirname + "/public",//打包后的文件存放的地方
    filename: "bundle.js"//打包后输出文件的文件名
  }
}

运行webpack时在终端敲node_modules/.bin/webpack,无需设置出入口了。这样子是方便了一点,但还有更方便的办法。
第三种方法,用npm script。在package.json里修改

{
 {
  "name": "test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build":"webpack"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "webpack": "^3.8.1"
  }
}

然后终端里只需输入npm run build (~ ̄▽ ̄)→)) ̄▽ ̄)o打包好了!

这里我们已经大致了解了webpack的基本工作原理和操作过程,其实webpack的功能远不止此。它还有构建本地服务器,生成source map来调试程序,打包css,图片等一系列功能。但是你明白了webpack是什么东西,它怎么用之后,这些都是一些扩展了,无非是下载一些插件,又在webpack.config.js里添加参数就行了。

这里是官方文档,便于查阅 webpack中文文档

相关文章

网友评论

    本文标题:极速入门webpack

    本文链接:https://www.haomeiwen.com/subject/iidlvxtx.html