首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JS实现一个模板引擎

---- 现成的模板引擎 开始手写之前,我们先看看模板引擎应该是什么样的,在用koa开发后台服务的时候,我们用过ejs模板引擎,其作用是把模板渲染成html代码。下面是一个具体的使用例子。...安装 npm install ejs 使用示例 在koa中使用ejs模板引擎。...app = new Koa() // 加载模板引擎 app.use(views(path.join(__dirname, '....手写简单的模板引擎 那这些模板引擎具体是怎么实现的呢? 下面我们来手写一个简单的类ejs模板引擎。 需求分析 实现模板引擎先要定义模板的语法,这里我们就重新不定义了,直接使用ejs的语法。...在里面的字符,保留为js逻辑 在里面的字符,保留js逻辑,且其值输出为html代码。 对这些处理方式,着手实现。 正则/<%=(.+?)

1.6K20

学习zepto.js(对象方法)

学习zepto.js(对象方法)[1] zepto也是使用的链式操作,链式操作:函数返回调用函数的对象....但并不是所有的对象方法都可以进行链式操作,举几个例子:.size(),.html()|.text()//不传参数的情况下; 若非特殊说明,下边介绍的方法都会返回zepto对象; add(): 支持一到二个参数...add函数本身无任何亮点- -,将两个参数原封不动的传入$()然后返回一个Zepto对象,执行concat函数,该函数会将所有参数添加至调用函数对象的末尾, toArray方法会调用get方法,当get...方法执行时而没有传入参数,会将该对象所有的匹配元素以数组的形式返回; uniq方法是一个数组去重的方法,返回的还是一个数组,然后回到add方法再次通过$()构造一个zepto对象并返回; addClass...通过each方法循环遍历对象,each方法会返回一个zepto对象.首先会判断元素是否存在className属性, 通过className方法获取到当前元素的所有className信息的字符串; ?

2.6K80
您找到你想要的搜索结果了吗?
是的
没有找到

学习zepto.js(原型方法)

