国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 語(yǔ)言 > JavaScript > 正文

JavaScript中使用import 和require打包后實(shí)現(xiàn)原理分析

2024-05-06 15:20:59
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

前言:

之前使用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";})]);            
發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 老河口市| 修文县| 宁远县| 额尔古纳市| 青岛市| 如皋市| 伊金霍洛旗| 天台县| 集安市| 新源县| 莱西市| 慈溪市| 海南省| 揭西县| 利津县| 桓仁| 南涧| 江永县| 稷山县| 瓮安县| 姜堰市| 湾仔区| 衡阳县| 宕昌县| 无锡市| 哈密市| 怀宁县| 新沂市| 佛教| 广丰县| 峡江县| 河源市| 玛纳斯县| 泗阳县| 云龙县| 扶绥县| 巴楚县| 通州区| 通许县| 仙桃市| 清镇市|