微信小程序使用第三方库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原生态函数中使用jQuery中的 $(this)无效的解决方法
May 25 Javascript
JS仿flash上传头像效果实现代码
Jul 18 Javascript
jQuery图片的展开和收缩实现代码
Apr 16 Javascript
js实现可得到不同颜色值的颜色选择器实例
Feb 28 Javascript
原生JavaScript实现滚动条效果
Mar 24 Javascript
BootStrap 获得轮播中的索引和当前活动的焦点对象
May 11 Javascript
老生常谈Bootstrap媒体对象
Jul 06 Javascript
Vue底层实现原理总结
Feb 17 Javascript
vue项目中使用百度地图的方法
Jun 08 Javascript
微信小程序实现类似微信点击语音播放效果
Mar 30 Javascript
JS实现星星海特效
Dec 24 Javascript
js实现图片实时时钟
Jan 15 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
header跳转和include包含问题详解
2012/09/08 PHP
使用php记录用户通过搜索引擎进网站的关键词
2014/02/13 PHP
PHP判断手机是IOS还是Android
2015/12/09 PHP
yii2超好用的日期组件和时间组件
2016/05/05 PHP
php使用函数pathinfo()、parse_url()和basename()解析URL
2016/11/25 PHP
php session的应用详细介绍
2017/03/22 PHP
详解PHP5.6.30与Apache2.4.x配置
2017/06/02 PHP
PHP封装请求类实例分析【基于Yii框架】
2019/10/17 PHP
document.getElementById的简写方式(获取id对象的简略写法)
2010/09/10 Javascript
深入理解JavaScript系列(3) 全面解析Module模式
2012/01/15 Javascript
利用js的Node遍历找到repeater的一个字段实例介绍
2013/04/25 Javascript
js和jquery设置disabled属性为true使按钮失效
2014/08/07 Javascript
如何利用JS通过身份证号获取当事人的生日、年龄、性别
2016/01/22 Javascript
理解js对象继承的N种模式
2016/01/25 Javascript
Angularjs实现搜索关键字高亮显示效果
2017/01/17 Javascript
阿里大于短信验证码node koa2的实现代码(最新)
2017/09/07 Javascript
Vue2.0实现组件之间数据交互和通信操作示例
2019/05/16 Javascript
Django使用Celery异步任务队列的使用
2018/03/13 Python
selenium+python实现1688网站验证码图片的截取功能
2018/08/14 Python
python中数组和矩阵乘法及使用总结(推荐)
2019/05/18 Python
Python制作微信好友背景墙教程(附完整代码)
2019/07/17 Python
使用OpenCV实现仿射变换—旋转功能
2019/08/29 Python
基于Python实现船舶的MMSI的获取(推荐)
2019/10/21 Python
全网首秀之Pycharm十大实用技巧(推荐)
2020/04/27 Python
推荐WEB开发者最佳HTML5和CSS3代码生成器
2015/11/24 HTML / CSS
Kaufmann Mercantile官网:家居装饰、配件、户外及更多
2018/09/28 全球购物
手工制作的豪华英式沙发和沙发床:Willow & Hall
2019/05/03 全球购物
如何利用cmp命令比较文件
2016/04/11 面试题
吃空饷专项治理工作实施方案
2014/03/04 职场文书
工程建设实施方案
2014/03/14 职场文书
装修协议书范本
2014/04/21 职场文书
贷款承诺书范文
2014/05/19 职场文书
Python读取文件夹下的所有文件实例代码
2021/04/02 Python
Python中的套接字编程是什么?
2021/06/21 Python
vue本地构建热更新卡顿的问题“75 advanced module optimization”完美解决方案
2022/08/05 Vue.js
win10拖拽文件时崩溃怎么解决?win10文件不能拖拽问题解决方法
2022/08/14 数码科技