前端打包工具

前端打包工具是一種將前端代碼進行轉換,壓縮以及合併等操作的程序工具。目前常見的有grunt,webpack等。

它能將我們前端人員寫得less,sass等編譯成css.將多個js文件合併壓縮成一個js文件。它的作用就是通過將代碼編譯、壓縮,合併等操作,來減少代碼體積,減少網絡請求。以及方便在服務器上運行。目前,會使用web前端打包工具是現代前端人員必備技能。

webpack

webpack是近期最火的一款模塊加載器兼打包工具,它能把各種資源,例如JS(含JSX)、coffee、樣式(含less/sass)、圖片等都作爲模塊來使用和處理。它將一堆文件中的每個文件都作爲一個模塊,找出它們的依賴關係,將它們打包爲可部署的靜態資源。

我們可以直接使用 require(XXX) 的形式來引入各模塊,即使它們可能需要經過編譯(比如JSX和sass),但我們無須在上面花費太多心思,因爲 webpack 有着各種健全的加載器(loader)在默默處理這些事情。

一個基本的例子,想像我們有一些 CommonJS 模塊,它們不能直接在瀏覽器中運行,所以我們需要打包成一個文件,這樣就可以通過 <script> 標籤加載。webpack 可以遵循 require() 調用的依賴關係,爲我們完成這些工作。

但是 webpack 可以做的不止這些。通過“loader”,我們可以配置 webpack 以任何方式去轉換所有類型的文件。包括以下例子:

  • 轉換 ES2015,CoffeeScript 或者 TypeScript 模塊爲普通的 ES5 CommonJS 模塊;
  • 可以選擇在編譯之前檢驗你的源代碼;
  • 將 Jade 模版轉換爲純 HTML 並且嵌入 Javascript 字符串中;
  • 將 Sass 文件轉換爲純 CSS,然後將其轉換成 JavaScript 片段,將生成的 CSS 作爲 <style> 標籤插入頁面;
  • 處理 HTML 或者 CSS 中引用的圖片,移動到配置的路徑中,並且使用 md5 hash 重命名。

當你理解 webpack 原理後會感覺它是如此強大,它可以大大優化你的前端工作流程。它主要的缺點是配置複雜麻煩。

webpack模塊引入

一. HTML

直接在頁面引入 webpack 最終生成的頁面腳本即可,不用再寫什麼 data-main 或 seajs.use 了:

<!DOCTYPE html>

<html>

<head
lang="en">

  <meta
charset="UTF-8">

  <title>demo</title>

</head>

<body>

  <script
src="dist/js/page/common.js"></script>

  <script
src="dist/js/page/index.js"></script>

</body>

</html>

可以看到我們連樣式都不用引入,畢竟腳本執行時會動態生成<style>並標籤打到head裏。

二. JS

各腳本模塊可以直接使用 commonJS 來書寫,並可以直接引入未經編譯的模塊,比如 JSX、sass、coffee等(只要你在 webpack.config.js 裏配置好了對應的加載器)。

我們再看看編譯前的頁面入口文件(index.js):

require('../../css/reset.scss'); //加載初始化樣式

require('../../css/allComponent.scss'); //加載組件樣式

var
React = require('react');

var
AppWrap = require('../component/AppWrap'); //加載組件

var
createRedux = require('redux').createRedux;

var
Provider = require('redux/react').Provider;

var
stores = require('AppStore');

var
redux = createRedux(stores);

var
App = React.createClass({

    render: function() {

        return
(

            <Provider redux={redux}>

                {function() { return
<AppWrap />; }}

            </Provider>

        );

    }

});

React.render(

    <App />, document.body

);

一切就是這麼簡單麼麼噠~ 後續各種有的沒的,webpack 都會幫你進行處理。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章