千家信息网

用Browserify来实现CommonJS的浏览器加载

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,Nodejs的模块是基于CommonJS规范实现的,可不可以应用在浏览器环境中呢?var math = require('math');math.add(2, 3);第二行math.add(2, 3)
千家信息网最后更新 2026年10月31日用Browserify来实现CommonJS的浏览器加载

 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模块

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

  index.html直接引用b.js会报错,提示require没有被定义

//index.html        Document    

  这时,就要使用Browserify了

【安装】

  使用下列命令安装browserify

npm install -g browserify

【转换】

  使用下面的命令,就能将b.js转为浏览器可用的格式bb.js

$ browserify b.js > bb.js

  查看bb.js,browserify将a.js和b.js这两个文件打包为bb.js,使其在浏览器端可以运行

(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

  index.html引用bb.js,控制台显示100

//index.html        Document    

原理

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

$ npm install browser-unpack -g

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

$ browser-unpack < bb.js

  可以看到,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依然存在


模块 浏览器 浏览 属性 时间 命令 问题 原理 工具 服务器 格式 硬盘 应用 服务 生成 运行 清楚 可不 一行 两个 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 哈尔滨大商圈互联网科技有限公司 河南云网互联网络科技有限公司 互联网科技有限公司经营范围 工业互联网科技新基建 互联网科技资迅 网络科技有限互联网 远拓互联网科技 互联网科技缩写 汇久创客互联网科技 广西拼得多互联网科技有限公司 互联网金融科技元年 锡山区互联网智能科技产品供应 深圳互联网科技的发展 厦门江牛科技互联网 卡尔迅互联网科技有限公司 普陀区互联网教育科技管理办法 互联网科技新闻 中国互联网公司的科技投入 安徽九吞吴互联网科技有限公司 互联网科技创业计划的风险分析 互联网科技园 科技创新与互联网经济 互联网金融公司科技 互联网科技媒体 互联网科技大会 美国互联网前沿科技 银川新华互联网科技职业技术培训学校图片 互联网企业科技类企业如何做账 广州智享互联网科技 第三届互联网大会安防黑科技
0