基于react后端渲染模板引擎noox发布使用


Posted in Javascript onJanuary 11, 2018

React 组件化思想受到越来越多开发者的关注,组件化思想帮助开发者将页面解耦成一个一个组件,代码更加模块化, 更易扩展。而目前流行的后端模板引擎如 ejs, swig, jade, art 共同的问题是:

  1. 需要学习各类模板引擎定义的语法,如 {{if}}, {{loop}}
  2. 对组件化支持不够强,实现复杂,不易用

针对以上痛点,笔者基于 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" rel="external nofollow" rel="external nofollow" />
</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" rel="external nofollow" rel="external nofollow" />
</head>

原理

Noox 在 React 的 Jsx 的基础上,简化了组件引用和创建,假设创建一个目录结构如下:

components/
 Header.jsx
 Body.jsx
 Layout.jsx

运行如下 nodejs 的代码:

nx = new noox(path.resolve(__dirname, './components'))

将会创建三个组件:

  1. Header
  2. Body
  3. Layout

然后通过 nx.render 渲染

nx.render('Body', props)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Jsonp 跨域的原理以及Jquery的解决方案
May 18 Javascript
javascript写的日历类(基于pj)
Dec 28 Javascript
Prototype源码浅析 Enumerable部分之each方法
Jan 16 Javascript
使用indexOf等在JavaScript的数组中进行元素查找和替换
Sep 18 Javascript
node+express+jade制作简单网站指南
Nov 26 Javascript
浅析JavaScript中的事件机制
Jun 04 Javascript
简单对比分析JavaScript中的apply,call与this的使用
Dec 04 Javascript
JS自定义函数对web前端上传的文件进行类型大小判断
Oct 19 Javascript
Vue2.0 实现移动端图片上传功能
May 30 Javascript
详解Vue2 添加对scss的支持
Jan 02 Javascript
微信小程序实现展示评分结果功能
Feb 15 Javascript
vue中监听路由参数的变化及方法
Dec 06 Javascript
Router解决跨模块下的页面跳转示例
Jan 11 #Javascript
vuex 使用文档小结篇
Jan 11 #Javascript
js判断传入时间和当前时间大小实例(超简单)
Jan 11 #Javascript
js点击时关闭该范围下拉菜单之外的菜单方法
Jan 11 #Javascript
纯js代码生成可搜索选择下拉列表的实例
Jan 11 #Javascript
web前端vue之vuex单独一文件使用方式实例详解
Jan 11 #Javascript
vue-cli webpack 引入jquery的方法
Jan 10 #jQuery
You might like
PHP结合Ueditor并修改图片上传路径
2016/10/16 PHP
PHP+mysql实现的三级联动菜单功能示例
2019/02/15 PHP
js中字符替换函数String.replace()使用技巧
2011/08/14 Javascript
xml转json的js代码
2012/08/28 Javascript
网页防止tab键的使用快速解决方法
2013/11/07 Javascript
Vue header组件开发详解
2018/01/26 Javascript
详解vue 数据传递的方法
2018/04/19 Javascript
vue 指令之气泡提示效果的实现代码
2018/10/18 Javascript
vue-cli的build的文件夹下没有dev-server.js文件配置mock数据的方法
2019/04/17 Javascript
详解VSCode配置启动Vue项目
2019/05/14 Javascript
Swiper.js实现移动端元素左右滑动
2019/09/08 Javascript
JavaScript实现留言板案例
2020/03/17 Javascript
python logging类库使用例子
2014/11/22 Python
在python3.5中使用OpenCV的实例讲解
2018/04/02 Python
python实现简单http服务器功能
2018/09/17 Python
关于Pycharm无法debug问题的总结
2019/01/19 Python
Python:合并两个numpy矩阵的实现
2019/12/02 Python
Pytorch Tensor的统计属性实例讲解
2019/12/30 Python
Django model重写save方法及update踩坑详解
2020/07/27 Python
HTML5 自动聚焦(autofocus)属性使用介绍
2013/08/07 HTML / CSS
美国当红的名品折扣网:Gilt Groupe
2016/08/15 全球购物
佳能德国网上商店:Canon德国
2017/03/18 全球购物
Europcar葡萄牙:葡萄牙汽车和货车租赁
2017/10/13 全球购物
goodhealth官方海外旗舰店:新西兰国民营养师
2017/12/15 全球购物
Spartoo瑞典:鞋子、包包和衣服
2018/09/15 全球购物
集世界奢侈品和设计师品牌的意大利精品买手店:Tessabit
2019/08/17 全球购物
党校自我鉴定范文
2013/10/02 职场文书
求职信模板怎么做
2014/01/26 职场文书
物业保安员岗位职责制度
2014/01/30 职场文书
经济信息系毕业生自荐信
2014/06/02 职场文书
带刀到教室的检讨书
2014/10/04 职场文书
物业前台接待岗位职责
2015/04/03 职场文书
《世界多美呀》教学反思
2016/02/22 职场文书
《追风筝的人》:人心中的成见是座大山,但请不忘初心
2019/11/15 职场文书
MySQL优化常用的19种有效方法(推荐!)
2022/03/17 MySQL
PostgreSQL并行计算算法及参数强制并行度设置方法
2022/04/06 PostgreSQL