2.6.11
https://gist.github.com/aimozg/c073eea5a55062e3dcd8f887a8567807
Nodeでexample.jsを実行します。
代替手順/詳細な説明:
whitespace: 'condense'
してVueテンプレートコンパイラをセットアップします。 (vue-cliのデフォルトです)。
エンティティを使用してテンプレートをレンダリングします(例: <p>a b</p>
エンティティはノーブレークスペース文字としてレンダリングされます。 example.jsの出力には次のものが含まれている必要があります
---- whitespace: condense
// code
NBSP FOUND
エンティティはプレーンスペースとしてレンダリングされ、example.jsの出力には次のものが含まれます
---- whitespace: condense
// code
NBSP NOT FOUND
空白は、次のコンパイラコードによって削除されます。
if (!inPre && whitespaceOption === 'condense') {
// condense consecutive whitespaces into single space
text = text.replace(whitespaceRE, ' ')
}
" "
は、以前のエンティティデコーダーで"\xA0"
置き換えられました。
関連する問題はhttps://github.com/vuejs/vue/issues/10485です
提案:
/[ \t\r\n]+/g
ように、より狭いwhitespaceRE正規表現。
一般的に、壊れないスペースに触れてはいけませんか? これは、テンプレートで使用する場合に個人的に期待することです。 それはまたあなたが言及した問題を修正するでしょう
空白を使用してVueテンプレートコンパイラを設定します: 'condense'。 (vue-cliのデフォルトです) 。
待って、私は混乱しています。 condense
本当にデフォルトですか? preserve
が実際にはデフォルトであると主張するものが複数あります。
壊れないスペースが機能していない理由を理解するのに苦労してきました。 私は保存を強制しようとしましたが、それから見ました:
デフォルトはpreserve
とエヴァンは言っていますhttps://github.com/vuejs/vue/issues/9208#issuecomment -450012518
そして、そのステートメントをエコーするコンパイラオプションのドキュメントhttps://github.com/vuejs/vue/tree/dev/packages/vue-template-compiler#options
@aimozgがcondense
が実際にはデフォルトであると言っているのを見て、私は先に進んで手動でpreserve
を設定しました。 すべてが正常に戻りました!
ドキュメント/実装は間違っていますか?
いずれにせよ、なぜ凝縮はnbspを排除するのでしょうか? 非常に予期しない動作。 私は彼らが触れられるべきではないことに同意します。
下位互換性を確保するためにVueコアでは空白が保持されますが、最新バージョンのVue CLIでは、デフォルトでcondense
されています。
エスケープされたタブと同じ	
コードの表示が非常に難しくなります
これがマージされるのを待っています。
現在の回避策
使用する
{{'\xa0'}}
の代わりに
最も参考になるコメント
一般的に、壊れないスペースに触れてはいけませんか? これは、テンプレートで使用する場合に個人的に期待することです。 それはまたあなたが言及した問題を修正するでしょう