微信小程序使用第三方库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弹出层始终垂直居中相对于屏幕或当前窗口
Apr 01 Javascript
JQuery onload、ready概念介绍及使用方法
Apr 27 Javascript
推荐10个2014年最佳的jQuery视频插件
Nov 12 Javascript
了解Javascript的模块化开发
Mar 02 Javascript
Sea.JS知识总结
May 05 Javascript
jquery自定义插件开发之window的实现过程
May 06 Javascript
Node.js服务器环境下使用Mock.js拦截AJAX请求的教程
May 23 Javascript
使用vue制作FullPage页面滚动效果
Aug 21 Javascript
Vue-Router基础学习笔记(小结)
Oct 15 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变rgba的a值实现)
Jan 24 Javascript
微信小程序云开发 生成带参小程序码流程
May 18 Javascript
JavaScript canvas绘制折线图
Feb 18 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.MVC的模板标签系统(四)
2006/09/05 PHP
PHP+Ajax异步带进度条上传文件实例
2016/11/01 PHP
php一个文件搞定微信jssdk配置
2016/12/12 PHP
详解PHP PDO简单教程
2019/05/28 PHP
从父页面读取和操作iframe中内容方法
2009/07/25 Javascript
基于jquery的商品展示放大镜
2010/08/07 Javascript
利用jquery的获取JS文件中的字符串内容
2012/02/14 Javascript
原生JS实现表单checkbook获取已选择的值
2013/07/21 Javascript
JavaScript对象学习经验整理
2013/10/12 Javascript
jQuery读取和设定KindEditor值的方法
2013/11/22 Javascript
显示今天的日期js代码(阳历和农历)
2014/09/30 Javascript
jQuery实现仿Google首页拖动效果的方法
2015/05/04 Javascript
微信小程序 引用其他js文件实现代码
2017/02/22 Javascript
微信小程序 下拉列表的实现实例代码
2017/03/08 Javascript
小发现之浅谈location.search与location.hash的问题
2017/06/23 Javascript
jQuery实现判断上传图片类型和大小的方法示例
2018/04/11 jQuery
JavaScript实现打砖块游戏
2020/02/25 Javascript
[45:56]Ti4正赛第一天 VG vs NEWBEE 3
2014/07/19 DOTA
[54:33]2018DOTA2亚洲邀请赛小组赛 A组加赛 Liquid vs Optic
2018/04/03 DOTA
Python中除法使用的注意事项
2014/08/21 Python
详解python多线程、锁、event事件机制的简单使用
2018/04/27 Python
解决pandas无法在pycharm中使用plot()方法显示图像的问题
2018/05/24 Python
在python 中实现运行多条shell命令
2019/01/07 Python
python 图像处理画一个正弦函数代码实例
2019/09/10 Python
django ORM之values和annotate使用详解
2020/05/19 Python
python要安装在哪个盘
2020/06/15 Python
AmazeUI 图标的示例代码
2020/08/13 HTML / CSS
可贵的沉默教学反思
2014/02/06 职场文书
文明班级建设方案
2014/05/15 职场文书
员工离职感谢信
2015/01/22 职场文书
作弊检讨书
2015/01/27 职场文书
研讨会致辞
2015/07/31 职场文书
演讲稿之我的初心我的成长
2019/08/12 职场文书
Python还能这么玩之只用30行代码从excel提取个人值班表
2021/06/05 Python
SpringCloud Alibaba项目实战之nacos-server服务搭建过程
2021/06/21 Java/Android
Windows Server 2012 R2服务器安装与配置的完整步骤
2022/07/15 Servers