资讯专栏INFORMATION COLUMN

微信小程序开发实战——使用Immutable.js

邱勇 / 1519人阅读

摘要:是开发的不可变数据集合。微信小程序无法直接使用进行调用需要对下载的代码进行修改才能使用。原因分析使用了模块化规范的实现很简单,先判断是否支持模块规范,存在则使用方式加载模块。通过测试,微信小程序运行环境并没有定义。

Immutable 是 Facebook 开发的不可变数据集合。不可变数据一旦创建就不能被修改,是的应用开发更简单,允许使用函数式编程技术,比如惰性评估。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( "
" )
        })
    }
})

其他

完整代码 https://github.com/guyoung/Gy...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/80489.html

相关文章

  • 微信小程开发实战——模块化

    摘要:以微信小程序调试时代码为例兼容兼容微信小程序运行的代码与模块规范基本符合。使用第三方模块微信小程序运行环境没有定义,无法通过导入模块,需要对第三方模块强制导出后才能正常导入。 JavaScript模块规范 在任何一个大型应用中模块化是很常见的,与一些更传统的编程语言不同的是,JavaScript (ECMA-262版本)还不支持原生的模块化。 Javascript社区做了很多努力,在现...

    CoffeX 评论0 收藏0
  • 全球首发,微信小程开发实战视频教程发布

    摘要:昨日月,腾讯终于发布了没有,无需申请也可以进行微信小程序开发的视频教程了,我在在第一时间尝试并发布了这个小视频教程,入门足够了各位免费拿去,慢慢享用链接密码也可以添加微信小程序开发者交流群,只欢迎对微信小程序开发有兴趣的朋友,其他勿加,感谢 昨日(9月23),腾讯终于发布了没有APPid,无需申请也可以进行微信小程序开发的视频教程了,我在在第一时间尝试并发布了这7个小视频教程,入门足够...

    mushang 评论0 收藏0
  • 前端资源系列(3)-微信小程开发资源汇总

    摘要:微信小程序应用号开发资源汇总文档工具教程代码插件组件文档从搭建一个微信小程序开始小程序开发文档小程序设计指南工具小程序开发者工具官方支持微信小程序实时预览的支持的微信小程序组件化开发框架转在线工具小程序云端增强社区微信小程序 微信(小程序or应用号)开发资源汇总-文档-工具-教程-代码-插件-组件 文档 从搭建一个微信小程序开始 小程序开发文档 小程序设计指南 工具 小程序开发者...

    paney129 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<