React 元件化思想受到越來越多開發者的關注,元件化思想幫助開發者將頁面解耦成一個一個元件,程式碼更加模組化, 更易擴充套件。而目前流行的後端模板引擎如 ejs, swig, jade, art 共同的問題是:
- 需要學習各類别範本引擎定義的語法,如 {{if}}, {{loop}}
- 對元件化支援不夠強,實現複雜,不易用
針對以上痛點,筆者基於 React 造出了 noox 這樣一個工具,專注於後端模板的解析,讓模板解析更加簡單,易用。
使用方法
安裝
npm install noox
複製程式碼
簡單的 demo
模板程式碼
首先建立元件目錄和增加模板檔案
mkdir components && cd components
vi Head.jsx
複製程式碼
Head.jsx 內容如下:
<head>
<title>{title}</title>
<meta name="description" content={props.description} />
<link rel="stylesheet" href="./css/style.css" />
</head>
複製程式碼
Node.js Code
const noox = require('noox');
const nx = new noox(path.resolve(__dirname, './components'), {title: 'noox'});
let output = nx.render('Head', {description: 'hello, noox.'})
複製程式碼
輸出
<head>
<title>noox</title>
<meta name="description" content="hello, noox." />
<link rel="stylesheet" href="./css/style.css" />
</head>
複製程式碼
原理
Noox 在 React 的 Jsx 的基礎上,簡化了元件引用和建立,假設建立一個目錄結構如下:
components/
Header.jsx
Body.jsx
Layout.jsx
複製程式碼
執行如下 nodejs 的程式碼:
nx = new noox(path.resolve(__dirname, './components'))
複製程式碼
將會建立三個元件:
- Header
- Body
- Layout
然後通過 nx.render 渲染
nx.render('Body', props)
複製程式碼
後記
感興趣的可以 star 關注下,共同探討
Github: noox
另外推廣下我們團隊的專案 YApi