Nodejs的模块是基于CommonJS规范实现的,可不可以应用在浏览器环境中呢?
第二行math.add(2,3),在第一行require('math')之后运行,因此必须等math.js加载完成。也就是说,如果加载时间很长,整个应用就会停在那里等。这对服务器端不是一个问题,因为所有的模块都存放在本地硬盘,可以同步加载完成,等待时间就是硬盘的读取时间。但是,对于浏览器,这却是一个大问题,因为模块都放在服务器端,等待时间取决于网速的快慢,可能要等很长时间,浏览器处于"假死"状态
而browserify这样的一个工具,可以把nodejs的模块编译成浏览器可用的模块,解决上面提到的问题。本文将详细介绍Browserify
实现
Browserify是目前最常用的CommonJS格式转换的工具
请看一个例子,b.js模块加载a.js模块
// b.js
var result = require('./a');
console.log(result.a);
var result = require('./a');
console.log(result.a);
index.html直接引用b.js会报错,提示require没有被定义
<div class="jb51code">
<pre class="brush:xhtml;">
//index.html
<!DOCTYPE html>
<html lang="en">