Inclure du SVG xml dans le modèle Jade
Est-il possible de créer un Jade mixin, qui lit un fichier du système de fichiers et les échos dans le rendu HTML?
J'ai essayé ce...
mixin svg(file)
- var fs = require("fs");
- var xml = fs.readFileSync(file)
div= xml
... mais il échoue car require
n'existe pas.
OriginalL'auteur Billy Moon | 2014-05-28
Vous devez vous connecter pour publier un commentaire.
Je pense qu'il y a deux façons d'y parvenir. Celui-ci montre le droit chemin en cas de non utilisation de mixin est acceptable pour vous. La première solution, enveloppements votre approche:
Un: Pass variable
require
oufs
à votre modèle jadeAssurez-vous que les fonctions nécessaires sont disponibles (étendue) au cours de jade modèle d'analyse. En supposant que vous êtes en utilisant exprimer cela pourrait ressembler à ceci:
Maintenant votre mixin devrait travailler avec les deux modifications mineures:
Vous pouvez même passer juste
{ require: 'require' }
comme un local pour le modèle jade et l'utilisation de votre original mixin code. Notez que dans tous les cas vous devez supprimer de s'échapper de la sortie avec!=
afin de transférer SVG balisage de sorte qu'il est interprété et rendu au lieu d'être affiché comme (HTML) du texte. Sachez également quefs
vie de votre app/code de contrôleur et les chemins d'accès doivent être exprimée par rapport à ça, par exemple:B: Ou utilisez simplement inclure (sans mixin)
Jade est capable d'inclure d'autres types de contenus, de sorte qu'un simple
fait ce travail. Malheureusement cela ne fonctionne pas de manière dynamique, de sorte que vous ne pouvez pas inclure de fichiers à l'aide transmis variables à l'intérieur de mixin. Mais: aussi longtemps Que vous n'avez pas l'intention d'enrichir votre mixin avec de la logique supplémentaire, cette solution n'a même pas de produire (moyen) plus de code.
!=
dans la div dans le cas B, puisque vous d'inclure le fichier à l'intérieur de la div que partielle.Merci pour cette correction, j'ai enfin résolu ce problème!
OriginalL'auteur matthias
Réponses ci-dessus n'travail, mais si vous voulez faire un SVG en ligne. Vous pouvez le faire comme ceci.
OriginalL'auteur Ahmad Awais
J'ai plus de chance avec
object
, tels quea.svg(href='/')
object(type="image/svg+xml" data="/img/#{data.menu.img}.svg")
| #{data.menu.title}
OriginalL'auteur tomByrer