現代前端開發離不開打包工具,以 webpack 為代表的打包工具已經成為日常開發必備之利器,拿 react 技術棧為例,我們 es6 形式的源**,需要經過 webpack 和 babel 處理,才能生成發布版檔案,在瀏覽器中執行。今天就結合 react 來梳理一下 webpack 打包時模組的組織結構,先給定下面乙個簡單的應用示例:
import react from 'react';
import reactdom from 'react-dom';
import from './utils';
**中的 utils 模組如下:
export function greet(name) `;
}
如果編譯該示例**,由於要將第三方庫一起打包,最終生成的目標**會比較多,所以我們先在 webpack.config.prod.js 中將 react 和 reactdom 配置為 externals,不將它們編譯到目標**中,而是在執行時直接從外部取值。配置如下:
entry: './src/index.js',
externals: ,
output: ,
module: ]},
};執行 webpack,生成的目標**如下:
(function (modules) ;
// 載入函式
function __webpack_require__(moduleid)
var module = installedmodules[moduleid] = ,
id: moduleid,
loaded: false
};// 呼叫模組函式 載入相應的模組
// 引數是(module, exports[, __webpack_require__])
modules[moduleid].call(module.exports, module, module.exports, __webpack_require__);
// 標記該模組已被載入
module.loaded = true;
// 最後也返回exports
return module.exports;
} // 暴露modules和installedmodules物件
__webpack_require__.m = modules;
__webpack_require__.c = installedmodules;
// __webpack_public_path__
__webpack_require__.p = "";
// 載入主模組
return __webpack_require__(0);
})/* 以下是模組列表 作為引數被載入 */
([ /* 0 主模組 */
(function (module, exports, __webpack_require__) ;
}// 開始渲染檢視
'h1',
null,
(0, _utils.greet)('scott')
);}),
/* 1 react模組 */
(function (module, exports) ),
/* 2 reactdom模組 */
(function (module, exports) ),
/* 3 utils模組 */
(function (module, exports) );
exports.greet = greet;
function greet(name)
})]);
上面就是基本的模組載入機制。其實,有了 externals 配置,我們也可以不在**中引入 react 和 react-dom,下面稍微修改一下**:
import from './utils';
轉譯後的**如下:
(function (modules) )
/* 以下是模組列表 作為引數被載入 */
([ /* 0 主模組 */
(function (module, exports, __webpack_require__) ),
/* 1 utils模組 */
(function (module, exports) );
exports.greet = greet;
function greet(name)
})]);
可以看到,**清晰了不少,主模組中直接呼叫 react.createelement() 來建立虛擬 dom 物件,最後呼叫 reactdom.render() 方法來渲染真實的 dom 結點。訪問下面的入口檔案,我們就可以看到程式執行的結果:
react webpack專案實際開發應用
1.知其然不知其所以然,你只會了jsx語法,卻只能照貓畫虎,卻不知道react背後的基礎知識,如果你連jsx最後會編譯成js都不知道,或者編譯成的js都讀不懂,那更不用談靈活擴充套件和開發了。2.乙個專案要想開發出來僅僅需要只知道react還需要知道很多知識,比如現在很多教程和專案都是webpack...
react webpack中js和css的引入
今天,打算寫第乙個頁面,結果遇到了些阻力,沒有想象的那麼簡單,有些特定的配置,還有元件的引用,還有css和js的載入模式。在index.js裡面引入元件模組 reactdom.render document.getelementbyid root 注意格式,index.html和之前的一樣 保留的 ...
產品模組 報表組的使用
新的模組 報表組的接觸 報表組的新建 報表組可以通過將系統已有報表新增到報表組的方式新建,也可以通過在報表組中直接新建報表項來建立。在進入報表組設計後還可以根據需要進行報表組中報表項的增 刪 改。報表組的查詢 對普通的報表可以使用通用查詢或引數表單對報表中的引數 資料集欄位進行查詢。報表組也同樣可以...