React webpack模組組織關係

2022-07-06 18:48:09 字數 2439 閱讀 2923

現代前端開發離不開打包工具,以 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和之前的一樣 保留的 ...

產品模組 報表組的使用

新的模組 報表組的接觸 報表組的新建 報表組可以通過將系統已有報表新增到報表組的方式新建,也可以通過在報表組中直接新建報表項來建立。在進入報表組設計後還可以根據需要進行報表組中報表項的增 刪 改。報表組的查詢 對普通的報表可以使用通用查詢或引數表單對報表中的引數 資料集欄位進行查詢。報表組也同樣可以...