微信小程序使用第三方库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 相关文章推荐
jquery获取input的value问题说明
Aug 19 Javascript
基于jquery的可多选的下拉列表框
Jul 20 Javascript
给超链接添加特效鼠标移动展示提示信息且随鼠标移动
Oct 17 Javascript
JS获得浏览器版本和操作系统版本的例子
May 13 Javascript
使用AngularJS 应用访问 Android 手机的图片库
Mar 24 Javascript
JQuery页面地址处理插件jqURL详解
May 03 Javascript
在JavaScript中访问字符串的子串
Jul 07 Javascript
js实现鼠标拖动功能
Mar 20 Javascript
jquery版轮播图效果和extend扩展
Jul 18 jQuery
JavaScript-定时器0~9抽奖系统详解(代码)
Aug 16 Javascript
vue移动端下拉刷新和上拉加载的实现代码
Sep 08 Javascript
关于AngularJS中几种Providers的区别总结
May 17 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
FireFox浏览器使用Javascript上传大文件
2013/10/30 PHP
php中的ini配置原理详解
2014/10/14 PHP
浅析php原型模式
2014/11/25 PHP
在WordPress中安装使用视频播放器插件Hana Flv Player
2016/01/04 PHP
PHP获取不了React Native Fecth参数的解决办法
2016/08/26 PHP
PHP 将dataurl转成图片image方法总结
2016/10/14 PHP
PHP简单读取xml文件的方法示例
2017/04/20 PHP
PHP7数组的底层实现示例
2019/08/25 PHP
js实现商品抛物线加入购物车特效
2020/11/18 Javascript
详解使用vuex进行菜单管理
2017/12/21 Javascript
在 Angular6 中使用 HTTP 请求服务端数据的步骤详解
2018/08/06 Javascript
nodejs微信开发之接入指南
2019/03/17 NodeJs
Node.js折腾记一:读指定文件夹,输出该文件夹的文件树详解
2019/04/20 Javascript
JS实现简单随机3D骰子
2019/10/24 Javascript
Js Snowflake(雪花算法)生成随机ID的实现方法
2020/08/26 Javascript
Python随机生成手机号、数字的方法详解
2017/07/21 Python
简单了解Django模板的使用
2017/12/20 Python
python对日志进行处理的实例代码
2018/10/06 Python
django迁移数据库错误问题解决
2019/07/29 Python
Python虚拟环境的创建和包下载过程分析
2020/06/19 Python
opencv 图像轮廓的实现示例
2020/07/08 Python
美国东北部户外服装和设备零售商:Eastern Mountain Sports
2016/10/05 全球购物
Ralph Lauren拉夫·劳伦美国官网:带有浓郁美国气息的高品味时装品牌
2017/11/01 全球购物
一级方程式赛车官方网上商店:F1 Store(支持中文)
2018/01/12 全球购物
TUMI香港官网:国际领先的行李箱、背囊品牌
2021/03/01 全球购物
东方通信股份有限公司VC面试题
2014/08/27 面试题
投标承诺书怎么写
2014/05/24 职场文书
品牌推广策划方案
2014/05/28 职场文书
青年教师师德演讲稿
2014/08/26 职场文书
党的群众路线教育实践活动对照检查材料(教师)
2014/09/24 职场文书
森马旗舰店双十一营销方案
2014/09/29 职场文书
2014年人力资源工作总结
2014/11/19 职场文书
2014年会计主管工作总结
2014/12/20 职场文书
PyCharm配置KBEngine快速处理代码提示冲突、配置命令问题
2021/04/03 Python
解决Tkinter中button按钮未按却主动执行command函数的问题
2021/05/23 Python
Nginx源码编译安装过程记录
2021/11/17 Servers