小さいプログラムの中でredux/immuttable/thunkの第三者の倉庫の方法を集積します。


はじめに
プログラムは二つのパラメータrequireとmoduleを暴露しました。requireはモジュールに他のモジュールをロードするために使用します。moduleはモジュール中の方法を暴露します。

module.exports = function(){}
したがって、第三者ライブラリのコードにこの形式のexportを使わせる必要があります。
二、ReduxのWeChatパッケージの構築
Reduxパッケージを作って、WeChat小城のロード方法に対応できるようにします。

git clone https://github.com/reactjs/redux.git

npm install

#        redux   package.json   
#         webpack  UMD    。         ,                 ,            ,     dist     
npm run build:umd && npm run build:umd
エディタでdistディレクトリのredux.jsファイルを開きます。

(function webpackUniversalModuleDefinition(root, factory) {
  if(typeof exports === 'object' && typeof module === 'object')
    module.exports = factory();
  else if(typeof define === 'function' && define.amd)
    define([], factory);
  else if(typeof exports === 'object')
    exports["Redux"] = factory();
  else
    root["Redux"] = factory();
})(this, function() {
... 
})
このコードはモジュールをロードするためのもので、中のfactory関数の返却内容はwebpackで提供されたloaderで組織されたreduxのコードと第三者依存です。
  • 、このファイルを小さいプログラムにコピーすれば、プログラムを正常に第三行のコードに入れるだけで、Reduxを
  • にロードすることができます。
  • は、2行目のコード:if(type of export===object'&type of module=='object')を、if(type of module==object')
  • に変更します。
  • このように修正された理由は、WeChatウィジェットの環境においてexport変数がないため、正確にこの分岐に入ることができなくなり、削除したら正確に
  • に入ることができるからです。
  • 私達はlibsディレクトリにコピーします。プログラムで使う時、ローカルモジュールとしてrequireに行けばいいです。var redux=require('./libs/redux.js')
  • 、私達は類似の方法でWebpackを使って第三者の倉庫を包装してもいいです。
  • 三、集積Redux-devtools
    WeChatアプレットの開発環境はカスタマイズされていますので、redux-devtoolのプラグインを直接インストールする方法はありません。
    remote-redux-devtoolsをインストールします。
    オリジナルのremote-redux-devtoolsで使用する一つのwebsocketの依存は元のWebsocketを使用します。小さいプログラムはサポートしていませんので、小さいプログラムに変更する必要があります。websocketを実現して、良いコードを修正します。https://github.com/poetries/wx-redux-immutable-template/blob/master/wx-redux-immutable-template/public/libs/remote-redux-devtools.js
    プロジェクトディレクトリにコードをダウンロードすればいいです。
    インストールと起動remotedev-server
    
    npm install -g remotedev-server
    remotedev --hostname=localhost --port=5678
    
    npmでローカルにインストールできないので、ここでグローバルインストールを使用します。第二のコマンドはremotedev-serverを起動します。hostnameとportはそれぞれlocal hostと5678に指定します。
    集積devtool
    storeでdevtoolを集積する
    
    const {createStore, compose} = require('./libs/redux.js');
    const devTools = require('./libs/remote-redux-devtools.js').default;
    const reducer = require('./reducers/index.js')
    
    function configureStore() {
     return createStore(reducer, compose(devTools({
      hostname: 'localhost',
      port: 5678,
      secure: false
     })));
    }
    
    module.exports = configureStore;
    
    
    devtoolをreduxのcomposeにstoreに加える。hostnameとportは、以前に起動したremotedev-server起動時に指定されたパラメータです。保存してからもう一度プログラムを再起動してください。エラーがなければOKです。
    ブラウザでロカホストにアクセスできます。5678
    四、小プログラムでimmuttableを統合する
    ImmutableはFacebookが開発した可変データの集合である。可変でないデータは一旦作成したら修正できません。はい、アプリケーションの開発はもっと簡単で、関数式プログラミング技術を使用することができます。例えば、不活性評価です。WeChatアプレットは直接Immutable.jsを使用できません。以下はWeChatアプレットの使い方を説明します。
    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;
    
    ....
    
    }));
    
    
    Immutableコードを修正し、既存のモジュールにコメントをエクスポートし、module.export=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() {
    
    修正したimmuttableを小プログラムに導入すればいいです。
    以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。