問題タブ [enlive]
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.
clojure - enlive で Unicode を Web スクレイピングに使用する方法
ユニコードのサポートが必要ないくつかのサイトをスクレイピングしようとしています。たとえば、この本のタイトルを取得しようとしていますが、ごちゃごちゃした文字が返されます。
アラビア語のサイトをスクレイピングしようとすると、?????? が返されます。あらゆる所に。
Unicode サポートを有効にする方法がわかりません。
clojure - 相対リンクと非ルート コンテキスト パスを使用して Clojure Web アプリケーションを Jetty にデプロイするとリンクが壊れる
私は Clojure で Web アプリケーションを作成する実験を行ってきましたが、これまでは非常に簡単でした。私は Chas Emerick の優れたスクリーンキャストに従って clojureを開始し、URL 短縮サービスをすぐに実行できるようにしました。次に、それを展開できるようにしたかったのですが、それが問題の始まりでした。
開発で実行するか、ルート Web アプリケーションとして Jetty にデプロイすると、すべて問題ありませんが、コンテキスト パスを使用してデプロイすると、うまくいきません。というか、ほとんど効きます。すべての Compojure ルートは引き続き機能FORM
しますが、HTML ファイル内のアクション リンクが壊れており、404 が表示されます。
これは Compojure ルートのセットアップです。
ホームページ テンプレートの HTML は次のとおりです。
問題はaction="shorten"
URLです。/example
フォーム送信をトリガーするまで、すべてのコンテキストパスを使用して Jetty にデプロイすると、正常に動作します。localhost:8080/shorten
次に、Jetty は、それが相対パスとしてではなく絶対パスとして扱われていることを意味する (私が思うに)見つけられないと不平を言います。
だから、私の質問は次のとおりです。これを修正するにはどうすればよいですか?アクション リンクでフル パスを指定することもできると思いますが、それでは柔軟性がなくなり、開発中のサーブレットの実行が難しくなります。これから抜け出す方法を設定する方法はありますか? ~/
または、正しいことを行うだけの魔法の URL プレフィックス (Razor など) はありますか?
data-structures - Clojure:マップエントリのlazyseqをどのようにstructmapに変換しますか?
私はclojureを初めて使用し、enliveを使用してhtmlドキュメントのテキストノードを変換してきました。私の最終目標は、構造をhtml、タグ、その他すべてに変換することです。
現在、enlive-html / html-resourceによって返された構造マップを取得し、それを使用してhtmlに変換することができます。
ここで、nodesは構造マップです。
必要に応じて、structmapの:contentテキストノードを変換することもできます。ただし、structmapのコンテンツテキストノードを変換した後、MapEntriesのlazyseqになります。これを構造マップに変換して戻したいので、emit*を使用できます。lazyseqsとstructmapsがネストされているため、これは少し注意が必要です。
tldr:
変換するにはどうすればよいですか:
の中へ:
アップデート
kotarakの応答は、の方向を示していましたupdate-in
。これを使用して、マップをシーケンスに変換せずに所定の位置に変更することができたため、質問は無関係になりました。
for
以前は地図で使っていましたupdate-in
が、行く方法です。
clojure - enlive の deftemplate でローカル変数をバインドする
私は clojure と Web 開発スタックが初めてです。enlive を使用して HTML テンプレートに値を設定しようとしています:
これは、2 つの HTML 要素を設定するのに問題なく機能しますが、関数を繰り返し呼び出す必要がありますget-project
。現時点では、これはローカル マップから読み取るだけですが、最終的には外部ストレージへのアクセスが必要になるため、この関数で 1 回だけ実行することをお勧めします。
私は使用することを考えていましたlet
:
ただし、これは description 要素にのみ影響し、name フォームは無視されます。
内でローカル変数をバインドする最良の方法は何deftemplate
ですか?
clojure - 事前定義されたセレクターステップを活性化する
Enlive を使用して、この html の replace-me スクリプト タグを複製しようとしています。
質問1)
最後のスクリプト要素の「慣用的な」セレクターが何であるかを理解するのに苦労しています。現在、私は使用しています
あれは正しいですか?
質問2)
head エンティティ全体を変換するためのこのスニペットがあります。
これはルート セレクター ステップの正しい使用法ですか? defsnippet のコンテキスト内で、root が [:head] セレクターを参照していると仮定していますが、それは正しいですか?
ありがとう!
clojure - restar なしで enlive を使用するときにテンプレートをリロードする方法
Web 開発に enlive を使用しています。を使用してreplでリングサーバーを起動します(serve my-app/handler)
ただし、html テンプレートのいずれかに変更を加えた場合、変更を表示するには repl を再起動する必要があります。repl を再起動せずにマークアップをリロードするにはどうすればよいですか?
ありがとう、ムルタザ
clojure - enliveでsrcフォルダーの外部からテンプレートを使用する
enliveでソースフォルダの外部からテンプレートを提供することは可能ですか?
src/templatesフォルダーではなくresources/public / templatesフォルダーからテンプレートを取得したいのですが、どうすればよいですか?
ありがとう、ムルタザ
clojure - Enlive の属性に追加する
enlive を使用して属性に値を追加することは可能ですか?
例:私はこれを持っています
そしてこれが欲しい
私は現在これをやっています:
しかし、ID を既存の URL に追加するだけで、URL をコードに埋め込まないようにしたいと思います。
clojure - Clojure Enlive で HTML を含む文字列を追加する方法
この方法でテンプレートを定義しました。
ここで、コンテンツ文字列には HTML が含まれています (例: "<tr><td><a href="mylink">my link</a></td></tr>)。残念ながら、これは機能しません。代わりに<tr> と <td> を削除して <a> タグのみを残します.別のアプローチで試しました (異なる結果が得られました).どんな助けも大歓迎です!
clojure - clojure、enlive、マルチサイト
リクエストで:server-nameが返す内容に基づいて、特定のテンプレートを読み込もうとしています。
/home/usr/rosay/resources/localhost/base.htmlを返すローカルホストで機能しますが、別のホストに対して「hostname2」とテストすると、get-templateが/ home / usr / rosay/resourcesを参照している場所がわかります。 /hostname2/base.htmlですが、ブラウザでレンダリングすると、常に../resources/localhost/base.htmlを指します。
このユースケースを処理するためのマクロまたは別の方法はありますか?