博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
node相关--代码共享
阅读量:5325 次
发布时间:2019-06-14

本文共 1163 字,大约阅读时间需要 3 分钟。

代码共享问题:

  • 是否值得在两个环境中运行同一份代码; //看项目
  • 依赖的API是否在两个环境中都有或有替代;
    • 浏览器提供的标准API:XMLHttpRequest、WebSocket、DOM、canvas等;
    • Node.js可加载的模块;

书写兼容的JS代码:

  • 导出模块://浏览器本身环境没有module全局变量;例子:
    • add.js: //在node和浏览器上都能运行;
      (function (module) {	module.exports = function (a, b) {		return a + b;	}	if ('undefined' != typeof window) {		window.add = module.exports;	}})('undefined' == typeof module ? { module: { exports: {}}} : module);
  • 模拟实现ECMA API://一些主流浏览器中的特性在其他浏览器和JS引擎中都没有
    • 扩展原型:好处在添加填补之后几乎不用修改源代码;缺点在会破坏原型,影响其他使用者;
    • 工具函数:定义简单的函数,接收原型对象作为参数如果该对象上的函数已经实现,直接使用;否则实现一次;优点是没有隐患,缺点是会代码冗长;
      var keys = Object.keys || function(obj) { ..........}
  • 模拟实现Node API: node社区书写了可以在所有环境中运行的Node API;  、
  • 模拟实现浏览器端 API:  现在已经模拟实现了包括、、、在内的多种node.js模块;

用browserbuild集成: //将以Node风格书写的代码编译为浏览器可执行的版本;

  • 例子:
    • 安装:全局, npm install -g browserbuild;
    • node.js代码:
      //log.jsmodule.exports = function(str) {	return console.log(str);}//main.jsvar log = require('./log');module.exports = function() {	log('Executed my module');}//node执行:var mymodule = require('./log');mymodule();
    • 编译:
      browserbuild  --main main --global mymodule main.js log.ja > out.js
    • 浏览器端使用:

 

转载于:https://www.cnblogs.com/jinkspeng/p/4131664.html

你可能感兴趣的文章
201621123031 《Java程序设计》第11周学习总结
查看>>
点击控件出现下沉或者倾斜技巧。(是你的控件不在死板,)
查看>>
转【算法之动态规划(三)】动态规划算法之:最长公共子序列 & 最长公共子串(LCS)&字符串相似度算法...
查看>>
关于 freetds pymssql 的安装部署
查看>>
利用U盘大白菜软件来重装win7系统
查看>>
ASP.NET播放Flash(.SWF)视频
查看>>
准备六一儿童节
查看>>
jQuery的prop和attr方法之间区别
查看>>
Python:格式化输出
查看>>
msp430项目编程
查看>>
一步一步学Silverlight 2系列(21):如何在Silverlight中调用JavaScript
查看>>
MyBatis 常用标签用法
查看>>
CentOS7 FTP安装与配置
查看>>
web页面数据验证提醒方式
查看>>
Latex入门
查看>>
python基础介绍,关于while,for,if介绍
查看>>
算法初步-排序
查看>>
矩阵翻转(上下,左右)
查看>>
剑指offer系列39:把字符串转换成整数
查看>>
cdoj1580 简单图论问题
查看>>