微信小程序使用第三方库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 相关文章推荐
由点击页面其它地方隐藏div所想到的jQuery的delegate
Aug 29 Javascript
深入了解Node.js中的一些特性
Sep 25 Javascript
Javascript核心读书有感之词法结构
Feb 01 Javascript
JavaScript运行过程中的“预编译阶段”和“执行阶段”
Dec 16 Javascript
AngularJS入门教程之表格实例详解
Jul 27 Javascript
javascript-解决mongoose数据查询的异步操作
Dec 22 Javascript
详解照片瀑布流效果(js,jquery分别实现与知识点总结)
Jan 01 Javascript
bootstrap为水平排列的表单和内联表单设置可选的图标
Feb 15 Javascript
vue.js 使用axios实现下载功能的示例
Mar 05 Javascript
微信小程序版本自动更新的方法
Jun 14 Javascript
express框架下使用session的方法
Jul 31 Javascript
多页vue应用的单页面打包方法(内含打包模式的应用)
Jun 11 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将access数据库转换到mysql数据库的方法
2014/12/24 PHP
用PHP生成excel文件到指定目录
2015/06/22 PHP
Yii2框架中使用PHPExcel导出Excel文件的示例
2017/08/09 PHP
Laravel框架生命周期与原理分析
2018/06/12 PHP
PHP架构及原理知识点详解
2019/12/22 PHP
pjblog中的UBBCode.js
2007/04/25 Javascript
用js 让图片在 div或dl里 居中,底部对齐
2008/01/21 Javascript
利用jquery的获取JS文件中的字符串内容
2012/02/14 Javascript
js中的referrer返回上一页使用介绍
2013/09/26 Javascript
通过url查找a元素应用案例
2014/04/29 Javascript
JavaScript声明变量时为什么要加var关键字
2014/09/29 Javascript
jQuery子属性过滤选择器用法分析
2015/02/10 Javascript
jquery实现华丽的可折角广告代码
2015/09/02 Javascript
使用jQuery制作Web页面遮罩层插件的实例教程
2016/05/26 Javascript
js实现简单的选项卡效果
2017/02/23 Javascript
原生js实现简单的Ripple按钮实例代码
2017/03/24 Javascript
jquery实现提示语淡入效果
2017/05/05 jQuery
js注册时输入合法性验证方法
2017/10/21 Javascript
vue解决使用webpack打包后keep-alive不生效的方法
2018/09/01 Javascript
Vue插值、表达式、分隔符、指令知识小结
2018/10/12 Javascript
node.js学习笔记之koa框架和简单爬虫练习
2018/12/13 Javascript
一篇文章弄懂javascript中的执行栈与执行上下文
2019/08/09 Javascript
原生js基于canvas实现一个简单的前端截图工具代码实例
2019/09/10 Javascript
[00:35]DOTA2上海特级锦标赛 MVP.Phx战队宣传片
2016/03/04 DOTA
[02:08]2018年度CS GO枪械皮肤设计大赛优秀作者-完美盛典
2018/12/16 DOTA
python文件拆分与重组实例
2018/12/10 Python
Python图像滤波处理操作示例【基于ImageFilter类】
2019/01/03 Python
Python中一般处理中文的几种方法
2019/03/06 Python
python如何将两个txt文件内容合并
2019/10/18 Python
pandas中的数据去重处理的实现方法
2020/02/10 Python
台湾饭店和机票预订网站:Expedia台湾
2016/08/05 全球购物
你在项目中用到了xml技术的哪些方面?如何实现的?
2014/01/26 面试题
精彩自我鉴定
2014/01/16 职场文书
市场营销个人求职信范文
2014/02/02 职场文书
债务授权委托书范本
2014/10/17 职场文书
使用nginx配置访问wgcloud的方法
2021/06/26 Servers