前言:
之前使用ES6寫(xiě)代碼,webpack打包后上線,一點(diǎn)問(wèn)題沒(méi)有,也看過(guò)打包后的代碼,長(zhǎng)的很亂,也沒(méi)敢看看咋回事,加載后就是能運(yùn)行!
今天通過(guò)個(gè)例子理解一下打包前,和打包后的代碼!
1.創(chuàng)建文件夾,并在里面創(chuàng)建兩個(gè)文件夾,app文件夾和public文件夾,app文件夾用來(lái)存放原始數(shù)據(jù)和我們將寫(xiě)的JavaScript模塊,public文件夾用來(lái)存放之后供瀏覽器讀取的文件(包括使用webpack打包生成的js文件以及一個(gè) index.html 文件)。接下來(lái)我們?cè)賱?chuàng)建三個(gè)文件:
index.html --放在public文件夾中; Greeter.js -- 放在app文件夾中; main.js -- 放在app文件夾中;此時(shí)項(xiàng)目結(jié)構(gòu)如下圖所示
項(xiàng)目結(jié)構(gòu)
我們?cè)?index.html 文件中寫(xiě)入最基礎(chǔ)的html代碼,它在這里目的在于引入打包后的js文件(這里我們先把之后打包后的js文件命名為 bundle.js ,之后我們還會(huì)詳細(xì)講述)。
<!-- index.html --><!DOCTYPE html><html lang="en"> <head> <meta charset="utf-8"> <title>sample Project</title> </head> <body> <div id='root'> </div> <script src="bundle.js"></script> </body></html>
我們?cè)?Greeter.js 中定義一個(gè)返回包含問(wèn)候信息的 html 元素的函數(shù),并依據(jù)CommonJS規(guī)范導(dǎo)出這個(gè)函數(shù)為一個(gè)模塊:
// Greeter.jsexports.greet= function() { var greet = document.createElement('div'); greet.textContent = "Hi there and greetings!"; return greet;};exports.USER_INFO = "userInfo";main.js 文件中我們寫(xiě)入下述代碼,用以把 Greeter模塊 返回的節(jié)點(diǎn)插入頁(yè)面。
//main.js let {greeter,USER_INFO} =require('./Greeter.js');console.log(USER_INFO);document.querySelector("#root").appendChild(greeter());使用webpack打包后:
(function(modules){ var installedModules = {}; function __webpack_require__(moduleId) { if (installedModules[moduleId]) { return installedModules[moduleId].exports; } var module = installedModules[moduleId] = { i: moduleId, l: false, exports: {} }; modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); module.l = true; return module.exports; } __webpack_require__.m = modules; __webpack_require__.c = installedModules; __webpack_require__.d = function(exports, name, getter) { if (!__webpack_require__.o(exports, name)) { Object.defineProperty(exports, name, { configurable: false, enumerable: true, get: getter }); } }; __webpack_require__.n = function(module) { var getter = module && module.__esModule ? function getDefault() { return module['default']; }: function getModuleExports() { return module; }; __webpack_require__.d(getter, 'a', getter); return getter; }; __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; __webpack_require__.p = ""; return __webpack_require__(__webpack_require__.s = 0);})([(function(module, exports, __webpack_require__) { //main.js let { greeter, USER_INFO } = __webpack_require__(1); console.log(USER_INFO); document.querySelector("#root").appendChild(greeter());}),(function(module, exports) { // Greeter.js exports.greet = function() { var greet = document.createElement('div'); greet.textContent = "Hi there and greetings!"; return greet; }; exports.USER_INFO = "userInfo";})]);
新聞熱點(diǎn)
疑難解答
圖片精選