美文网首页
Webpack 笔记

Webpack 笔记

作者: Kyle_kk | 来源:发表于2017-06-20 15:59 被阅读0次

    什么是WEBPACK


    Webpack 是德国开发者 Tobias Koppers 开发的模块加载器兼打包工具,在webpack中,它能把各种资源,例如JS(含JSX)、coffee、样式(含less/sass)、图片等都作为模块来使用和处理。因此, Webpack 当中 js 可以引用 css, css 中可以嵌入图片 dataUrl。

    安装


    全局安装Webpack 和 Webpack-dev-server

    npm install -g webpack webpack-dev-server 

    创建Package.json

    npm init

    安装依赖

    npm install

    Webpack-dev-server 启动方法

    webpack-dev-server

    访问连接 : http://127.0.0.1:8080

    webpack-dev-server --port 3000 --hot --inline

    webpack配置文件


    entry:指入口文件的配置项,它是一个数组的原因是webpack允许多个入口点。 当然如果你只有一个入口的话,也可以直接使用双引号"./entry.js"

    output:配置打包结果,path定义了输出的文件夹,filename则定义了打包结果文件的名称

    module:定义了对模块的处理逻辑,这里可以用loaders定义了一系列的加载器,以及一些正则。当需要加载的文件匹配test的正则时,就会调用后面的loader对文件进行处理,这正是webpack强大的原因。loaders数组[] 从右往左处理. exclude不包括处理

    plugins: 插件可以完成更多loader不能完成的功能. webpack内置了一些常用的插件, 还可以通过npm安装第三方插件.

    resolve: extensions[""]

    webpack

    AMD 是 RequireJS 在推广过程中对模块定义的规范化产出。

    CMD 是 SeaJS 在推广过程中对模块定义的规范化产出。

    类似的还有 CommonJS Modules/2.0 规范,是 BravoJS 在推广过程中对模块定义的规范化产出。

    还有不少⋯⋯

    这些规范的目的都是为了 JavaScript 的模块化开发,特别是在浏览器端的。

    目前这些规范的实现都能达成浏览器端模块化开发的目的

    区别:

    1. 对于依赖的模块,AMD 是提前执行,CMD 是延迟执行。不过 RequireJS 从 2.0 开始,也改成可以延迟执行(根据写法不同,处理方式不同)。CMD 推崇 as lazy as possible.

    2. CMD 推崇依赖就近,AMD 推崇依赖前置。看代码:

    // CMD

    define(function(require, exports, module) {

    var a = require('./a')

    a.doSomething()

    // 此处略去 100 行

    var b = require('./b') // 依赖可以就近书写

    b.doSomething()

    // ...

    })

    // AMD 默认推荐的是

    define(['./a', './b'], function(a, b) {  // 依赖必须一开始就写好

    a.doSomething()

    // 此处略去 100 行

    b.doSomething()

    ...

    })

    虽然 AMD 也支持 CMD 的写法,同时还支持将 require 作为依赖项传递,但 RequireJS 的作者默认是最喜欢上面的写法,也是官方文档里默认的模块定义写法。

    3. AMD 的 API 默认是一个当多个用,CMD 的 API 严格区分,推崇职责单一。比如 AMD 里,require 分全局 require 和局部 require,都叫 require。CMD 里,没有全局 require,而是根据模块系统的完备性,提供 seajs.use 来实现模块系统的加载启动。CMD 里,每个 API 都简单纯粹

    相关文章

      网友评论

          本文标题:Webpack 笔记

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