亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

用Browserify來實現CommonJS的瀏覽器加載

發布時間:2020-05-25 15:12:40 來源:網絡 閱讀:379 作者:sshpp 欄目:網絡安全

 Nodejs的模塊是基于CommonJS規范實現的,可不可以應用在瀏覽器環境中呢?

var math = require('math');
math.add(2, 3);

  第二行math.add(2, 3),在第一行require('math')之后運行,因此必須等math.js加載完成。也就是說,如果加載時間很長,整個應用就會停在那里等。這對服務器端不是一個問題,因為所有的模塊都存放在本地硬盤,可以同步加載完成,等待時間就是硬盤的讀取時間。但是,對于瀏覽器,這卻是一個大問題,因為模塊都放在服務器端,等待時間取決于網速的快慢,可能要等很長時間,瀏覽器處于"假死"狀態

  而browserify這樣的一個工具,可以把nodejs的模塊編譯成瀏覽器可用的模塊,解決上面提到的問題。本文將詳細介紹Browserify

 

實現

  Browserify是目前最常用的CommonJS格式轉換的工具

  請看一個例子,b.js模塊加載a.js模塊

用Browserify來實現CommonJS的瀏覽器加載

// a.jsvar a = 100;
module.exports.a = a;// b.jsvar result = require('./a');
console.log(result.a);

用Browserify來實現CommonJS的瀏覽器加載

  index.html直接引用b.js會報錯,提示require沒有被定義

用Browserify來實現CommonJS的瀏覽器加載

//index.html<!DOCTYPE html><html lang="en"><head>
    <meta charset="UTF-8">
    <title>Document</title></head><body><script src="b.js"></script>    </body></html>

用Browserify來實現CommonJS的瀏覽器加載

 用Browserify來實現CommonJS的瀏覽器加載

  這時,就要使用Browserify了

【安裝】

  使用下列命令安裝browserify

npm install -g browserify

【轉換】

  使用下面的命令,就能將b.js轉為瀏覽器可用的格式bb.js

$ browserify b.js > bb.js

  查看bb.js,browserify將a.js和b.js這兩個文件打包為bb.js,使其在瀏覽器端可以運行

用Browserify來實現CommonJS的瀏覽器加載

(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){var a = 100;
module.exports.a = a;
},{}],2:[function(require,module,exports){var result = require('./a');
console.log(result.a);
},{"./a":1}]},{},[2]);

用Browserify來實現CommonJS的瀏覽器加載

  index.html引用bb.js,控制臺顯示100

用Browserify來實現CommonJS的瀏覽器加載

//index.html<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
<script src="bb.js"></script>    
</body>
</html>

用Browserify來實現CommonJS的瀏覽器加載

用Browserify來實現CommonJS的瀏覽器加載

 

原理

  Browserify到底做了什么?安裝一下browser-unpack,就能清楚原理了

$ npm install browser-unpack -g

  然后,使用下列命令,將前面生成的bb.js解包

$ browser-unpack < bb.js

用Browserify來實現CommonJS的瀏覽器加載

  可以看到,browerify將所有模塊放入一個數組,id屬性是模塊的編號,source屬性是模塊的源碼,deps屬性是模塊的依賴

  因為b.js里面加載了a.js,所以deps屬性就指定./a對應1號模塊。執行的時候,瀏覽器遇到require('./a')語句,就自動執行1號模塊的source屬性,并將執行后的module.exports屬性值輸出

  browerify將a.js和b.js打包,并生成bb.js,browser-unpack將bb.js解包,是一個逆向的過程。但實際上,bb.js依然存在


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

吉首市| 芜湖县| 延川县| 思南县| 苗栗县| 瓦房店市| 瑞安市| 瑞昌市| 集贤县| 密云县| 长阳| 凯里市| 虞城县| 饶阳县| 青海省| 唐河县| 长子县| 分宜县| 太白县| 霍州市| 青岛市| 永川市| 丰宁| 张家口市| 阜宁县| 保康县| 宜城市| 靖西县| 英德市| 巫山县| 吉安县| 嫩江县| 永善县| 肥城市| 宝清县| 黄平县| 永新县| 温泉县| 泸定县| 玉环县| 梓潼县|