学习zepto.js(原型方法)[1] 新的一周,新的开始,今天来学习一下zepto里边的原型方法,就是通过$.进行调用的方法,也是可以通过$.fn进行扩展的方法: $.camelCase...(本人发现zepto中的原型方法都是通过将匿名函数赋值给变量的方式来进行声明的,而直接使用function声明的函数在外部是获取不到的)解释的不详细,是因为原型方法都有一个原型的引用,而那些普通函数没有做这个引用...,所以说,使用$.extend来使$.fn继承某些方法,进行扩展插件. $.fn.alert = function () {   alert(this.html());//this指向调用该方法的Zepto...,如果有多个,须结合$.extend使用*/ $.extend($.fn, { alert: function () { alert(this.html());//this指向调用该方法的Zepto...对象  }, confirm : function () { confirm(this.html());//this指向调用该方法的Zepto对象  } }); PS:为了配合链式操作,

2K90

学习zepto.js(对象方法)

学习zepto.js(对象方法)[4] 今天说说那一套获取元素集合的一些方法: ["children", "clone", "closest", "contents", "empty...如果不填则是所有子节点,否则为匹配的所有子节点; $("#demo").children();//-->所有的子节点 $("#demo").children("li");//-->所有的li子节点 返回的是一个zepto...如果不是一个字符串,就判断是否是一个类数组,并且对象的item是一个方法,(是的,变相的判断为一个zepto对象.) 其余的情况,直接通过参数构建一个zepto对象....以上操作均为给excludes变量赋值; 在最后,通过循环对象.将对象中不存在于excludes变量中的所有元素取出.并构件为一个zepto对象....可以传入一个zepto对象,或者一个dom标签数组.一个html片段.等等…… 当然最后返回的对象决不会存在于not的参数中. //indexOf就是数组的原生方法

2.5K60

学习zepto.js(对象方法)

学习zepto.js(对象方法)[6] first: 获取当前对象集合中的第一个dom元素。...$("div").first();// 返回第一个div对象(zepto对象) //相当于 $("div").eq(0); 与之对应的是last last: 获取当前对象集合中的最后一个dom元素。...$("div").last();// 返回最后一个div对象(zepto对象) //相当于 $("div").eq(-1); 两方法不接收任何参数。 ?...个人认为调用isObject方法没什么用,因为zepto对象集合里存放的都是dom元素。//也许是我无知吧- - 被大神点醒了。这样做也许是为了这种场景 ?...(dom对象,不是zepto对象) $("div").get();      //所有div对象组成的一个数组 该方法与eq方法的区别在于,eq返回的是zepto对象,而get返回的是dom对象,$()

2.6K80

学习zepto.js(对象方法)

学习zepto.js(对象方法)[3] 继续说zepto里attributes的相关操作. attr,removeAttr,prop这三个方法....string字符串 $("").attr("id"); //--> "special" 注意:只能返回对象中第一个节点的属性值 set: 返回值为一个zepto...>").attr("id","special"); //--> [] 第二个参数也可以传入一个function,有两个参数可以使用 1:index,zepto...那是zepto.js中文api中所说的.本人认为,在判断有关交互的属性时,应优先使用prop,比如checked和selected; ? ? 之所以为出现差异,是因为两者底层实现的区别. ?...一个来自prototype.js大表哥中的方法; 传入一个属性名,将调用者集合中所有的该属性的值作为一个数组返回; 其余的没什么了. 如果有什么疑惑的地方还请留言问我.大家共同学习

2.6K90

学习zepto.js(Hello World)

学习zepto.js(Hello World) Zepto是一个轻量级的针对现代高级浏览器的JavaScript库, 它与jquery有着类似的api。...昨天听说了zepto.js,正好最近也比较闲,所以就学习一下这个著名DOM操作库,由于本人刚接触这个,但又不想单纯的说如何使用,所以本人会按照API顺序来说明方法如何使用并试着将对于源码的理解写上来;...$():   与jQuery的$()几乎一样,但zepto的选择器是直接使用的原生querySelectorAll(),所以,一些jQuery自定义的选择器是不支持的,但可以添加selector.js...最后返回的一个变量经过Zepto的构造函数摇身一变为Zepto对象。...接下来说一下$构造器中用到的一些其他函数;   像通过zepto对象调用的方法,都是可以在其他地方通过$(Zepto).zepto[方法名]调用的, 如 $.zepto.qsa();   而通过$.fn

3.5K80

学习zepto.js(原型方法)

学习zepto.js(原型方法)[2] 接着昨天的来,继续说原型方法,昨天的传送阵(昨天出了点小意外,博文经过WP手机的UC浏览器进行编辑后标签就露出来了- -,现已修复);..."aaa", ["aaa", "bbb", "ccc", "ccc", "aaa"], 3) // -->4 inArray方法也是直接调用了Array的idnexOf方法,这些都是ES5的新方法,在zepto...函数通过一个三元运算符来判断是否为空,然后调用对象的toString方法,返回一个类似[object Array]这种格式的字符串, 再放入一个Mapping中,就是class2type(class to type),在zepto...isPlainObject({}); // ..> true $.isPlainObject(new Object()); // --> true $.isPlainObject(1); // --> false zepto...今天先说到了这里,zepto里边的原型方法出了ajax模块的就都已经说完了- -,读源码真的是最快的学习方式.

1.4K50

Smarty模板引擎

Smarty变量调节器 模板引擎的工作原理 1、如何实现HTML代码和PHP代码分离?...将PHP和HTML混合页面,分成两个独立的页面: 一个是HTML静态页面(视图文件、模板文件),扩展名是.html,包含HTML、CSS、JS 一个是纯PHP程序页面(控制器文件),扩展名是.php,主要... 示例代码 3、常用PHP模板引擎介绍 Smarty,是模板引擎鼻祖。其它的模板引擎都是基于Smarty开发的。...Smarty是一个使用PHP写出来的模板引擎,是目前业界最著名的PHP模板引擎之一。它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑分离。...但这样,会与CSS、JS中的大括号冲突。

4.6K70

Razor模板引擎

为什么使用Reazor 原因:类似于前边写的模板页,自己写了。还需要用replace来替换成自己想要的变量。。 常见的模板引擎:Razor、Nvelocity、Vtemplate。...但是用着非常方便的 2.借助于开源的RazorEngine,我们可以在非asp.net mvc项目中使用Razor引擎,甚至在控制台、WinForm项目中都可以使用Razor(自己开发代码生成器)...(需要重新打开,才有智能提示) 4.Razor中@后面跟表达式表示在这个位置输出表达式的值,模板中Model为传递给模板的对象。...RazorEngine(c#语言写的)是微软做的一个开源的模板引擎,不是简单的在asp.net MVC中用,其他地方也是可以使用的。 自己写个cshtml 步骤: 1。..."); //3.读取出模板页中的内容 string cshtml = File.ReadAllText(fullPath);

3.2K30

模板引擎 FreeMarker

概述 freemarker 是一款模板引擎,即基于模板和要改变的数据用来生成输出文本(HTML页面、电子邮件、配置文件、源码等)的通用工具。它并非面向最终用户,而是一个 java 类库。 2....服务端口 spring: application: name: test-freemarker #指定服务名 freemarker: cache: false #关闭模板缓存...,方便测试 settings: template_update_delay: 0 #检查模板更新延迟时间,设置为0表示立即检查,如果时间大于0会有缓存不方便进行模板测试...suffix: .ftl #指定Freemarker模板文件的后缀名 注:freemarker 模板文件通常都是以 ftl 作为扩展名,也可以为 html、xml、jsp 等 在 resources...下创建 templates ,此目录为 freemarker 的默认模板存放目录,在 templates 下创建模板文件 01-basic.ftl ,模板中的插值表达式最终会被freemarker 替换成具体的数据

1.7K20

模板引擎artTemplate

三、模板引擎artTemplate 1、模板引擎的基础概念 模板引擎是第三方模块。 让开发者以更加友好的方式拼接字符串,使项目代码更加清晰、更加易于维护。...1581247691179)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1578413164979.png)] art-template模板引擎...在命令行工具中使用 npm install art-template 命令进行下载 使用const template = require(‘art-template’)引入模板引擎 告诉模板引擎要拼接的数据和模板在哪...const html = template(‘模板路径’, 数据); 使用模板语法告诉模板引擎模板与数据应该如何进行拼接 art-template代码示例 image.png 2、模板引擎语法 art-template...b : c %> 原文输出 如果数据中携带HTML标签,默认模板引擎不会解析标签,会将其转义后输出。

86310
领券