欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

用Browserify來(lái)實(shí)現(xiàn)CommonJS的瀏覽器加載

Nodejs的模塊是基于CommonJS規(guī)范實(shí)現(xiàn)的,可不可以應(yīng)用在瀏覽器環(huán)境中呢?

為固鎮(zhèn)等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及固鎮(zhèn)網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站制作、做網(wǎng)站、固鎮(zhèn)網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

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

第二行math.add(2, 3),在第一行require('math')之后運(yùn)行,因此必須等math.js加載完成。也就是說(shuō),如果加載時(shí)間很長(zhǎng),整個(gè)應(yīng)用就會(huì)停在那里等。這對(duì)

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

 

實(shí)現(xiàn)

Browserify是目前最常用的CommonJS格式轉(zhuǎn)換的工具

請(qǐng)看一個(gè)例子,b.js模塊加載a.js模塊

用Browserify來(lái)實(shí)現(xiàn)CommonJS的瀏覽器加載

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

用Browserify來(lái)實(shí)現(xiàn)CommonJS的瀏覽器加載

index.html直接引用b.js會(huì)報(bào)錯(cuò),提示require沒(méi)有被定義

用Browserify來(lái)實(shí)現(xiàn)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來(lái)實(shí)現(xiàn)CommonJS的瀏覽器加載

 用Browserify來(lái)實(shí)現(xiàn)CommonJS的瀏覽器加載

這時(shí),就要使用Browserify了

【安裝】

使用下列命令安裝browserify

npm install -g browserify

【轉(zhuǎn)換】

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

$ browserify b.js > bb.js

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

用Browserify來(lái)實(shí)現(xiàn)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來(lái)實(shí)現(xiàn)CommonJS的瀏覽器加載

index.html引用bb.js,控制臺(tái)顯示100

用Browserify來(lái)實(shí)現(xiàn)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來(lái)實(shí)現(xiàn)CommonJS的瀏覽器加載

用Browserify來(lái)實(shí)現(xiàn)CommonJS的瀏覽器加載

 

原理

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

$ npm install browser-unpack -g

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

$ browser-unpack < bb.js

用Browserify來(lái)實(shí)現(xiàn)CommonJS的瀏覽器加載

可以看到,browerify將所有模塊放入一個(gè)數(shù)組,id屬性是模塊的編號(hào),source屬性是模塊的源碼,deps屬性是模塊的依賴

因?yàn)閎.js里面加載了a.js,所以deps屬性就指定./a對(duì)應(yīng)1號(hào)模塊。執(zhí)行的時(shí)候,瀏覽器遇到require('./a')語(yǔ)句,就自動(dòng)執(zhí)行1號(hào)模塊的source屬性,并將執(zhí)行后的module.exports屬性值輸出

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

本文標(biāo)題:用Browserify來(lái)實(shí)現(xiàn)CommonJS的瀏覽器加載
文章出自:http://www.chinadenli.net/article22/jdhcjc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站ChatGPT網(wǎng)站營(yíng)銷網(wǎng)站收錄網(wǎng)站改版域名注冊(cè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)