with在模板中的应用

var str = ‘Hello <%= name %>!‘;

var o = {
  name: ‘Alice‘
};

function tmpl(str, obj) {
  str = ‘var p = [];‘ +
    ‘with (obj) {p.push(‘ + parser(str) + ‘)};‘ +
    ‘return p;‘
  var r = (new Function(‘obj‘, str))(obj);
  return r.join(‘‘);
}

tmpl(str, o)

推测parser应该是返回"hello" ,"Alice","!"

代码就变成:

var str = ‘Hello <%= name %>!‘;

var o = {
name: ‘Alice‘
};

function tmpl(str, obj) {
str = ‘var p = [];‘ +
  ‘with (obj) {p.push("hello" ,"Alice","!")};‘ +
  ‘return p;‘
  var r = (new Function(‘obj‘, str))(obj);
  return r.join(‘‘);
}

tmpl(str, o)

核心部分就是:

var o = {
  name: ‘Alice‘
};

var p = [];

with (o) {
  p.push(‘Hello ‘, name, ‘!‘);
};

p.join(‘‘)
时间: 2024-10-25 00:44:35

with在模板中的应用的相关文章

Thinkphp模板中函数的使用

1.在模板中使用php函数 在thinkphp的html中,我们经常会遇到一些变量难以直接从php控制端直接处理,这些变量只有在模板中循环输出的时候处理比较合适,这个时候,我们就要在模板中使用函数 1.1对输出模板使用php函数 {$data.name|md5} //把模板中的name变量进行md5加密 把这句话翻译成php语言: <?php echo (md5($data['name'])); ?>   1.2函数中多个参数需要调用 1.2.1将前面输出的变量当后面函数的第二个参数使用 {$

CI模板中php脚本的使用

今天偶然发现,在CI的模板中能够直接使用CI自带的函数,并且可以直接调用controller里面的属性.案例: 控制器: public function test(){ $this->a = 'aaa'; $this->load->view('member/test',$data); } 模板: <?php var_dump($this->a);?> <?php echo base_url();?><br> <?php echo $this

模板中的名字查找问题

问题起源 先看下面很简单的一小段程序. `#include <iostream>` template <typename T> struct Base { void fun() { std::cout << "Base::fun" << std::endl; } }; template <typename T> struct Derived : Base<T> { void gun() { std::cout &l

FormView的插入模板中的DropDownList控件参数

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DT

django模板中的自定义过滤器

(1)在APP下创建templatetags文件夹,与Models.py.views.py等同级,templatetags文件夹下添加__init__.py文件,可为空,再添加一个模块文件,例如cpt_filters.py,目录结构如下 myapp/ __init__.py models.py templatetags/ __init__.py cpt_filters.py views.py admin.py appa.py 目录下添加__init__.py文件可让python知道这里是pyth

angular在模板中使用属性引发Cannot read property &#39;xxx&#39; of undefined

在使用ng2的过程中,发现模板中如下方式 <li *ngFor="let item of model"> {{item.name}} </li> 不会又任何问题. 如果是一下未使用结构指令方式,直接使用组件的属性 <li > {{model.name}}</li> 就会报错null错误,一开始百思不得其解,后来搞明白,model是异步请求获取的数据,在定义的时候let mode:any 时是属于unde值,而这时组件模板已经开始渲染了,也

django 模板中url的处理

在模板中直接添加‘/home’这样的链接是十分不推荐的,因为这是一个相对的链接,在不同网页中打开可能会返回不一样的结果. 所以推荐的是 <a href="{{ object.get_absolute_url }}">{{ object.name }}</a> 这种方式,或者 <a href={% url 'article' article.pk %} > 这里第二种方式同时需要在urls.py中设置, url(r'^article/(?P<pk

ejs模板中的四种表达式输出形式

在ejs模板中,通常会用下面四种方式在HTML中输出服务端的变量或表达式的值: 1. 直接在<%%>中写表达式或变量.这种情况通常只是用来进行表达式计算或给变量赋值,不会有任何输出,被称作无缓冲的代码. <% code %> 2. 在<%%>中通过=号输出变量或表达式的值.默认输出到页面中的内容会进行HTML转义.如<div>Hello</div>输出后会变成<div>Hello</div> <%= code %&g

如何在 ejs 模板中使用 helper function 外部函数进行特殊处理?

一般我们想要在 ejs 模板中使用外部函数用于特殊的处理,比如:<%= ellipsis(title, 30) %> 通常的做法是: 使用 app.locals 来定义: app.locals.ellipsis = function(str, len) { return str; } // 使用 <%= ellipsis(title, 20) %> 使用 ejs.filters 来定义,详细用法: var ejs = require('ejs'); ejs.filters.elli

Thinkphp回顾(五)之前台模板中的基本语法

一.导入CSS和JS文件 的三种方式  (了解) 1.link方式(常规) <link rel=’stylesheet’ type=’text/css’ href=’__PUBLIC__/Js/test.css/> <script src='__PUBLIC__/Js/test.js'></script> //导入Public文件夹下面的Js目录中的test.js文件和Css文件夹下的test.css文件 2.import <import type='js' fi