問題タブ [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.

0 投票する
2 に答える
422 参照

haskell - heistテンプレートのjavascriptがエスケープされないようにするにはどうすればよいですか?

私はHeistテンプレートエンジンでSnapフレームワークを使用しています。問題は、Heistがhtmlにインライン化されたjavascriptコードを破損することです。

に変換:

scriptタグの内容を保持するようにHeistに指示するにはどうすればよいですか?

編集:私はちょうどそのようなスプライスを実装しました:

ただし、このスプライスをスクリプトタグにバインドしても効果はありません。印刷します

したがって、htmlエンティティの置換は、すべてのスプライスを実行した後に行われると思います。

0 投票する
3 に答える
497 参照

web-applications - Heist: サブテンプレートの動的リストをテンプレートに挿入するにはどうすればよいですか?

私はオンライン調査用のサイトを書いています。すべてが 1 つの HTML ページに表示される質問のリストがあり、リストの長さは不明です。各質問にはテンプレートに保存されたフォームがqu1.tplあり、ページはqu.tplです。今私はしたい:

  1. qu1.tpl質問ごとにいくつかの名前を置き換えます

  2. qu.tpl一度にいくつかのものを交換する

  3. qu1.tplのすべてのインスタンス化を貼り付けますqu.tpl

<qulist/>チュートリアルで学んだことを使用して、タグを再帰的に<apply template="qu1.tpl"><qulist/>in qu.tplusing localHeistandに置き換えようとしましたbindStringが、qu.tpl既にレンダリングされているため、新しく挿入された適用タグが解決されないため、これは機能しません。

代わりに何をすべきですか?

(これはより一般的な質問だと思います。答えが当てはまる他のアプリケーションを思いつくことができる場合は、検索エンジン用のテキストとタグを追加してください。)

0 投票する
1 に答える
480 参照

haskell - Heist テンプレートでアプリケーション モナド以外の値を使用する

Happstack、Heist、および Web ルートを使用してアプリケーション サーバーを作成しようとしていますが、スプライスがアプリケーションのモナド スタックに由来しない値にアクセスできるようにする方法がわかりません。

これが発生する状況は 2 つあります。

  • Web ルート経由で URL パスから抽出されたパラメーター。これらは、リクエストを適切なハンドラーにルーティングする際に、タイプ セーフな URL でパターン マッチングを行うことによって生成されます。
  • セッション情報。リクエストが新しいセッションに対するものである場合、リクエスト内の Cookie からセッション ID を読み取ることができず (そのような Cookie はまだ存在しないため)、必要に応じてスプライスを使用して新しいセッションを作成することはできません。それ以来、複数のスプライスがそれを行おうとすると、1 つの要求に対して複数の新しいセッションを作成することになります。しかし、web-routes に入る前にセッションを作成すると、セッションはアプリケーションモナドの外に存在します。

次の URL を提供しようとする次のサンプル プログラムについて考えてみます。

  • /factorial/ nはnの階乗を出力します
  • /reverse/ str はstrを後方に出力します

パラメータはクエリ文字列ではなく URL パスに表示されるため、ServerPartT モナドからではなく、Web ルートを介して抽出されます。ただし、そこから、スプライスがアプリケーションモナドにしかアクセスできないため、パラメーターをどこかに置く明確な方法はありません。

モナド スタックのどこかに ReaderT を貼り付けるという明白な解決策には、2 つの問題があります。

  • ReaderT は ServerMonad や FilterMonad などを実装していないため、ServerPartT の上に ReaderT を配置すると、モナド スタックの Happstack 部分が隠されます。
  • 私が提供しているすべてのページが同じタイプのパラメーターを取ることを前提としていますが、この例では、/factorial は Int を必要としていますが、/reverse は String を必要としています。ただし、両方のページ ハンドラーが同じ TemplateDirectory を使用するには、ReaderT が同じ型の値を保持している必要があります。

Snap のドキュメントを覗いてみると、Snap は URL パスのパラメーターを効果的にクエリ文字列にコピーすることで処理しているように見えます。これにより、問題が回避されます。しかし、これは Happstack と Web ルートのオプションではありません。さらに、URL に同じ値を指定する 2 つの異なる方法があることは、セキュリティ的に悪い考えだと思います。

では、アプリケーションモナド以外のリクエストデータをスプライスに公開する「適切な」方法はありますか?それとも、Heist を放棄して、これが問題にならない代わりに Blaze-HTML のようなものを使用する必要がありますか? 明らかな何かが欠けているように感じますが、それが何であるかわかりません。

コード例:

factorial.tpl:

逆.tpl:

0 投票する
1 に答える
151 参照

web-services - Snap Web Framework を使用して Heist テンプレートに OnLoad フックを追加する

Snapを使用して Web アプリケーションでHeistテンプレートを前処理するためのフックをいくつか追加したいと考えています。これまでの私の素朴なアプローチは、アプリケーション初期化子で次のコードを使用することでした。

テンプレートが「リソース/テンプレート」からロードされた後にフックが追加されるため、このコードはもちろん機能しません。

OnLoad フックを追加するために、初期テンプレートがロードされる前に Heist テンプレートの状態を変更するにはどうすればよいでしょうか?

0 投票する
1 に答える
482 参照

happstack - 動作するHappstack/Heistの例を見つける

Haskellを使ってWebサイトを構築し始めたいと思います。そして、Happstack、Heist、およびWebルートが適切な組み合わせになると思います。

残念ながら、動作するコードが見つかりません。クラッシュコースの例はコンパイルされません。

TemplateHeist.hsファイルをダウンロードしましたが、コンパイルするとこれらのエラーが発生します。

私はHappstackをBlazeとWebルートで動作させるようになりました。私は「明白な」何かを見逃しているに違いありませんが、どこからそれを探し始めるのかわかりません。

0 投票する
1 に答える
296 参照

scala - Snap and Heist に適したフォーム ライブラリ

SnapHeistを使用してフォームを作成するのに役立つライブラリを探しています。私が知っている Snap 用の「祝福された」フォーム ライブラリはありません。また、Hackageの迷子になっているものは、Heist テンプレートの宣言的な性質に特に適しているようには見えません。

Heist はLift Web フレームワークで使用されているテンプレート システムと非常によく似ているため、そこで利用できるものと同様のフォーム サポートを提供してくれるものがないかと考えていました。慣れていない場合は、Heist に翻訳すると大まかに次のようになります。

このようなものをサポートするために一緒に接着できる利用可能なライブラリはありますか?

0 投票する
2 に答える
685 参照

haskell - 可変数のサブフォームを持つ Digestive Functor (Snap/Heist)

PHP から Snap w/Heist へのサイトの移植に取り組んでいます。Digestive Functor をうまく使用するためにいくつかの単純なフォームを移植しましたが、今度はサブフォームの使用を必要とするトリッキーなフォームを実行する必要があります。

このアプリケーションは、小売店向けのチラシの作成を管理するため、実行する必要があるタスクの 1 つは、広告サイズを追加し、印刷されるチラシの物理的な寸法を定義することです。サイズは、ページの種類 (チラシの所有者が設定可能) とその方向 (管理者のみが制御可能) によって異なります。

PHPバージョンでフォームがどのように見えるか

このフォームは最低でも 3 つのセルを持つことが保証されており、おそらく 9 つのセル (上記の PHP バージョンの図のように) を持つことになりますが、理論的には無制限の数を持つことができます。

これまでのところ、寸法サブフォームについて得たものは次のとおりです。

フォームの定義が正しくないように感じます (もしかしたら、ここで完全に間違った考えを持っているのでしょうか?)。 新しい広告サイズの size_id/layout_id のすべての可能な組み合わせのリストを取得するクエリを実行するときにデータベースから戻ってくると null になるため、 であるAdDimensions.dimensions必要がありますが、同様のクエリからは null にはなりません。Maybe String編集フォームの作成時に実行されます。フィールド自体は必須です (データベースでad_dimensions.dimensionsは に設定さnot nullれています)。

ここから先、親フォームにサブフォームのリストがあることを伝える場所や、Heist を使用してそれらをレンダリングする方法がわかりません。

0 投票する
1 に答える
384 参照

haskell - JavaScript内にHeistタグを埋め込む

一部のライブラリの非互換性のため、同じアプリケーションでPandocとHeistの両方を使用することはできません。そのため、クライアントのブラウザでMarkdown形式のデータからHTMLへの変換を処理するためにMarkdown.JSを使用することにしました。これは、長期的にはいくつかの優れた追加の利点をもたらす可能性がありますが、短期的には、PandocがBlaze-HTML 0.4に依存し、HeistがBlaze-HTML0.5に依存しているためです。

したがって、ブログのようなアプリケーションでは、各エントリに入力するために使用されるテンプレートがありますが、ページが読み込まれた後、各エントリのコンテンツをHTMLに変換する必要があります。そこで、次のようなテンプレートを作成しました。

残念ながら、renderDiv呼び出しは最終的に次のようにレンダリングされます。

また、文字列埋め込みフォームを使用してみました(テンプレートのdiv idに対して行ったように):

繰り返しますが、それは逐語的にレンダリングします。

JavaScript内のentryDateでスプライスするようにHeistを説得するにはどうすればよいですか?

または、 Prototype.JSをJavascriptライブラリとして使用しています。スクリプトをdiv内に配置し、基本的に「self」でスクリプトを呼び出す方法はありますか?

0 投票する
1 に答える
123 参照

haskell - なぜEitherTタイプのエラーが発生するのですか?

この関数を使用してHeist(0.11)テンプレートをロードしようとすると、次のようになります。

このエラーが発生します:

私にloadTemplateは、具体的な型で埋められた型パラメータを除いて、期待される型を返しているようです。私は何が欠けていますか?

0 投票する
1 に答える
119 参照

haskell - カバールのインストールエラー-1.3.1が失敗する

最新バージョンのHeistをインストールしようとしてerrors-1.3.1いますが、依存関係がインストールに失敗します。これを乗り越える方法について何か提案はありますか?