微信小程序使用第三方库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遍历Json字符串中键值对先转成JSON对象再遍历
Aug 15 Javascript
使用 js+正则表达式为关键词添加链接
Nov 11 Javascript
js实现随屏幕滚动的带缓冲效果的右下角广告代码
Sep 04 Javascript
解析Javascript单例模式概念与实例
Dec 05 Javascript
vue-cli+webpack在生成的项目中使用bootstrap实例代码
May 26 Javascript
详解如何在 vue 项目里正确地引用 jquery 和 jquery-ui的插件
Jun 01 jQuery
微信小程序 空白页重定向解决办法
Jun 27 Javascript
Bootstrap按钮组实例详解
Jul 03 Javascript
JS原型与继承操作示例
May 09 Javascript
JavaScript面向对象编程小游戏---贪吃蛇代码实例
May 15 Javascript
JS新手入门数组处理的实用方法汇总
Apr 07 Javascript
小程序自定义轮播图圆点组件
Jun 25 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
150kHz到30Mhz完全冲浪手册
2020/03/20 无线电
PHP截断标题且兼容utf8和gb2312编码
2013/09/22 PHP
php中引用符号(&)的使用详解
2013/11/13 PHP
PHP文件大小格式化函数合集
2014/03/10 PHP
php使用数组填充下拉列表框的方法
2015/03/31 PHP
php+flash+jQuery多图片上传源码分享
2020/07/27 PHP
php类的自动加载操作实例详解
2016/09/28 PHP
php xhprof使用实例详解
2019/04/15 PHP
动态加载js的方法汇总
2015/02/13 Javascript
Zero Clipboard实现浏览器复制到剪贴板的方法(多个复制按钮)
2016/03/24 Javascript
jQuery控制li上下循环滚动插件用法实例(附demo源码下载)
2016/05/28 Javascript
jQuery内存泄露解决办法
2016/12/13 Javascript
JS瀑布流实现方法实例分析
2016/12/19 Javascript
js中数组的常用方法小结
2016/12/30 Javascript
JS中实现函数return多个返回值的实例
2017/02/21 Javascript
input输入框内容实时监测(附代码)
2017/08/15 Javascript
javascript Function函数理解与实战
2017/12/01 Javascript
Angular ng-animate和ng-cookies用法详解
2018/04/18 Javascript
微信小程序使用wxParse解析html的方法教程
2018/07/06 Javascript
vue.js表单验证插件(vee-validate)的使用教程详解
2019/05/23 Javascript
node.js中事件触发器events的使用方法实例分析
2019/11/23 Javascript
解决Vue的文本编辑器 vue-quill-editor 小图标样式排布错乱问题
2020/08/03 Javascript
javascript自定义加载loading效果
2020/09/15 Javascript
javascript实现简单留言板案例
2021/02/09 Javascript
使用Python写一个贪吃蛇游戏实例代码
2017/08/21 Python
Python基础语言学习笔记总结(精华)
2017/11/14 Python
详解django三种文件下载方式
2018/04/06 Python
Python基于pyecharts实现关联图绘制
2020/03/27 Python
python 爬取英雄联盟皮肤并下载的示例
2020/12/04 Python
html5清空画布方法(三种)
2017/10/16 HTML / CSS
年度评优评先方案
2014/06/03 职场文书
党员干部民主生活会议批评与自我批评材料
2014/09/20 职场文书
维稳工作情况汇报
2014/10/27 职场文书
地震慰问信
2015/02/14 职场文书
雾霾停课通知
2015/04/24 职场文书
详解MySQL事务的隔离级别与MVCC
2021/04/22 MySQL