关于expres模板引擎,Function,with
2019独角兽企业重金招聘Python工程师标准>>>
本文只是一些很零散的东西,关于js的模板引擎方面的知识。
看 Node in Action的时候,有一章关于ejs,看到这样的一个片段:
<% if (locals.messages) { %>
后面省略若干行
这个 locals 让我迷惑不解,因为根据资料,express只是暴露了一个settings到app.locals,并没有暴露这个locals。 后来看了ejs的部分源码,才知道这个locals存在的原因,其实ejs工作机制的缘故。 现在开始说一下背景知识。
new Function的魔法
在js里,可以创建一个匿名函数,然后赋值给一个变量:
var fn = function(x, y) { return x + y; };
但是,除了这种方法,还有一种更灵活的方法来创建前面的函数:
var fn = new Function("x, y", "return x + y;");
这是很多魔法的来源,它实际上代表了一种思想:用代码创造代码
with关键字
js里有一个with关键字, 先看个例子:
var t = { name : { firstname: "tom" }, age: 12 }
with (t.name) {console.log(firstname); // 输出 tomfirstname = "jack"
}console.log(t.name.firstname) // 输出 jack
没啥问题。但是,再看这个:
var t = { name : { firstname: "tom" }, age: 12 }
with (t.name) {firstname = "jack"console.log(firstname); // 输出 jackconsole.log(t.name.firstname); //输出 jackt.name = {firstname: "mike"};console.log(firstname); // 输出 jackconsole.log(t.name.firstname); //输出 mike
}console.log(t.name.firstname) // 输出 mike
with里面发生了什么事情呢?其实很简单,可以这样理解上面的代码:
var t = { name : { firstname: "tom" }, age: 12 };(function(scope) { scope.firstname = "jack"console.log(scope.firstname); // 输出 jackconsole.log(t.name.firstname); // 输出 jack , 因为现在scope 和 t.name 是 同一个对象t.name = {firstname: "mike"};console.log(scope.firstname); // 输出 jack,因为 scope 和 现在的t.name 是两个独立无关的对象了!console.log(t.name.firstname); //输出 mike
})(t.name); // 把 t.name 传进去console.log(t.name.firstname) // 输出 mike
所谓指向对象的变量,其实就是指针而已。
未完
转载于:https://my.oschina.net/mustang/blog/265062
关于expres模板引擎,Function,with相关推荐
- php开发自己的模板引擎,如何用PHP来编写自己的模板引擎 - PHP|模板引擎 - 软件工程|架构设计|网站设计|艺术营销 - 河洛炎黄 - 魏文侯...
本文的目的不是为了让大家学会如何编写一个完善的模板引擎,只是为了给PHP初学入门者解释模板引擎的原理和作用. PHP模板引擎的作用是为了让表现层逻辑和页面本身分开,让程序员和美工的工作可以相对独立,并 ...
- php codeigniter 语言,php – codeigniter模板引擎,包括语言解析器
不幸的是,CI内置的模板解析器类没有此功能.你可以在 sparks directory中环顾四周,有多个火花集成了许多模板引擎,如smarty或twig,可以通过调整来创建这样的东西. 此外,您可以尝 ...
- php smarty模板引擎 性能,smarty性能低?直接使用php模板引擎吧
skymvc框架使用的php模板引擎 1.[代码][PHP]代码 class smarty{ public $template_dir = '';//模版文件夹 public $cache_dir = ...
- 【JavsScript】推荐五款流行的JavaScript模板引擎
摘要:Javascript模板引擎作为数据与界面分离工作中最重要一环,受到开发者广泛关注.本文通过开发实例解析五款流行模板引擎:Mustache.Underscore Templates.Embedd ...
- php 简单模板引擎,PHP 实现简单的模板引擎
模板引擎作为视图层和模型曾分离的一种解决方案. 首先我们新建一个Template.class.php 的文件 '.m', //设置模板文件'templateDir' => 'template/' ...
- php模板引擎如何实现,php模板引擎技术简单实现
用了smarty,tp过后,也想了解了解其模板技术是怎么实现,于是写一个简单的模板类,大致就是读取模板文件->替换模板文件的内容->保存或者静态化 tpl.class.php主要解析 as ...
- 使用模板引擎Trimpath
使用模板引擎,让开发模式更清晰,也让职责更明确,对维护对开发都是一件双赢的事情. 曾经接触过SmartTemplate和Velocity,如果纯从编写前端模板来说,都不是太难的事情,大部分流行的模板引 ...
- 浅谈Web中前后端模板引擎的使用
前言 这篇文章本来不打算写的,实话说楼主对前端模板的认识还处在非常初级的阶段,但是为了整个 源码解读系列 的完整性,在深入 Underscore _.template 方法源码后,觉得还是有必要记下此 ...
- smarty模板引擎原理解析
//php 控制器文件 <?php //引入模板引擎文件 include("20130304.php"); $smarty = new TinySmarty(); $qq_n ...
最新文章
- 人脸识别门禁_门禁人脸识别系统铜陵县门禁人脸识别系统哪家好
- IBM对话智能+未来:十年提升AI性能效率千倍?
- The Ice::Current Object
- asp.net三层结构
- 架构设计:分布式服务,库表拆分模式详解
- Atitit.mybatis的测试 以及spring与mybatis在本项目中的集成配置说明
- Keras过拟合相关解决办法
- 教你如何在机器学习竞赛中更胜一筹(上)
- vasp服务器中断,vasp优化结构没提示直接中断
- 一种应用于GPS反欺骗的基于MLE的RAIM改进方法
- 在linux上将ape转成mp3,以及MP3 大小转换
- L2TP设置-如果更改了公网IP,需要更改哪些东西?
- 设置TreeViewer的前景色和背景色
- 2019杭电多校 Snowy Smile hdu6638 (线段树最大子段和)
- 3DMAX和MAYA的区别
- png图片格式转换器_如何将图像转换为PNG格式
- Cesium Primitives加载大量图标点
- 熟练的运用计算机英语怎么说,熟练用英语怎么说
- 网安零基础学习-python-正则表达式(灰帽编程17)
- 如何除去暴风影音的左上边广告和下角动态广告