13

私は、NodeJS require(明らかにNodeJSアプリ)とWebブラウザー環境用のRequireJSを使用して、NodeJSとブラウザーアプリケーション内でさまざまなモジュールの概念をどのように適用できるかを調査してきました。

その後、一部のモジュールはクライアントアプリケーションとサーバーアプリケーションの両方で使用できるため、再利用できる可能性があることに気づきました。

これらの環境の両方と互換性があるようにモジュールを開発するにはどうすればよいですか?

1つは同期で、もう1つは非同期です。私が最初に考えたのは、非同期構文を利用してから、非同期コールバックを同期的に呼び出すだけのNodeJSのカスタムモジュールを定義することでした。しかし、最初にNodeJS同期コールバックを使用せずに、RequireJSエミュレーターを相互環境モジュールに含めるにはどうすればよいでしょうか。

4

4 に答える 4

10

この投稿を参照してください:Node.jsとブラウザー間のモジュールギャップを埋める

于 2011-11-25T01:20:26.683 に答える
1

https://github.com/umdjs/umdでボイラープレートのセットも参照してください

asyncとsyncについて-Nodeのdefine()の場合、defineに渡されたファクトリ関数の同期実行を使用するのが一般的です。これが、Nodeで実行しているときにrequirejsがどのように機能するかです。

于 2011-11-25T07:10:48.027 に答える
1

http://uRequire.orgプロジェクトは、AMDnodejs/commonJs形式のギャップを埋めます。Uは、いずれか(または両方)に書き込み、2つまたはのいずれかに実行/デプロイできstandalone.jsます。

于 2013-08-23T23:34:32.383 に答える
1

ここでこのリソースを確認してください:難しいことではありません:ライブラリでAMDとCommonJSをサポートtake-away code you needすることで、すべてが非常によく説明されますto understandread that article

このコードにより、jsライブラリにAMD(requireJs)とノードのサポートを追加しました

(function (global, factory) {
    if (typeof define === 'function' && define.amd)
        define(['jQuery'], function ($) {
            return (global['toaster'] = factory($))
        });
    else if (typeof module === "object" && module && typeof module.exports === "object")
        module.exports = (global['toaster'] = factory(require('jquery')));
    else global['toaster'] = factory(global['jQuery']);
})(this, function ($) {
    // implementation goes here
    var myModule = {};
    return myModule;
    function helper() {
    }
})

もう1つ、すべてのバリアント実装について、このユニバーサルモジュール定義GitHubプロジェクトを見つけました。すべてを確認できます。

于 2018-11-29T11:01:24.343 に答える