文章源自:http://blog.fens.me/nodejs-browserify/
从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发。Nodejs框架是基于V8的引擎,是目前速度最快的Javascript引擎。chrome浏览器就基于V8,同时打开20-30个网页都很流畅。Nodejs标准的web开发框架Express,可以帮助我们迅速建立web站点,比起PHP的开发效率更高,而且学习曲线更低。非常适合小型网站,个性化网站,我们自己的Geek网站!!
前言
Nodejs的出现,为Javascript开辟了一条新的大路,让Javascript获得了新生。虽然Nodejs也基于Javascript语法和解释器,但是前后端各自有各自的库,无法重用真的很不舒服。
Browserify 通过预编译的方法,让Javascript前端可以直接使用Node后端的程序。我们可以用一套代码完成前后端,不仅工作量变少了,程序重用性增强,还可以直接在浏览器中使用大量的NPM第三方开源库的功能。
Web时代,将是我们创新与创造的新起点。
目录
- Browserify介绍
- Browserify安装
- Browserify命令行参数
- 在浏览器中运行Nodejs程序
- 在浏览器中模块化调用Nodejs程序
1. Browserify介绍
Browserify的出现可以让Nodejs模块跑在浏览器中,用require()的语法格式来组织前端的代码,加载npm的模块。在浏览器中,调用browserify编译后的代码,同样写在<script>标签中。
用 Browserify 的操作,分为3个步骤。
- 1. 写node程序或者模块
- 2. 用Browserify 预编译成 bundle.js
- 3. 在HTML页面中加载bundle.js
Browserify 的发布页:http://browserify.org/
2. Browserify安装
Browserify安装: sudo npm install -g browserify
3. Browserify命令行参数
- –outfile, -o: browserify日志打印到文件
- –require, -r: 绑定模块名或文件,用逗号分隔
- –entry, -e: 应用程序的入口
- –ignore, -i: 省略输出
- –external, -x: 从其他绑定引入文件
- –transform, -t: 对上层文件进行转换
- –command, -c: 对上层文件使用转换命令
- –standalone -s: 生成一个UMB的绑定的接口,提供给其他模块使用。
- –debug -d: 激活source maps调试文件
- –help, -h: 显示帮助信息
高级命令:browserify --help advanced
- –insert-globals, –ig, –fast: 跳过检查,定义全局变量。[default:false]
- –detect-globals, –dg: 检查全局变量是否存在。 [default:true]<
- –ignore-missing, –im: 忽略require()函数。[default: false]
- –noparse=FILE: 不解析文件,直接build。
- –deps: 打印完整输出日志
- –list: 打印每个文件的依赖关系
- –extension=EXTENSION: 指名扩展名的文件做为模块加载,允许多次设置
4. Browserify使用:在浏览器中运行Nodejs程序
新建4个文件:
- multiply.js: 乘法计算
- square.js: 平方计算,依赖multiply.js
- index.js: node启动程序,调用square.js
- index.html: 用于显示的HTML网页
新建文件:multiply.js
module.exports = function (a, b) { console.log("js:multiply"); return a * b; };
新建文件:square.js
var multiply = require('./multiply'); module.exports = function (n) { console.log("js:square"); return multiply(n, n); };
新建文件:index.js
var square = require('./square'); console.log("js:index"); console.log(square(125));
在node环境中运行
node index.js
用browserify编译index.js文件到bundle.js
browserify index.js > bundle.js
新建文件:index.html
<!DOCTYPE html> <html> <head> <title>Browserify</title> <style>input{width:50px;}</style> </head> <body> <h1>Browserify</h1> <script src="bundle.js"></script> </body> </html>
在index.html中,我们加载刚才生成的bundle.js文件。
5. 在浏览器中模块化调用Nodejs函数
新建文件:
- multiply.js: 同上面的文件
- module.html: 用于显示的HTML网页
用browserify编译multiply.js文件到bundle.js,作为模块
browserify -r ./multiply.js > bundle.js
新建文件:module.html
<!DOCTYPE html> <html> <head> <title>Browserify</title> <style>input{width:50px;}</style> </head> <body> <form> <p> <input type="text" id="x" value="2"/> * <input type="text" id="y" value="3" /> = <span id="result"></span> </p> <input type="button" onclick="add()" value="M1"/> <input type="button" onclick="add2()" value="M2"/> </form> <script src="bundle.js"></script> <script> function add(){ var x = parseInt(document.querySelector('#x').value); var y = parseInt(document.querySelector('#y').value); console.log(x*y); document.querySelector('#result').innerHTML=x*y; } var m = require('/multiply.js'); function add2(){ var x = parseInt(document.querySelector('#x').value); var y = parseInt(document.querySelector('#y').value); console.log(m); console.log(x*y); document.querySelector('#result').innerHTML=m(x,y); } </script> </body> </html>
在浏览器中打开module.html:
- 点击M1,通过add1函数计算出6
- 点击M2,通过add2函数,调用bundle.js中的multiply.js的函数,计算出6
相关推荐
**Node.js浏览器化手册——利用Browserify构建模块化应用程序** 在现代前端开发中,JavaScript的模块化变得至关重要,尤其是在Node.js环境中。`browserify`是一个非常实用的工具,它允许我们在浏览器环境中使用Node...
这时,`browserify` 出现了,它是一个强大的工具,允许我们在浏览器中使用类似于 Node.js 的 CommonJS 模块化机制,将 Node.js 模块转换为可以在浏览器环境中运行的格式。 Browserify 的核心功能是将 Node.js 风格...
学习浏览器 Browserify 通过捆绑所有依赖项,让您在浏览器中使用 require('modules')。读网站: : 手册: : 基本示例atom main.js var unique = require ( 'uniq' ) ;var data = [ 1 , 2 , 2 , 3 , 4 , 5 , 5 , 5 , ...
NodeJS,NPM,JSON,节点模块,Browserify #JSON数据节点模块第1部分:使用NPM存储和分发静态数据以下文章是由两部分组成的系列文章的第一篇,该系列文章涵盖JSON数据节点模块以及如何在带有Browserify的浏览器中...
Browserify是JavaScript模块打包器,它允许开发者使用Node.js风格的`require`语法在浏览器环境中编写前端代码。 WebAssembly是一种低级虚拟机格式,旨在为各种编程语言提供高效的运行时性能。Rust作为一种系统级...
browserify将递归分析应用程序中的所有require()调用,以构建可在单个[removed]标签中投放到浏览器的捆绑软件。入门如果你是新来browserify,检查出上的资源 。例整理一个main.js文件, main.js包含一些require() ...
Browserify 可以让你使用类似于 node 的 require() 的方式来组织浏览器端的 Javascript 代码,通过预编译让前端 Javascript 可以直接使用 Node NPM 安装的一些库。 安装: npm install -g browserify 示例 这是 ...
浏览器与Node.js在模块加载上存在本质上的区别。Node.js环境下的模块是基于CommonJS规范实现的,它允许使用require()函数来加载模块,并且由于所有的模块都存放在本地硬盘,Node.js能够支持同步加载,整个应用的运行...
使用 Gulp 和 Browserify 以及其他东西的 Node.js 项目模板。 这个项目的灵感来自 包含的模块 浏览器化 引导程序 骨干 安装 将项目克隆到本地机器中 $ clone https://github.com/npatmaja/piring.git $ cd piring $...
`browserify-sign`是一个JavaScript库,它使得在浏览器环境中实现`createSign`和`createVerify`功能成为可能,这两个功能通常在Node.js环境中用于数字签名。这个库的目的是为了让Web开发者能够利用非对称加密技术,...
使用 Browserify 模块化您的 AngularJS 应用程序 提供的实时编码的来源 沥青 如果 Node.js 简单高效的模块系统可以改善我们前端开发人员... :应用程序根据 node / iojs 标准转换(并在浏览器中运行,感谢 Browserify)
标题“浏览器中运行节点:在浏览器上运行节点项目”揭示了一个独特的话题,即如何在Web浏览器环境下执行Node.js(简称“节点”)项目。通常,Node.js是在服务器端运行JavaScript的平台,但通过一些技术手段,我们...
使用 Browserify 模块化您的 AngularJS 应用程序 提供的实时编码的来源 沥青 如果 Node.js 简单高效的模块系统可以改善我们前端开发人员...:应用程序根据 node / iojs 标准转换(并在浏览器中运行,感谢 Browserify)
6. **serve-favicon**:这个中间件用于在Express.js或其他Node.js服务器上服务网站的favicon.ico文件,这是浏览器用来显示网站图标的一个小图像。 7. **utila**:这个模块可能提供了一些实用的工具函数,如Array、...
"DateHelper"是一个专门针对日期和时间戳转换的库,它支持在浏览器环境和Node.js环境中使用,这使得开发者在跨平台开发时能够有一致的日期处理体验。下面将详细探讨DateHelper库的特性、用法以及如何在实际项目中...
Browserify是用于Node.js应用程序的工具,它允许开发者在浏览器环境中使用CommonJS规范的模块化代码。通过将依赖关系树解析并转换为单一的可执行文件,Browserify使得在浏览器中使用require()函数变得可能,这在处理...
JS-Boy是一个基于JavaScript的项目,它利用Node.js和Browserify技术来实现一个在浏览器和Node环境中运行的Game Boy模拟器。这个模拟器允许用户在现代Web浏览器或Node环境下体验经典游戏男孩的游戏。 **一、...
Browserify是一个流行的JavaScript模块打包工具,它允许开发者使用Node.js的CommonJS模块语法在浏览器端编写代码。通过将依赖关系解析并合并成一个或多个bundle,Browserify使得模块化开发变得简单。 ### 3. svg-...
浏览器ify是JavaScript模块打包工具,它允许你在浏览器环境中使用Node.js的CommonJS模块化方式。在这个项目中,browserify被用来解决JavaScript应用中的模块依赖问题,将多个模块组合成一个可部署的单一文件。 3. ...
nw-build-test 使用 browserify 和 6to5 测试构建 node-webkit 应用程序从理论上讲,这应该有效,或者至少目前有效, clonenpm inpm i -g nwgulp (or gulp -d)nw还尝试使用 node-webkit-builder 进行构建(目前仅...