2016-11-17 11 views
4

現在、私のプロジェクトの1つでTypeScript 2.0をReactとwebpackで使用しています。私はClojureScriptを試してみることを検討していますが、私は最初にそれを使って単一の画面を構築するようにしています。TypeScriptとClojureScriptを混在させることが可能です

2つのプロジェクトを1つのプロジェクトで混在させることはできますか?

理想的には、ClojureでビルドされたコンポーネントをES6のインポートを介して使用したいと考えています。

主な理由は、チーム/ myslefをclojureに紹介することですが、すでにTypeScriptには少しコードベースがあります。完全に別々のバンドルを生成して参照するのは簡単だが、それは理想的ではないと私は理解している。

+0

理論的には問題ではないが、個人的に、私は試したことがないと私は活字体を使用することはありませんので、彼らは、JSにコンパイルの両方。 cljsの開始ページには、jsファイルをWebページに直接含める方法に関する情報があります:http://clojurescript.org/guides/quick-start – Marcs

+0

明確化が必要です - > " "2つのプロジェクトを1つのプロジェクトにまとめましたか? あなたはそれをちょうどタイプコピーでインポート可能か、セットアップ方法を教えてください クロージャススクリプト(プロジェクト構造を意味しますか?)を扱うためのタイプスクリプトベースのプロジェクト@Balazamon –

答えて

4

はい。

ClojureScriptの出力は、Reactコンポーネントと任意のコードを定義できるJavaScriptです。たとえば、試薬0.6.0を使用する場合、create-classの出力はコンポーネントとして直接使用できます。

しかし!混合モードのプロジェクトビルド構成は難題です。 1つのアプローチは、ClojureScriptページをホストプロジェクトで必要なライブラリにすることです。この場合、ClojureScriptコンポーネントを独立してビルドしてテストし、メインプロジェクトの依存関係として出力ファイルをパッケージ化することができます。これは、(figwheel/devcardsを使用して)コンポーネントの開発を迅速に反復できるという利点があります。

0

可能ですか?はい。助言?あんまり。異なる言語を混在させると、2つのコードを同じコードブロックに混ぜるリスクがあります。になり、バグが発生します。慎重なプログラマーなら、あなたはすべて設定されます。

+0

ここでは、http://に記述されているように、 /stackoverflow.com/questions/1817248/patterns-to-mix-f-and-c-sharp-in-the-same-solution – baalazamon

0

原則として、これを行うことができます。他の回答と同様に、私はそれが大部分の時間のよいアイデアだとは思っていませんが、確かにそこにある可能性があると信じることができます。あなたは(あなたが提案として例えば両方がES6モジュールにコンパイルされている)は、2つの間の互換性のモジュールシステムを使用している、そしてあなたは、いくつかのClojureScriptを書くmy-cjs.jsにそれをコンパイルし、declare module "my-cjs";を含むあなたの活字体にmy-cjs.d.tsファイルを追加することができますと仮定

TSでimport { export1, export2 } from "my-cjs"という名前でインポートしてから使用してください。

このambient shorthand moduleセットアップを使用するのではなく、独自の型定義を構築して維持することをお勧めします(これは最も簡単ですが、anyすべてのClojureScriptを入力します)。私が知る限り、ClojureScriptから互換性のある型定義を自動的に生成する有用な方法はありませんので、手作業で最新の状態に保つ必要があります。スクリプト用のAPIが多く変更される可能性があります。

恐ろしい部分はおそらく2つの別々のコンパイルの出力を組み合わせて、両方がES6モジュールで正しくロードされるようになるでしょう。 TypeScript JSファイルを1つのフォルダに出力し、別のフォルダにClojureScript JSを出力し、それらのフォルダを結合してパスを整列させます(同じフォルダに直接コンパイルすることもできますが、物事をより単純に保つために始めて結合することから始めます)。それはあなたのコンパイルステップをどのように設定するかによって異なりますが、確かに実行可能です。

私のようなものをだファイル構造の両方をコンパイルすることを目指したい:

/cjs-output 
|- /my-component 
    |- my-cjs-script.js 
/ts-output 
|- my-ts-code.js 
|- some-more-ts-code.js 

し、その後に第二段階として、これらを組み合わせること:私の知る限り

/output 
|- /my-component 
    |- my-cjs-script.js 
|- my-ts-code.js 
|- some-more-ts-code.js 

WebPACKのはClojureScriptローダーが利用できていないので、あなたは手でどちらの方法をそのコンパイル手順を行う必要があるでしょう。どのように正確にあなたがWebPACKのにこれをフックしたいことは未解決の問題である - 私は正常にWebPACKの外で働くJSステップにTS + CJSを取得することで起動し、多分後で統合する前に、以降のJSからプロセスを処理するためにWebPACKのを使用したいですしかし、YMMV。

そこからmy-component/my-cjs-scriptを実行時にインポートすることができます。my-component/my-cjs-scriptの型定義がある限り、それをうまくコンパイルする必要があります。

+0

あなたはgithubリポジトリで人々が一緒に使うことができる定型文と一緒に仕事したいですか?スターター?便利なことのように聞こえるが、私は、私は同様にそのようなものをピックアップしてすることを約束したすべての他のプロジェクトと余りに忙しい、申し訳ありませんし – baalazamon

+0

!あなたが一緒に何かを入れてもリンクが大好きです。 –

関連する問題