微信小程序使用第三方库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 相关文章推荐
Javascript 按位与赋值运算符 (&=)使用介绍
Feb 04 Javascript
jQuery定义背景动态切换效果的方法
Mar 23 Javascript
javascript实现简单的进度条
Jul 02 Javascript
Js获取图片原始宽高的实现代码
May 17 Javascript
JavaScript中ES6字符串扩展方法
Aug 26 Javascript
jQuery鼠标事件总结
Oct 13 Javascript
JS中实现函数return多个返回值的实例
Feb 21 Javascript
最通俗易懂的javascript变量提升详解
Aug 05 Javascript
谈谈JS中的!!
Dec 07 Javascript
Vue项目报错:Uncaught SyntaxError: Unexpected token
Nov 10 Javascript
使用layui实现树形结构的方法
Sep 20 Javascript
Bootstrap实现前端登录页面带验证码功能完整示例
Mar 26 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的宝库目录--PEAR
2006/10/09 PHP
用PHP和ACCESS写聊天室(四)
2006/10/09 PHP
PHP开发过程中常用函数收藏
2009/12/14 PHP
ThinkPHP简单使用memcache缓存的方法
2016/11/15 PHP
php7函数,声明,返回值等新特性介绍
2018/05/25 PHP
再谈Yii Framework框架中的事件event原理与应用
2020/04/07 PHP
PHP设计模式(四)原型模式Prototype实例详解【创建型】
2020/05/02 PHP
常用的javascript function代码
2008/05/23 Javascript
jQuery图片轮播的具体实现
2013/09/11 Javascript
ExtJS自定义主题(theme)样式详解
2013/11/18 Javascript
js实现按钮加背景图片常用方法
2014/11/01 Javascript
实现js保留小数点后N位的代码
2014/11/13 Javascript
Jquery操作cookie记住用户名
2016/03/29 Javascript
JS封装的自动创建表格的实现代码
2016/06/15 Javascript
前端 Vue.js 和 MVVM 详细介绍
2016/12/29 Javascript
详解nodejs微信公众号开发——6.自定义菜单
2017/04/13 NodeJs
JS简单验证上传文件类型的方法
2017/04/17 Javascript
JS+canvas实现的五子棋游戏【人机大战版】
2017/07/19 Javascript
实现图片首尾平滑轮播(JS原生方法—节流)
2017/10/17 Javascript
解析Vue 2.5的Diff算法
2017/11/28 Javascript
原生JS实现的雪花飘落动画效果
2018/05/03 Javascript
使用pkg打包Node.js应用的方法步骤
2018/10/19 Javascript
说说如何在Vue.js中实现数字输入组件的方法
2019/01/08 Javascript
微信小程序使用字体图标的方法
2019/05/23 Javascript
[01:32]dota2拉比克至宝(222)
2018/12/20 DOTA
python输入整条数据分割存入数组的方法
2018/11/13 Python
简单了解python变量的作用域
2019/07/30 Python
详解django使用include无法跳转的解决方法
2020/03/19 Python
解决python和pycharm安装gmpy2 出现ERROR的问题
2020/08/28 Python
基于CSS3 animation动画属性实现轮播图效果
2017/09/12 HTML / CSS
MAC Cosmetics巴西官方网站:M·A·C彩妆
2019/04/18 全球购物
澳大利亚二手奢侈品网站:Modsie
2019/09/23 全球购物
党章培训心得体会
2014/09/04 职场文书
廉洁自律承诺书2015
2015/01/22 职场文书
2015年世界卫生日活动总结
2015/02/09 职场文书
教师读书笔记
2015/06/29 职场文书