微信小程序使用第三方库Immutable.js实例详解


Posted in Javascript onSeptember 27, 2016

前言

Immutable JS 提供一个惰性 Sequence,允许高效的队列方法链,类似 map 和 filter ,不用创建中间代表。immutable 通过惰性队列和哈希映射提供 Sequence, Range, Repeat, Map, OrderedMap, Set 和一个稀疏 Vector。

微信小程序无法直接使用require( 'immutable.js' )进行调用,需要对下载的Immutable代码进行修改,才能使用。

原因分析

Immutable使用了UMD模块化规范

(function (global, factory) {
 typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
 typeof define === 'function' && define.amd ? define(factory) :
 (global.Immutable = factory());
}(this, function () { 'use strict';var SLICE$0 = Array.prototype.slice;

....

}));

UMD的实现很简单,先判断是否支持Node.js(CommonJS)模块规范,存在则使用Node.js(CommonJS)方式加载模块。再判断是否支持AMD,存在则使用AMD方式加载模块。前两个都不存在,则将模块公开到全局。

exports、module必须都有定义,才能以CommonJS加载模块。通过测试,微信小程序运行环境exports、module并没有定义。

解决方法

修改Immutable代码,注释原有模块导出语句,使用module.exports = factory() 强制导出

(function(global, factory) {
 /*
 typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
 typeof define === 'function' && define.amd ? define(factory) :
 (global.Immutable = factory());
 */

 module.exports = factory();

}(this, function() {

使用Immutable.js

//index.js

var Immutable = require( '../../libs/immutable/immutable.modified.js' );

//获取应用实例
var app = getApp();

Page( {

 onLoad: function() {
 //console.log('onLoad');
 var that = this;

 var lines = [];

 lines.push( "var map1 = Immutable.Map({a:1, b:2, c:3});" );
 var map1 = Immutable.Map({a:1, b:2, c:3});
 lines.push( "var map2 = map1.set('b', 50);" );
 var map2 = map1.set('b', 50);
 lines.push( "map1.get('b');" );
 lines.push(map1.get('b'));
 lines.push( "map2.get('b');" );
 lines.push(map2.get('b')); 

 this.setData( {
  text: lines.join( '\n' )
 })
 }
})

微信小程序使用第三方库Immutable.js实例详解

总结

以上就是这篇文章的全部内容了,希望能对大家的学习或者工作带来一定的帮助,如果有疑问大家可以留言交流。

Javascript 相关文章推荐
js prototype截取字符串函数
Apr 01 Javascript
javascript 基础篇4 window对象,DOM
Mar 14 Javascript
jQuery实现炫酷的鼠标轨迹特效
Feb 01 Javascript
jquery 实现输入邮箱时自动补全下拉提示功能
Oct 04 Javascript
JavaScript中ES6 Babel正确安装过程
Jul 18 Javascript
jQuery 判断是否包含在数组中Array[]的方法
Aug 03 Javascript
老生常谈jacascript DOM节点获取
Apr 17 Javascript
JS获取指定月份的天数两种实现方法
Jun 22 Javascript
Vue中JS动画与Velocity.js的结合使用
Feb 13 Javascript
微信小程序渲染性能调优小结
Jul 30 Javascript
vue-cli4项目开启eslint保存时自动格式问题
Jul 13 Javascript
详解JavaScript 作用域
Jul 14 Javascript
微信小程序 在Chrome浏览器上运行以及WebStorm的使用
Sep 27 #Javascript
微信小程序 开发指南详解
Sep 27 #Javascript
纯JavaScript 实现flappy bird小游戏实例代码
Sep 27 #Javascript
jQuery实现表格文本框淡入更改值后淡出效果
Sep 27 #Javascript
angular基于路由控制ui-router实现系统权限控制
Sep 27 #Javascript
IOS中safari下的select下拉菜单文字过长不换行的解决方法
Sep 26 #Javascript
javascript动画之模拟拖拽效果篇
Sep 26 #Javascript
You might like
PHP实现搜索地理位置及计算两点地理位置间距离的实例
2016/01/08 PHP
jquery each()源代码
2011/02/14 Javascript
jQuery侧边栏随窗口滚动实现方法
2013/03/04 Javascript
jquery淡化版banner异步图片文字效果切换图片特效
2014/04/08 Javascript
HTML页面弹出居中可拖拽的自定义窗口层
2014/05/07 Javascript
JQEasy-ui在IE9以下版本中二次加载的问题分析及处理方法
2014/06/23 Javascript
简单方法判断JavaScript对象为null或者属性为空
2014/09/26 Javascript
简化版手机端照片预览组件
2015/04/13 Javascript
php常见的页面跳转方法汇总
2015/04/15 Javascript
轻松掌握jQuery中wrap()与unwrap()函数的用法
2016/05/24 Javascript
JS控制层作圆周运动的方法
2016/06/20 Javascript
jQuery Dialog 取消右上角删除按钮事件
2016/09/07 Javascript
Angular2 环境配置详细介绍
2016/09/21 Javascript
纯js实现倒计时功能
2017/01/06 Javascript
vue如何集成raphael.js中国地图的方法示例
2017/08/15 Javascript
vue axios post发送复杂对象问题
2019/06/04 Javascript
小程序跳转H5页面的方法步骤
2020/03/06 Javascript
[01:10]DOTA2亚洲邀请赛 征战号角响彻全场
2015/01/06 DOTA
[03:00]2018完美盛典_最佳英雄奖
2018/12/17 DOTA
Python中的index()方法使用教程
2015/05/18 Python
Python简单读取json文件功能示例
2017/11/30 Python
Python 实现引用其他.py文件中的类和类的方法
2018/04/29 Python
Python列表推导式与生成器用法分析
2018/08/02 Python
用Python实现数据的透视表的方法
2018/11/16 Python
django 外键model的互相读取方法
2018/12/15 Python
浅谈django不使用restframework自定义接口与使用的区别
2020/07/15 Python
css3 伪类选择器快速复习小结
2019/09/10 HTML / CSS
h5封装下拉刷新
2020/08/25 HTML / CSS
希尔顿酒店中国网站:Hilton中国
2017/03/11 全球购物
教师自荐信
2013/12/10 职场文书
关于逃课的检讨书
2014/01/23 职场文书
计算机毕业生自荐信范文
2014/03/23 职场文书
计生专干事迹
2014/05/28 职场文书
三严三实·严以修身心得体会
2016/01/15 职场文书
redis实现排行榜功能
2021/05/24 Redis
详解MongoDB排序时内存大小限制与创建索引的注意事项
2022/05/06 MongoDB