nodejs中art-template模板语法的引入及冲突解决方案

 更新时间:2017年11月07日 09:10:25   作者:西安-晁州  
本篇文章主要介绍了nodejs中art-template模板语法的引入及冲突解决方案,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

使用Webstorm创建nodejs express应用时,默认使用的是jade或者ejs模板,对于不习惯这两种模板语法的人来说确实不是很方便。没关系,这里我们使用art-template模板引擎,使用后可以直接使用html模板:

1、安装art-template

npm install art-template

2、修改app.js文件,添加如下代码:

// view engine setup
app.set('views', path.join(__dirname, 'views'));
var template = require('art-template');
template.config('base', '');
template.config('extname', '.html');
app.engine('.html', template.__express);
app.set('view engine', 'html');

3、然后直接创建html页面,js路由便可以直接访问了

4、首先在app.js中添加如下路由拦截:

var routes = require('./routes/index');

...

app.use('/', routes);

然后是index.js文件:

var express = require('express');
var router = express.Router();
var tags = require('../modules/tag.js');

router.get('/', function(req, res, next) {
 res.render("index2",{title:"index2",content:"index2's content"});
});

module.exports = router;

这里我跳转到index2页面(配置好了art-template模板引擎后,视图层默认文件后缀即为html),index2.html页面如下:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>{{title}}</title>
</head>
<body>
{{content}}
</body>
</html>

运行应用,浏览器输出如下:

nodejs中art-template模板语法冲突解决方案

art-template的github地址: https://github.com/aui/art-template

前端开发中,有非常多的模板引擎第三方框架,其中art-template属于写的比较好的一个,一般的模板引擎第三方都会支持一到两种模板语法,最常见的就是大胡子语法 {{ }} 和尖括号语法 <%= %>

本篇文章主要介绍一下在nodejs中,art-template如何解决模板引擎语法冲突

1.1-模板引擎语法冲突的场景

1.如果一个html文件中,既存在客户端渲染,也存在服务端渲染的话,那么这两种渲染的模板引擎语法不能一致,否则在加载时服务端渲染就已经将客户端的模板也一并渲染了

2.一般遇到这种情况,例如一个html文件中既有服务端渲染又有客户端渲染的情况下,服务端的模板引擎我们使用 {{ }} 语法,客户端渲染我们使用 <%= %>

3.在nodejs中,我们使用npm来安装art-template之后: npm install art-template ,默认情况下art-template是同时支持浏览器端与服务端的,并且他们之间的导入文件是不同的

1.2-配置art-template服务端模板语法

1.如果是服务端,我们使用 require('art-template') 来导入,此时加载的是 index.js ,这里的index.js值得是根目录下的index.js,这是nodejs模块加载机制的入口,它的内部非常简单,就是做了一个文件导入操作。

服务端的art-template的模板语法源代码在 art-template 的 lib 文件夹下的 compile文件夹 对应的 adapter 中,两种模板语法分别对应的文件是 rule.art.js简洁语法 , rule.native.js原生语法 ,如下图

 

2.如果是客户端,我们则不能使用服务端的模板语法文件,这是因为nodejs遵循的是commonjs的规范,所有的文件API都是以模块的形式导出,在 art-template 文件夹, lib -> compile 文件夹中有一个专用于客户端的模板语法文件 template-web.js ,这是一个压缩的js包

 

3.浏览器的模板语法默认支持两种语法,简洁和原生,这个无法修改。但是我们可以通过修改服务端的源代码,使服务端只支持一种模板语法 {{ }} ,这样的话我们在客户端使用 <%= %> 语法,服务器就无法渲染了

经过本人对 art-template 源码的分析,发现 art-template 的服务端两种模板语法是在 compile 文件下有一个 default.js 文件中导入的,所以我们只需要稍微修改一下源码即可

默认是一个数组来配置模板语法,[nativeRule, artRule]同时支持两种模板语法,我们去掉nativeRule即可,此时服务端只支持 {{}} 语法,该代码修改不会对客户端造成影响

 

大功告成,此时服务端与客户端的模板语法就不会冲突了

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

相关文章

  • node.js中的http.response.getHeader方法使用说明

    node.js中的http.response.getHeader方法使用说明

    这篇文章主要介绍了node.js中的http.response.getHeader方法使用说明,本文介绍了http.response.getHeader的方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下
    2014-12-12
  • Node.js 实现远程桌面监控的方法步骤

    Node.js 实现远程桌面监控的方法步骤

    这篇文章主要介绍了Node.js 实现远程桌面监控的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • node.js中的console.assert方法使用说明

    node.js中的console.assert方法使用说明

    这篇文章主要介绍了node.js中的console.assert方法使用说明,本文介绍了console.assert的方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下
    2014-12-12
  • 使用nvm切换node版本的实现方法

    使用nvm切换node版本的实现方法

    我们在工作中可能会碰到这样的情况:一个人要负责多个项目的维护,而项目中的插件又各有不同,插件下载所需的node版本可能也不同,所以只有一个node版本是无法满足工作需求的,所以就有了nvm,volta等node版本管理工具,在本节将介绍nvm的使用方法
    2023-10-10
  • 详解Node.js一行命令上传本地文件到服务器

    详解Node.js一行命令上传本地文件到服务器

    这篇文章主要介绍了Node.js一行命令上传本地文件到服务器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • node NPM库glob通配符匹配文件名minimatch模式匹配字符串学习

    node NPM库glob通配符匹配文件名minimatch模式匹配字符串学习

    这篇文章主要为大家介绍了node NPM库glob通配符匹配文件名minimatch模式匹配字符串学习,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • 安装nvm并使用nvm安装nodejs及配置环境变量的全过程

    安装nvm并使用nvm安装nodejs及配置环境变量的全过程

    有时候使用nvm管理node会发现无法使用node或npm,主要原因是环境变量没有配置成功,下面这篇文章主要给大家介绍了关于安装nvm并使用nvm安装nodejs及配置环境变量的相关资料,需要的朋友可以参考下
    2023-03-03
  • 一文带你了解Node.js中的path模块

    一文带你了解Node.js中的path模块

    Node.js和Python技术类似, 都致力于能够实现跨平台的通用代码。 为此,针对路径的拼接, Node.js提供了path模块,本文就来讲讲path模块的使用
    2023-03-03
  • 详解Node.js中间件是怎样工作的

    详解Node.js中间件是怎样工作的

    这篇文章主要介绍了详解Node.js中间件是怎样工作的,对中间件感兴趣的同学,可以参考下
    2021-04-04
  • nodejs中request库使用HTTPS代理的方法

    nodejs中request库使用HTTPS代理的方法

    这篇文章主要介绍了nodejs中request库使用HTTPS代理的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-04-04

最新评论