問題タブ [heist]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
haskell - Snap: コンパイルされたスプライス コードの例
少し前に同様の質問をしたと思いますが、APIが不安定なため回答がありませんでした。だから私は0.13が通り過ぎるのを待っていました。同様の質問をするのが正しいかどうかわかりません...?
runChildrenWith(Text)
解釈さmapSplices
れ、コンパイルされたスプライスの世界に代わるものは何ですか? (この組み合わせが最も一般的なようです) 可能であれば、いくつかのコード例をいただければ幸いです。
私の理解が正しければ、すべてのアプリケーション スプライスをまとめて、heistInit
. 誰でもそれを行う方法を教えてもらえますか?
スプライス バインディング タグは、アプリケーション全体で一意である必要がありますか?
utilising
私が読んで学ぶことができるように、完成したスナッププロジェクトの新しい API とコンパイルされたスプライスはありますか?
ありがとうございました。
- アップデート -
以下の素晴らしい答え。しかし、残念ながら、一部のパーツ (レンズが付いているパーツ) はさらに混乱しました。私が正しく理解していれば、これは文字列を接合する簡単な方法です:
スプライスされた文字列を数回実行する必要がある場合、たとえば 5 つのテーブル raw で次のようにします。
これは正しいです?
ヘイスト構成にスプライスを追加しようとすると、大量のエラーが発生します。
どこが間違っていますか?遅くなってごめんなさい。
私が本当に必要とするのは(今のところ理解できるように)、データベースから受け取った単純な文字列をつなぎ合わせて表示することだけです。
-- 更新 2 --
非常に役立つダニエルの回答のおかげで、私は最終的に何かを機能させることができます。
これまでのところ、コードの両方のバリアントが機能しています。
ダニエルのおかげで最初のもの
そしてセカンド
どこ
と同様の結果を生成します
上記に違いはありますか?どちらかを優先するケースはありますか?それらは同じ結果を生み出すようです。
ドキュメントによると、コンパイルされた splices lib には「deferMany」関数があり、解釈された lib の mapSplices と同様の結果を生成します。「C.manyWithSplices C.runChildren」の組み合わせの代わりに使用できますか??
haskell-snap-framework - Snap: コンパイルされたスプライスによるデータベース アクセス
コンパイルされたスプライスについて頭を悩ませようとしています。以前の助けを借りて、いくつかの有用な結果をコンパイルしてレンダリングできます。私はそれがどのように機能するかを完全には理解していません。
インタープリター モードでは、アルゴリズムは単純です。ルートを構築し、マップされた URL を指定してハンドラー関数を呼び出し、DB からデータをプルし、プルされたデータからスプライスを構築してバインドし、それらを heist に挿入して、適切なテンプレートを呼び出します。
コンパイルモードではすべて逆さまです。URL を直接 cRender にマップし、ハンドラーを呼び出しません。したがって、すべてのスプライス構築関数とデータ処理関数はロード時に呼び出されると想定しています。
私の質問は、データベースが呼び出されるのはいつですか? これはロード時にも発生しますか?私が理解できないのは一連の出来事です。
スプライスの構築は特定のテンプレート レンダリングに依存しないため、スプライス バインディング タグはアプリケーション全体で一意であるということですか?? それらはグローバル変数のようなものですか?
ありがとう
haskell - Snap: 実行時の決定と URL 変数に応じてコンパイルされたスプライス
コンパイルされたスプライスを構築し、URL 変数に依存するデータをそれらにフィードする必要がある状況があります。私は問題を解決するのに苦労しています。
そのため、テーブルにレンダリングする必要がある単純なファイル名リストがあります。単純。ファイルはグループまたはカテゴリに属しているため、すべてのファイルまたは特定のカテゴリに関連するファイルを一覧表示できます。この関数を使用してデータをプルします。
Nothing を取得した場合はリスト全体を取得し、Just カテゴリを取得した場合はそのカテゴリに属するファイルを取得します。ここまで簡単。
上記の関数をハンドラー内から呼び出して、引数を渡すことができるようにします。
URL で「all」または Nothing を取得すると、完全なリストが取得されます。それ以外 - カテゴリでフィルタリングされたリストを取得します。
URLルートは次のようになります
しかし、「メソッド」関数は Handler App App () 署名のみを受け入れるため、問題が発生しました。私のハンドラーは、スプライスに供給されるデータを返します。
私はスプライスを次のように構築します。
私はそれを回避する方法を見つけることができません。おそらく、何か愚かなものを見逃しているだけです。私が間違っていることはありますか?
いずれにせよ、最初にテンプレートをレンダリングしてからデータをプルするため、ハンドラー関数は正しくないように見えます。ハンドラーを修正すると、URL パラメーターに基づいてデータをフィードできなくなります。
混乱している。
haskell - Snap: コンパイルされたスプライスを含むレンダリング テーブル
さて、これは私が克服するのに苦労しているコンパイルされたスプライスのもう 1 つの障害です。元の解釈されたスプライスで最初にそれを行ったときにいくつかの問題があり、今ではそれをコンパイルされたバリアントに変換するのに行き詰まっています.
元の問題はここで説明されています:テーブルのレンダリング
したがって、この種の構造を構築する必要があります。
これは、外部ループと内部ループ、外側のレンダリング raw と内側のレンダリング セルだけです。それはすべて元のリンクで説明されています。
現在、次のように解釈モードで実装されています。
私は数日間苦労してきましたが、結果はありません。これはおそらく、コンパイルされた splices API を理解していないことが原因です。助けてください!
編集
問題の詳細を十分に提供していません。上記の解釈されたバリアントの最良の近似値は、次のとおりです。
それは動作しません!問題は、tableRaw である raw レンダリング関数を変換することです。というわけで詳しく紹介します。tableBody に入力しているデータは、マップのような構造のリストとして提供されます。
データを生で引き出すには、ラベルのリストをマップする必要があります
解釈されたバリアンで問題なくこれを行うことができます。tableRawS の解釈された例はドキュメントによってパラメータ化されていますが、[ラベル] にマップされています。コンパイルされたバリアントではこれを達成できません。ドキュメントと tableRaw 関数に存在するラベルのリストの両方が必要なので、ドキュメントからさまざまなセル スプライスをバインドできます。これは本当の痛みです。やり方がわかりません。私が何をしても、ラベルのリストをマッピングするのではなく、ドキュメントを tableRaw マッピングすることになります。
基本的。上記の文書構造を持つデータベースから [文書] を取得し、データベースからラベルを取得します。
「at :: Label -> Value」を使用してドキュメントからデータを取得します。これで、このテンプレートをレンダリングするにはどうすればよいですか。
postgresql - Heist テンプレートで postgresql-simple の結果を使用する
このHeist チュートリアルとこのpostgresql-simple チュートリアルを組み合わせようとしています。
私はこれのさまざまなバリエーションを試してみました。
しかし、私はこのエラーを受け取り続けました。
そのインスタンス宣言を実装する方法がわからず、モナドをまだ完全に把握していません。正しい軌道に乗っているかどうかさえわかりません。
編集: @mightybyte の回答に感謝し、これを思いつきました。
haskell - Snap-Heist: テンプレートがレンダリングされないのはなぜですか?
Snap と Heist を使用してテンプレートをレンダリングしようとしています。
ハンドラー関数が正しく呼び出されていると確信しています (ハンドラー関数の内容を に置き換えるとundefined
、期待どおりに失敗します。Debug.Trace.trace
また、期待どおりに動作します)。
このハンドラー関数は、次の 1 行で構成されますrender "template"
。しかし、何らかの理由No handler accepted <url>
で、またはそのようなものの代わりにエラーが発生template not found
しています。
ここでの問題は、テンプレートを間違ったディレクトリに配置していることだと思いますが、テンプレートが検索された場所を知る方法はありません。だから私の質問は:
- このエラー メッセージは誤解を招くものではありませんか? それは次のようなものだったはずです
template not found: template.tpl
- テンプレートを検索するディレクトリはどこで確認できますか?
によって作成されたスナップアプリケーションが問題だと思いますsnap init
。私はそれにわずかな変更を加えただけです:
App
記録するフィールドをもう 1 つ追加しました。_myapp :: Snaplet Myapp
app
初期化関数で、次を追加しました:n <- embedSnaplet "myapp" myapp myappInit
n をレコードに渡しました。- 新しいファイルを作成しまし
src/Myapp.hs
た。
の関連部分は次のMyapp.hs
とおりです。
しかし、何らかの理由で、rendering submit
に移動したときにコンソールに出力されているのに、 (レンダリングされたテンプレートではなく) HTTP 応答としてメッセージhttp://0.0.0.0:8000/myapp/submit
を取得します。No handler accepted "/hsnews/submit"
私はsubmit.tpl
と_submit.tpl
を持っていsnaplets/heist/myapp_templates
ます。