検索
ホームページphp教程PHP开发Angular.Js と Django タグ間の競合を解決するソリューション

前書き

Django と Angular のテンプレート システムは非常によく似たタグ システムを使用していることを誰もが知っているはずです。たとえば、どちらも変数名を表すために {{ content }} を使用します。したがって、Django と Angular を一緒に使用すると競合が発生する可能性があります。オンラインでいくつかの解決策を見つけました。では、まとめてご紹介しますので、一緒に見ていきましょう。

1. AngularJs のデフォルトのタグを変更する

次のコードは、Angular の元のタグを {[{ content }]} に変更できます。

Angularタグを変更する

myModule.config(function($interpolateProvider) {
 $interpolateProvider.startSymbol('{[{');
 $interpolateProvider.endSymbol('}]}');
});

これは比較的シンプルで直感的な方法です。変更されたコードは読みやすくなり、Django タグなのか Angular タグなのかが一目でわかります。欠点は、サードパーティのプラグインと競合しやすいことです (サードパーティのプラグインが命令やその他のタグを使用している場合)。

2. テンプレート コンテンツの一部をレンダリングしないように Django に指示します

Django 1.5 以降では、{% verbatim %} タグがサポートされており (verbatim は文字通り逐語的翻訳を意味します)、Django は逐語的タグ パッケージのコンテンツをレンダリングしません。

{% verbatim %}
 {{if dying}}Still alive.{{/if}}
{% endverbatim %}

このタグはネストをサポートしていませんが、タグに名前を追加できます:

{% verbatim myblock %}
 Avoid template rendering via the {% verbatim %}{% endverbatim %} block.
{% endverbatim myblock %}

このようにして、Django は、終了マークとして myblock の末尾を検索します。途中に挿入されたverbatimタグはmyblockの未説明部分として処理されます。

このソリューションの利点は、コードの複雑さを増やさず、Django によってネイティブにサポートされており、Angular に影響を与えないことです。欠点は、多くの逐語的タグがさまざまな場所で使用される可能性があり、テンプレートが非常に煩雑になることです。

3. サードパーティのプラグインを使用する

現在、私が知っているプラ​​グインは django-angular です。このプラグインには、Django タグと Angular タグを混合する機能があります。

角度タグを正しく解析しながら、Django の if タグやその他のタグを引き続き使用できます。

{% load djng_tags %}
{% angularjs ng %}
<div{% if ng %} ng-repeat="item in items"{% endif %}>
 <h4 id="a-nbsp-ng-href-nbsp-item-absolute-url-nbsp-nbsp-if-nbsp-not-nbsp-ng-nbsp-nbsp-href-nbsp-item-absolute-url-nbsp-nbsp-endif-nbsp-nbsp-item-name-nbsp-a"><a ng-href="{{ item.absolute_url }}"{% if not ng %} href="{{ item.absolute_url }}"{% endif %}>{{ item.name }}</a></h4>
 <img  src="/static/imghwm/default1.png"  data-src="{{ item.image.url }}"  class="lazy"  ng-{% if not ng %} {% endif %}    style="max-width:90%" height="{{ item.image.height }}" / alt="Angular.Js と Django タグ間の競合を解決するソリューション" >
 <div{% if ng %} ng-bind-html="item.description"{% endif %}>{% if not ng %}{{ item.description }}{% endif %}</div>
</div>
{% endangularjs %}

このデメリットは、プラグインを導入するとコードが複雑になるため、チーム全員がこの書き方を学ぶ必要があることですが、個人的にはエラーが増えやすいと感じています。

変数を記述するときは、フロントエンドとバックエンドを分離するようにしてください。データは Angular に渡されます。

概要

上記がこの記事の全内容です。この記事の内容が皆さんの学習や仕事に少しでも役立つことを願っています。ご質問がある場合は、メッセージを残して連絡してください。

Angular.Js と Django の間のタグ競合を解決するソリューションに関するその他の関連記事については、PHP 中国語 Web サイトに注目してください。


声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール