webpack--简单入门(2)

1.介绍

webpack仅仅只支持本地的javascript模块,但是像CSS,LESS,TypeScript,JSX,CoffeeScript,图片等静态文件模块,我们是可以通过模块加载器(webpack-loader)来统一管理的。Loader 可以理解为是模块和资源的转换器,它本身是一个函数,接受源文件作为参数,返回转换的结果。loaders之间是可以串联的,一个加载器的输出可以作为下一个加载器的输入,最终返回到JavaScript上。

2.安装

找到需要加载的语言 例如 json
我们点击json 进去到loader-json github 进行安装

3.使用 

创建一个上个博客一样的项目骨架。
安装需要的依赖:
$npm install  css-loader style-loader --save-dev
 
 
 
//package.json
{
  "name": "demo1",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "mnixu",
  "license": "ISC",
  "devDependencies": {
    "css-loader": "^0.23.1",
    "style-loader": "^0.13.1",
    "webpack": "^1.13.1"
  }
}
 
 
新建main.js:
//main.js
require('./style.css')

新建style.css:
//style.css
body {
    background: blue;
}

新建index.html:
//index.html
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script type="text/javascript" src="bundle.js"></script>
</head>
<body>
    <h1>hello world</h1>
</body>
</html>

新建webpack.config.js:
module.exports = { 
  entry: './main.js',
  output: {
    filename: 'bundle.js'
  },
  module:{
      loaders:[
        { 
            test: /\.css$/,
            exclude: /node_modules/,     //编译除了node_modules文件夹以外的
            loader: 'style-loader!css-loader' //感叹号连接两个加载器,css-loader解析css文件 style-loader插入样式到html页面中
        },
      ]
  }
}

进行打包 看到我们的页面背景变成蓝色了。

4.插件

在webpack中我们可以通过使用插件来满足某些需求,例如我们可以用 UglifyJs Plugin 来输出一个压缩的文件
因为 UglifyJs Plugin是webpack自带的插件 我们不需要依赖模块,但是在使用其他的插件时,我们可能需要依赖模块:
//index.html
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <script type="text/javascript" src="bundle.js"></script>
</body>
</html>

//main.js
var thisIsLongName = "haha";
thisIsLongName += ' minixu' ;
document.write('<h1>' + thisIsLongName + '</h1>');

//webpack.config.js
var webpack = require('webpack');
module.exports = {
    entry: './main.js',
    output: {
        filename: 'bundle.js'
    },
    plugins: [
        new webpack.optimize.UglifyJsPlugin({
        compress: {
            warnings: false
        }
        })
    ]
}
进行打包后发现我们的bundle.js果然被压缩了!

插件列表 http://webpack.github.io/docs/list-of-plugins.html

5.开发工具

webpack-dev-server 是一个小型的node.js的express服务,它能在我们改变代码后不用重新去执行webpack命令,实现自动更新代码,并且最厉害的是它通过socket.io服务实时监听我们的代码,当它们改变的时候,浏览器会自动进行刷新!
全局安装:
$npm install webpack-dev-server -g
运行:
webpack-dev-server
运行我们刚刚的项目:

它会启动一个服务,我们可以通过浏览器访问  http://localhost:8080/webpack-dev-server/
会看到 顶部有App ready status 栏 ,如果想去掉它可以 使用 webpack-dev-server --inline 去启动服务。
其实浏览器打开  http://localhost:8080/ 也是能访问这个服务的,但是不会有热加载效果

注意:这个dev server会将打包生成的文件存在内存中,而不是硬盘里,所以,并不能看到生成的bundle.js。
如果你需要这个文件,你还是得需要输入webpack命令打包。

6.结语

在这里我们只是简单的把这个服务启动起来,没有进行任何配置,但是使用webpack-dev-server最好还是需要一些配置,
否则会出现一些问题,这些在之后的文章中会涉及到!
 





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值