微信小程序使用第三方库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去字符串前后空格5种实现方法及比较
Apr 03 Javascript
无缝滚动js代码通俗易懂(自写)
Jun 19 Javascript
JavaScript函数模式详解
Nov 07 Javascript
浅谈javascript的Touch事件
Sep 27 Javascript
详解AngularJS中ng-src指令的使用
Sep 07 Javascript
详解Angular CLI + Electron 开发环境搭建
Jul 20 Javascript
vue自定义filters过滤器
Apr 26 Javascript
Node.js创建HTTP文件服务器的使用示例
May 11 Javascript
浅谈vue引用静态资源需要注意的事项
Sep 28 Javascript
微信小程序模板消息推送的两种实现方式
Aug 27 Javascript
vue实现几秒后跳转新页面代码
Sep 09 Javascript
利用javaScript处理常用事件详解
Apr 14 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
iOS10推送通知开发教程
2016/09/19 PHP
laravel http 自定义公共验证和响应的方法
2019/09/29 PHP
IFrame跨域高度自适应实现代码
2012/08/16 Javascript
基于jQuery实现的文字按钮表单特效整理
2014/12/07 Javascript
javascript实现简单的html5视频播放器
2015/05/06 Javascript
javascript实现类似于新浪微博搜索框弹出效果的方法
2015/07/27 Javascript
JS实现的自定义显示加载等待图片插件(loading.gif)
2016/06/17 Javascript
AngularJS表单基本操作
2017/01/09 Javascript
利用jQuery实现简单的拖曳效果实例代码
2017/10/20 jQuery
JavaScript实现shuffle数组洗牌操作示例
2019/01/03 Javascript
解决axios post 后端无法接收数据的问题
2019/10/29 Javascript
Vue防止白屏添加首屏动画的实例
2019/10/31 Javascript
解决vue 子组件修改父组件传来的props值报错问题
2019/11/09 Javascript
Postman动态获取返回值过程详解
2020/06/30 Javascript
[51:00]Secret vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
编写Python的web框架中的Model的教程
2015/04/29 Python
pandas Dataframe行列读取的实例
2018/06/08 Python
Python学习笔记之变量、自定义函数用法示例
2019/05/28 Python
使用python搭建服务器并实现Android端与之通信的方法
2019/06/28 Python
解决Jupyter因卸载重装导致的问题修复
2020/04/10 Python
Python发送邮件实现基础解析
2020/08/14 Python
css3实现背景动态渐变效果
2019/12/10 HTML / CSS
聪明的粉丝购买门票的地方:TickPick
2018/03/09 全球购物
Elemis美国官网:英国的第一豪华护肤品牌
2018/03/15 全球购物
爱尔兰电子产品购物网站:Komplett.ie
2018/04/04 全球购物
行政管理专业推荐信
2013/11/02 职场文书
销售员个人求职的自我评价
2014/02/10 职场文书
安卓程序员求职信
2014/02/28 职场文书
优秀实习生主要事迹
2014/05/29 职场文书
单位作风建设自查报告
2014/10/23 职场文书
入党转正申请报告
2015/05/15 职场文书
邓小平文选读书笔记
2015/06/29 职场文书
《观察物体》教学反思
2016/02/17 职场文书
小学生优秀作文范文(六篇)
2019/07/10 职场文书
python面向对象版学生信息管理系统
2021/06/24 Python
Python用tkinter实现自定义记事本的方法详解
2022/03/31 Python