微信小程序使用第三方库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实现的抽象CSS圆角效果!!
May 03 Javascript
基于jquery的一行代码轻松实现拖动效果
Dec 28 Javascript
JavaScript 高级篇之DOM文档,简单封装及调用、动态添加、删除样式(六)
Apr 07 Javascript
原生js实现shift/ctrl/alt按键的获取
Apr 08 Javascript
js图片向右一张张滚动效果实例代码
Nov 23 Javascript
JS的document.all函数使用示例
Dec 30 Javascript
js实现模拟计算器退格键删除文字效果的方法
May 07 Javascript
jQuery使用each方法与for语句遍历数组示例
Jun 16 Javascript
Jquery和CSS实现选择框重置按钮功能
Nov 08 jQuery
p5.js临摹旋转爱心
Oct 23 Javascript
小程序实现多个选项卡切换
Jun 19 Javascript
微信小游戏中three.js离屏画布的示例代码
Oct 12 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 静态页面中显示动态内容
2009/08/14 PHP
php实现excel中rank函数功能的方法
2015/01/20 PHP
Yii2验证器(Validator)用法分析
2016/07/23 PHP
THINKPHP3.2使用soap连接webservice的解决方法
2017/12/13 PHP
JavaScript字符串对象fromCharCode方法入门实例(用于把Unicode值转换为字符串)
2014/10/17 Javascript
浅析js的模块化编写 require.js
2016/12/07 Javascript
基于JavaScript实现的希尔排序算法分析
2017/04/14 Javascript
Angular搜索 过滤 批量删除 添加 表单验证功能集锦(实例代码)
2017/10/25 Javascript
JS实现的倒计时恢复按钮点击功能【可用于协议阅读倒计时】
2018/04/19 Javascript
Vue实现PopupWindow组件详解
2018/04/28 Javascript
nuxt静态部署打包相对路径操作
2020/11/06 Javascript
python目录操作之python遍历文件夹后将结果存储为xml
2014/01/27 Python
Python通过递归遍历出集合中所有元素的方法
2015/02/25 Python
python开发之thread线程基础实例入门
2015/11/11 Python
如何高效使用Python字典的方法详解
2017/08/31 Python
python爬取微信公众号文章的方法
2019/02/26 Python
简单了解Django ContentType内置组件
2019/07/23 Python
Python使用Slider组件实现调整曲线参数功能示例
2019/09/06 Python
在Tensorflow中实现梯度下降法更新参数值
2020/01/23 Python
Tensorflow的梯度异步更新示例
2020/01/23 Python
关于TensorFlow新旧版本函数接口变化详解
2020/02/10 Python
python 基于selectors库实现文件上传与下载
2020/12/31 Python
JavaScript+Canvas实现自定义画板的示例代码
2019/05/13 HTML / CSS
金讯Java笔试题目
2013/06/18 面试题
秋季红领巾广播稿
2014/01/27 职场文书
致400米运动员广播稿
2014/02/07 职场文书
品酒会策划方案
2014/05/26 职场文书
质量月口号
2014/06/20 职场文书
环境保护建议书
2014/08/26 职场文书
学习优秀党务工作者先进事迹材料思想报告
2014/09/17 职场文书
2014年圣诞节寄语
2014/12/08 职场文书
汽车销售助理岗位职责
2015/04/14 职场文书
校运会加油稿大全
2015/07/22 职场文书
2016年会领导致辞稿
2015/07/29 职场文书
用Python提取PDF表格的方法
2021/04/11 Python
MySQL into_Mysql中replace与replace into用法案例详解
2021/09/14 MySQL