宝哥软件园

nodejs中艺术模板模板语法介绍和冲突解决

编辑:宝哥软件园 来源:互联网 时间:2021-09-03

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

1.安装艺术模板

Npm安装艺术模板2。修改app.js文件并添加以下代码:

//view engine setup app . set(' views ',path.join(__dirname,' views ');var template=required(' art-template ');template.config('base ',' ');template.config('extname ',')。html ');app.engine('。' html ',模板。_ _快递);app.set('视图引擎',' html ');3.然后直接创建一个html页面,可以直接访问js路由

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

var routes=require('。/routes/index’);app.use('/',routes);然后是index.js文件:

var express=require(' express ');var路由器=express。路由器();var标记=要求('./modules/tag . js’);router.get('/',函数(req,res,next) { res.render('index2 ',{title:'index2 ',content : ' index 2 ' s content ' });});module.exports=路由器;在这里,我跳转到index2页面(在配置了art-template模板引擎之后,视图层的默认文件后缀是html),index2.html页面如下:

!doctype html lang=' en ' head meta charset=' utf-8 ' title { { title } }/title/head body { { content } }/body/html要运行应用程序,浏览器输出如下:

nodejs中艺术模板-模板语法冲突的解决

艺术的Github地址-模板:https://github.com/aui/art-template

在前端开发中,模板引擎的第三方框架有很多,其中art-template是比较好的一个。模板引擎的第三方一般支持一两个模板语法,最常见的是beard语法{{}}和尖括号语法%=%

本文主要介绍art-template如何解决nodejs中模板引擎的语法冲突

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

1.如果一个html文件中同时存在客户端渲染和服务器端渲染,这两种渲染的模板引擎的语法就不能一致,否则服务器端渲染在加载时就已经渲染了客户端模板。

2.通常,当html文件中同时存在服务器端呈现和客户端呈现时,我们在服务器端对模板引擎使用{{}}语法,在客户端对其使用%=%语法。

3.在nodejs中,我们使用npm安装art-template,然后: npm安装art-template。默认情况下,艺术模板支持浏览器和服务器,它们之间的导入文件是不同的

1.2-配置艺术模板服务器模板语法

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

服务器上艺术模板的模板语法源代码在与艺术模板lib文件夹下的编译文件夹对应的适配器中。两个模板语法对应的文件是rule.art.js的简单语法和rule.native.js的本机语法,如下图所示

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

3.浏览器的模板语法默认支持简洁和原生两种语法,不可修改。但是,我们可以修改服务器的源代码,使服务器只支持一种模板语法{{}}。在这种情况下,如果我们在客户端使用%=%语法,服务器将无法呈现它。

在分析了art-template的源代码之后,我发现art-template服务器端的两个模板的语法都导入到了编译文件下的一个default.js文件中,所以我们只需要稍微修改一下源代码

默认情况下,数组用于配置模板语法。[nativerole,artRule]同时支持两种模板语法,所以我们可以删除nativerole。此时,服务器仅支持{{}}语法,此代码修改不会影响客户端。

完成后,服务器和客户端之间的模板语法不会发生冲突

以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。

更多资讯
游戏推荐
更多+