微信小程序使用第三方库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 相关文章推荐
animate动画示例(泪奔的小孩)及stop和delay的使用
May 06 Javascript
文本框中禁止非数字字符输入比如手机号码、邮编
Aug 19 Javascript
JavaScript监听和禁用浏览器回车事件实例
Jan 31 Javascript
AngularJS表单和输入验证实例
Nov 02 Javascript
详解js的延迟对象、跨域、模板引擎、弹出层、AJAX【附实例下载】
Dec 19 Javascript
jQuery事件详解
Feb 23 Javascript
浅谈vue,angular,react数据双向绑定原理分析
Nov 28 Javascript
vue2.0 根据状态值进行样式的改变展示方法
Mar 13 Javascript
vue 路由嵌套高亮问题的解决方法
May 17 Javascript
搭建一个Koa后端项目脚手架的方法步骤
May 30 Javascript
JavaScript中reduce()的5个基本用法示例
Jul 19 Javascript
利用JavaScript写一个简单计算器
Nov 27 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程序级守护进程的实现与优化的使用概述
2013/05/02 PHP
PHP正则表达式之捕获组与非捕获组
2015/11/06 PHP
PHP 中提示undefined index如何解决(多种方法)
2016/03/16 PHP
php连接MSsql server的五种方法总结
2018/03/04 PHP
javascript实现的像java、c#之类的sleep暂停的函数代码
2010/03/04 Javascript
ASP.NET jQuery 实例4(复制TextBox的文本到本地剪贴板上)
2012/01/13 Javascript
jQuery Form 页面表单提交的小例子
2013/11/15 Javascript
jQuery filter函数使用方法
2014/05/19 Javascript
浅谈javascript 函数内部属性
2015/01/21 Javascript
jQuery实现带渐显效果的人物多级关系图代码
2015/10/16 Javascript
基于javascript实现随机颜色变化效果
2016/01/14 Javascript
JavaScript对Json的增删改属性详解
2016/06/02 Javascript
详解Javascript函数声明与递归调用
2016/10/22 Javascript
Three.js基础部分学习
2017/01/08 Javascript
基于vue配置axios的方法步骤
2017/11/09 Javascript
详解bootstrap导航栏.nav与.navbar区别
2017/11/23 Javascript
JS动画定时器知识总结
2018/03/23 Javascript
在微信小程序里使用watch和computed的方法
2018/08/02 Javascript
详解@angular/cli 改变默认启动端口两种方式
2018/11/29 Javascript
vue实现动态按钮功能
2019/05/13 Javascript
iview form清除校验状态的实现
2019/09/19 Javascript
vue简单练习 桌面时钟的实现代码实例
2019/09/19 Javascript
js中script的上下放置区别,Dom的增删改创建操作实例分析
2019/12/16 Javascript
纯js+css实现在线时钟
2020/08/18 Javascript
jQuery实现鼠标拖动图片功能
2021/03/04 jQuery
python使用BeautifulSoup分析网页信息的方法
2015/04/04 Python
CentOS 6.5下安装Python 3.5.2(与Python2并存)
2017/06/05 Python
Python 和 JS 有哪些相同之处
2017/11/23 Python
Python如何用filter函数筛选数据
2020/03/05 Python
StubHub智利:购买和出售您的门票
2016/11/23 全球购物
俄罗斯最大的香水和化妆品网上商店:Randewoo
2020/11/05 全球购物
介绍一下代理模式(Proxy)
2014/10/17 面试题
JavaScript获取当前url根目录(路径)
2014/02/19 面试题
工厂门卫岗位职责
2013/11/25 职场文书
烹饪大赛策划方案
2014/05/26 职场文书
施工安全标语
2014/06/07 职场文书