En tant que module externe, la méthode d'appel est la même que celle du module mysql et ne sera pas décrite à nouveau.
La fonction de rendu d'ejs a deux paramètres. Le premier est une chaîne et le second est un objet facultatif. Comme les autres modèles JavaScript, les données qui doivent être rendues sont également incluses dans l'objet option
.ejs.render(str,option); // 渲染字符串 str 一般是通过nodejs文件系统的readfile方法读取 ejs.render(str,{ data : user_data // 需要渲染的数据 });
Lorsque la chaîne str ne contient pas la balise include, il n'y a aucun problème avec le rendu des données. Sinon, une erreur sera signalée. Comme mentionné précédemment, mon fichier de projet et le fichier d'installation de nodejs ne se trouvent pas dans le même répertoire racine. Pour résoudre ce problème, vous devez configurer l'attribut filename du paramètre option.
En regardant le code source d'ejs, vous constaterez qu'ejs utilise une fonction solveInclude lors du traitement du chemin du fichier d'inclusion :
function resolveInclude(name, filename) { var path = join(dirname(filename), name); var ext = extname(name); if (!ext) path += '.ejs'; return path; }
filename est le paramètre de la fonction dirname. Comme path.dirname() du module principal nodejs, le chemin renvoyé est toujours relatif au chemin d'installation de nodejs. Si la valeur du nom de fichier n'est pas spécifiée, le fichier ne le sera pas. trouvé
Lorsque vous utilisez dirname, vous devez noter que le premier
sera intercepté lorsque la fonction traitera les paramètres du chemin entrant.
La partie avant « / » est utilisée comme nom de chemin. Par exemple :
path.dirname('/foo/bar/baz/asdf/quux') // returns '/foo/bar/baz/asdf'
Pour récupérer le répertoire tpl, vous pouvez écrire comme ceci :
path.dirname('/tpl/..') // return /tpl
La fonction de rendu complète peut ressembler à ceci :
ejs.render(str,{ filename : path + '/tpl/..', //tpl文件中保存的是模版文件 data: user_data });