Node.js項目中調用JavaScript的EJS模板庫的方法,node.jsejs

來源:互聯網
上載者:User

Node.js項目中調用JavaScript的EJS模板庫的方法,node.jsejs

作為外部模組,調用的方法和mysql模組是相同的,不再贅述。

ejs的render函數有兩個參數 第一個是字串,第二個是可選的對象,和其他javascript模版一樣需要渲染的資料也是包含在option對象中的

ejs.render(str,option); // 渲染字串 str 一般是通過nodejs檔案系統的readfile方法讀取 ejs.render(str,{   data : user_data // 需要渲染的資料 }); 

當str字串中沒有包含 include 標籤時,渲染資料是沒有問題的,反之,就會報錯。前面已經講過我的專案檔和nodejs的安裝檔案不在同一個根目錄下。解決這個問題需要配置option參數的filename屬性。

查看ejs源碼,會發現,ejs在處理include包含檔案的路徑時會用到一個resolveInclude函數:

function resolveInclude(name, filename) {  var path = join(dirname(filename), name);  var ext = extname(name);  if (!ext) path += '.ejs';  return path; } 

filename正是dirname函數的參數,作為nodejs核心模組的path.dirname(),返回的path總是相對nodejs的安裝路徑,如果不指定filename值,就會找不到檔案
在使用dirname時應當注意,函數處理傳入的路徑參數時會截取第一個
 '/' 之前的部分作為路徑名例如:

path.dirname('/foo/bar/baz/asdf/quux') // returns '/foo/bar/baz/asdf' 

要取得tpl目錄可以這樣寫:

path.dirname('/tpl/..') // return /tpl 

完整的render函數可以這樣:

ejs.render(str,{   filename : path + '/tpl/..', //tpl檔案中儲存的是模版檔案   data: user_data }); 

您可能感興趣的文章:
  • node.js 使用ejs模板引擎時尾碼換成.html
  • ejs v9 javascript模板系統
  • NodeJS架構Express的模板視圖機制分析

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.