基于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 相关文章推荐
JavaScript面向对象编程
Mar 02 Javascript
基于jquery的web页面日期格式化插件
Nov 15 Javascript
javascript针对DOM的应用分析(三)
Apr 15 Javascript
jQuery函数map()和each()介绍及异同点分析
Nov 08 Javascript
js原型链与继承解析(初体验)
May 09 Javascript
全面了解JavaScript对象进阶
Jul 19 Javascript
JavaScript蒙板(model)功能的简单实现代码
Aug 04 Javascript
Javascript使用uploadify来实现多文件上传
Nov 16 Javascript
Bootstrap 模态框多次显示后台提交多次BUG的解决方法
Dec 26 Javascript
ionic3实战教程之随机布局瀑布流的实现方法
Dec 28 Javascript
浅谈对于“不用setInterval,用setTimeout”的理解
Aug 28 Javascript
layui实现图片虚拟路径上传,预览和删除的例子
Sep 25 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
ThinkPHP中自定义目录结构的设置方法
2014/08/15 PHP
如何使用Gitblog和Markdown建自己的博客
2015/07/31 PHP
PHP安装GeoIP扩展根据IP获取地理位置及计算距离的方法
2016/07/01 PHP
Laravel 5.3 学习笔记之 配置
2016/08/28 PHP
PHP有序表查找之插值查找算法示例
2018/02/10 PHP
PHP常见的序列化与反序列化操作实例分析
2019/10/28 PHP
为Extjs加加速(javascript加速)
2010/08/19 Javascript
js中判断文本框是否为空的两种方法
2011/07/31 Javascript
JavaScript高级程序设计 阅读笔记(十三) js定义类或对象
2012/08/14 Javascript
jquery实现倒计时代码分享
2014/06/13 Javascript
NodeJS学习笔记之网络编程
2014/08/03 NodeJs
javascript去掉代码里面的注释
2015/07/24 Javascript
原生javascript实现匀速运动动画效果
2016/02/26 Javascript
深入浅析Extjs中store分组功能的使用方法
2016/04/20 Javascript
AngularJS上拉加载问题解决方法
2016/05/23 Javascript
AngularJS 遇到的小坑与技巧小结
2016/06/07 Javascript
JavaScript学习笔记--常用的互动方法
2016/12/07 Javascript
TypeScript入门-基本数据类型
2017/03/28 Javascript
使用jQuery实现页面定时弹出广告效果
2017/08/24 jQuery
Python类属性与实例属性用法分析
2015/05/09 Python
python查找指定具有相同内容文件的方法
2015/06/28 Python
详解python OpenCV学习笔记之直方图均衡化
2018/02/08 Python
Pandas实现数据类型转换的一些小技巧汇总
2018/05/07 Python
解决python大批量读写.doc文件的问题
2018/05/08 Python
Django:使用filter的pk进行多值查询操作
2020/07/15 Python
For Art’s Sake官网:手工制作的奢华眼镜
2018/12/15 全球购物
如何将无状态会话Bean发布为WEB服务,只有无状态会话Bean可以发布为WEB服务?
2015/12/03 面试题
什么是继承
2013/12/07 面试题
优秀女职工事迹材料
2014/02/06 职场文书
《开国大典》教学反思
2014/04/19 职场文书
邓小平理论心得体会
2014/09/09 职场文书
群众路线四风自我剖析材料
2014/10/08 职场文书
模范班主任事迹材料
2014/12/17 职场文书
高中化学教学反思
2016/02/22 职场文书
Python中如何处理常见报错
2022/01/18 Python
Nginx实现负载均衡的项目实践
2022/03/18 Servers