Mustache是基于JavaScript的一款模版Web引擎,Web 模板引擎是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,通常是标准的 HTML 文档。

一、Mustache简介

Mustache 是一个 logic-less (轻逻辑)模板解析引擎,它的优势在于可以应用在 Javascript、PHP、Python、Perl 等多种编程语言中。

二、Mustache语法

1、{{keyName}}

2、{{#keyName}} {{/keyName}}

3、{{^keyName}} {{/keyName}}

4、{{.}}

5、{{<partials}}

6、{{{keyName}}}

7、{{!comments}}

三、demo介绍

1、{{keyName}}

var data={
name:"张三",
age:,
sex:"girl"
}
var template="My name is {{name}},I'm {{age}} years old,I'm a {{sex}} !";
var view=Mustache.render(template,data);
document.getElementsByTagName("body")[].innerHTML=view;

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAUQAAAAyCAIAAACrhDX5AAAEzklEQVR4nO2b3bGkOAyFiYuAiIc4JgCeNocNgAw2g3liH2iwJEtCTZsCVOcrV03TgLGPdPxD3+nm//6ioKAkKN3tLUBBQWlSYGYUlCSl+/PPvygoKAlKtwAAUgAzA5AEmBmAJMDMACQBZgYgCTAzAEmAmQFIAswMQBJgZgCSADMDkASYGYAkwMwAJAFmDjGPfTdM8ivxDQC34ph5Hvuu67p+nOWZaTBOPJNp6KQTHT7d3hmmpTbzNHRdN4zzrN5iYCjZjzP5cBLWBF6Rc+r52LFTFWum5484KRfMxnnsv8naZVkiZtYVe2FenGD3MDXzqkubWblN8q0t+tz+Cdunfc6pV/BSMzvcaOZhGKQo09ANw2O1akpl5nUca+eGPeeUdfxXrWQ3ly+cU+/grJl/0fNa7jTzNAk3T0PXjyMdAckjNQ3XSz7TubBC+ZZ+X55MFodktVhlp7+G5G3ka2JFLrFoJmaex77xEFYychrWf7/pe6Da0CkniI68euxKflDtXMGr6siDWNNITSQF9d79qqfRO7fVI3l6uUsIEt30fbc5XJYlYuaFu3k9mtRm6+Mh22HPY79/prfS78VufVOeLhzpZ3aXlsLkOWK8W7e+6uBTa3HFQF9bK9z3g1qd+UwPkRJER14zdusT9qOI4PJ7elCeU1/imnnjlJ527w5abZiZVnCvmVkif5xNRBNWqbvNBS768UHC9Kh+uNVQrRoUAci3EYWUdpn8Ok8byRfou1+nl32B8a5kpCGvHTtxVyglq7yp54qq43pX2ujp9E7WbDRJmtlaazhcY2bq5q2btIH7U41VqGiV1shtsaIPmNahETl33jne9KqTMN0zazcH3mer9jrsgn+oV2hc4XZdCWJQXhE7LdwHWVlXy8drXXh/z2xVfk7Pw+lbPl2m3EH+W0++wMwlv/chi4lGBD8Y9fkh27lUM3PMzAr+IlIYr5ZL+LLsvLgUbWibfGfmZHoBD6Irrxk7JQkPBNc6tVfy+WBccpWZ7d4dtvrxZt5SeB57Emi2llr30ebso3TGkfX0zKxjynKU4Xz3WD61ewnWzsxr/qktc07xpvAgOvJ6rfKSUBf8aTNzUPOLZ+YTxMy8JvPIltti59H3VpIbndGWY9+ZOaqLc5lfg2bmtnZuOpM4Jg+oVAfRFseJ3YGk6tkze2b9vVQTPb3e2TWzJj3azNuaix5Wb4lCvwzp4ZnY28lwAEREjZlWvAATLyMcX5Zpimw0+nGOvIaK0W4m0bvhnNKvZReb8jqxE+EOCl4NBzRgSqzFM1k9bWdm60l6q9uZ+ZvIbUTNLMYnKZo3W0X2zNsbciVXDg75FtdcTfP0EjtiRwBqZvqXMtZwHYF0oEXyGS/fev57qjzl99eoXDREi12drEHByWXWu1/20PKjbmM93d45rV5/zC7teJSZv6Hspt+PllWT8k72kziGYXTK2HDRSusX3hvEh+h54Qo6RBszvzcNYrTu3/bnSY/ixUG8RU85q0ffx17Hz2aOvSoFlMd5+eVBvE1P/uvd7YsD/H9mAJIAMwOQBJgZgCTAzAAkAWYGIAkwMwBJgJkBSALMDEASYGYAkgAzA5AEmBmAJMDMACQBZgYgCTAzAEmAmQFIAswMQBJgZgCSADMDkIT/AaqtvCEJWgl+AAAAAElFTkSuQmCC" alt="" />

分析:{{keyName}}中的{{}}就是Mustache的标识符,keyName就是data对象中的键名,这句的作用是直接输出与键名匹配的键值!

2、{{#keyName}} {{/keyName}} 有两种用法:

第一种:

以"#"开始,"/"结束,被它们所包围的标签为进行循环多次渲染,keyName为需要循环渲染的数组名,代码如下:

注意:这里的keyName表示需要表示需要循环渲染到html模版中的数组的数组名,

var obj={
result:[
{name:null,age:22,sex:"女"},
{name:"李四",age:22,sex:"男"},
{name:"王五",age:22,sex:"男"}]
};
var template="<table>"
+"<thead><tr><td>姓名</td><td>年龄</td><td>性别</td></tr></thead>"
+"<tbody>" +
"{{#result}}" +
"<tr>" +
"<td>{{name}}</td>" +
"<td>{{age}}</td>" +
"<td>{{sex}}</td>" +
"{{/name}}</tr>" +
"{{/result}}" +
"</tbody>"
+"</table>";
var view=Mustache.render(template,obj);
document.getElementsByTagName("body")[0].innerHTML=view;

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAABzCAIAAADfWp0rAAAFPklEQVR4nO2d0aGkIAxFqcuCqMdqaMZiZj9UBElCcIQw++792n2OAjkEGLk67gOZyllX4K8LAIwFAMYCAGMBgLEAwFgAYCwAMBYAGAsAjAUAxlIC2NbFLetGH/BBOjV4R58qKnhXuW55wr2Uet3YzxBXU4qNFCM9gPyqZ4AqjdzW5Un4G1pxhooIWfCuSjGvfyyXBhC8K3X7XCcAwectifWWAGzrQlSYq7n+xOz0BMCpoz7BO7/WkuAoar/Y1RgWQP7XK9rx0OsACurLuvERyjsT0/9qaXGnLY4IXAacOVvkblaNxfvF+bDns8CdwTICwFlOWoWk25MZsLdkWbcylgKXQ1Sw2wEkBXNJGryLKbKta0iv0DwE9QUQW7O3JZ0gidYlh7ctJL19r391ytbkflIUFZLV7x36OIkMyl7zbCy9PjPREJSVG/zeuiuKipXGldn1igUvjnBFx+PKK4aMop5HoM6/345LqyDyWE8AV096sNQ7+2jTkrK4KBuP+MmdnDQSKYuqFMgd6wog+H0YiYXQmZ/FWdGJ+ci0A4idpHUBfxUl1TgOUuzBvnNALL28ctmDdjr5VC20W3W0CiB4F2f9fZBUDlntGZCdEee7QQDKhgiRfACATy1KEXKyNvD0GupBRWrLrvw/nQHEq27rkjfmXQCcxAy4jxFHIiR/q3xVbwGQwySi3WcSbu5BlUOvAqAHq5iyL07Cxb0NIrcaW1YHwA3y0nR1nSnpzQygR3tu4iKaVxv89onlxja5eHp+04qv4+3oERlQ/2RlSGjtsK8L+wHGAgBjAYCxAMBYAGAsADAWABgLAIwFAMYCAGMBQFSzF+wVTQggu8FW3thhDn0tm/hPByC7gXnEO3HAMIdekFH8ZwNAbvgwWyu1vZYmWcV/NgClBG/vM9vvIZX98dnuRZNmByAYbDXeW53oPYPnDukWzQ0gmh2aDj0pxSr+MwMQnIwak6NWzFQyalKYFcCYvv/hhp9Wb8NzzQhA2EtXbLM/Keve2QeuiaYDUHuuoFNgDlfD6dMdtySdDIDw7EbtsY5XFH2VXUtJNRcAZnEuWNZfnQvyov7uHDBUnOl1VDb8WQBn4GsB/urrtkJ/FsAsAgBjAYCxAMBYAGAsADAWABgLAIwFAMYCAGM9BGD+aNV/oy4AtI4DxZOPfY1Zqor2vR2nAaB2cJCvJkl2l+iHzImyRhmzyHeo6F6S8JYeZMC2Lm5ZFrcs0ruoUgDJw7QVAIONWT8HIO5KHRVldqmeAyjVy5gVK/oDQ9DnU+xOpCEuN8pfBNDXmPUTGaD04KSD8h3P+e9mAL3NKT8B4JSUrsI7bNhX4VWbNsCY9UNDECN63zR/DRUTcxnAGGNW/evMRBlwl+AdYKfopMeRr1ZKPzXGmEXVe6jqAJp83Nf7XLyvrFGYvjXOmKVv2Iyb8qJ5T9WT+O8BRsYs3iXaMyvmAmBnzGLx9raJdgNgndp6iQas3ragVgDJm7m+fQ3VoAcgxAo4R0wqt+7TuZLYDzAWABgLAIwFAMYCAGMBgLEAwFgAYCwAMBYAGAsAjKX9GSuVxJ9aUd+MgzFLIf1N2sb76TBm6aQH0NYCGLOUUgP4ekMJxixSagDf9iAYs2iJADRztnr8gjHrrMejVGV33hUAYMwSpByC6FBrAMCYJUsJgH8GQDoZxqy6dACYBonthDFLJR0Awfwm/PoejFkKqQBwdefbBGMWoUZvKPVTsjbJrdVPGbP+J8GYBX0AwFwAYCwAMBYAGAsAjAUAxgIAYwGAsQDAWABgLAAwFgAY6x8AEBpERNwPdgAAAABJRU5ErkJggg==" alt="" />

上面的代码对result数组进行了循环渲染,以{{#result}}开始,以{{/result}}结束,中间包裹着需要循环绑定数据的标签!

第二种:

{{#keyName}} {{/keyName}}还有第二种用法,当keyName表示键名的时候,代码如下:

注意:这里的keyName表示键名,并不表示需要循环的数组名

var obj={
result:[
{name:null,age:22,sex:"女"},
{name:"李四",age:22,sex:"男"},
{name:"王五",age:22,sex:"男"}]
};
var template="<table>"
+"<thead><tr><td>姓名</td><td>年龄</td><td>性别</td></tr></thead>"
+"<tbody>" +
"{{#result}}" +
"<tr>" +
"<td>{{#name}}{{name}}</td>" +
"<td>{{age}}</td>" +
"<td>{{sex}}{{/name}}</td>" +
"</tr>" +
"{{/result}}" +
"</tbody>"
+"</table>";
var view=Mustache.render(template,obj);
document.getElementsByTagName("body")[0].innerHTML=view;

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJoAAABnCAIAAAB3kcyHAAAEwElEQVR4nO2dUYKrIAxFXRcLYj2uhs24GOeDiiBJCKhTTe/5eq9WxRyItIbOtAJDTN9uALgS6DQFdJoCOk0BnaaATlNApymg0xTQaQroNIVS5zK7yc0LvcEHadfgJ3pXkeCnxnHrHY5nabeNfQ9xNCVspP4Fvc6yjVu4GyFbZjcisyMmW+AJAcFPzT5Rtj+dl9YZ/FRzeN8rdAZfxiVFQdK5zI64fC4O+h2L3TOdG5/2BD/5uTVAP6eKB9svhtVZvrq7S5serrPqkW5e+HiXHZ0ZG60he+w7Yu7jRueWT6q8UjTDee8mH2KuEXoRI/l9Ote17rXZkCRHZ4yLm5fajGD5A6WuX2d2Yi6BBD+l4bvMc8iP0J1s36QzxSZGJp+mELHKNi9LyEZijEZz4qTJctmpqADPPg62z05kiGPLi7vG/h6zyXbNryL4GKvdiWL2uOew9mUGL+byalBw56uSY9XOT9i31w/bpZktue09OvdePvBhYBs/XR86qoOy0U3vjP1AyrnKUzVOyG17kc7gY8JMTaZzXGFNMcD4OPfrTF2u9wPjfiqpxSkdsxvfo3Nd13x2U79eeomuywkTebgrdQY/pblXvB0ok3P/6Cz2SPOEV+qswyJ4GdDJD3uK1GWyGZqn58UDDWlNpcv/vEpnauMyuzI01+rkEEfnMRt+Bmn2WuNrqx6dZdcg3D1epxiRB+ik03JKJxdOhapvDYlx33llF9PUyd0cpUnDvqfElaOTvktyN3zi8lppPt6QDz0lO3i+//ds3vmA7D9GZ/udjeT33cF0OXjeaQroNAV0mgI6TQGdpoBOU0CnKaDTFNBpCug0BXSaAjpNAZ2mgE5TDOo09lzJDLfoVK0xYR8sF3vXDy8be3dfxmArn4lGp9YOXaOcFWDQVVPEubLq9f3pvrBpFLKYWldD+EwGRucyu8k5NzknLebJdWYVGA2dZGkZU8TVqupSXsoP60xrv5ZtpQ65FmxcZ42w2ndsIfCxoT+XbNc1K4aO/82F1QVWF+oUltxqVuM2+MHRqVn3tZY3s6Ps7d/dOlNxe9cmPT+oc0NKTEJpPLtqshkooR8pu9ipazKdbBkOOfhDuY6HMSjrvHtcHhsqtOM3dGZLCKhN5EQpGw3kapL8XeRGRSH0Cd7/5Uhbp/pT5y53md3kfWPeyfT7eDr+NxWui7f+wt4zPkdHp7QqS9fL+c+dwpdFdwaWrpd/14h9lk5mwAgL7K/yy3YW8UIfx20635PE6OlctvEZzVTRqTNbKHV2Hc/X54zczzYcOuOLZOJ5pzGg0xTQaQroNAV0mgI6TQGdpoBOU0CnKaDTFNBpCu2vTasQfydU/RU8yqbHGRyd+sdGnc8LUTZ9itt19sUDZdPnuFvn6Yf5KJvu4W6dZ3s3yqa7uEOnZuakztQom+5B/0erhpISW9+l0Imy6X7uTba0OI1OlE0Pca9Ofg2ntDPKpoe5VScTHjFqKJs+w606hUJ34c8BoGx6nDt1cpHgI4Sy6ZNcvkaF+gtDz05jP1w2bQmUTYOHA52mgE5TQKcpoNMU0GkK6DQFdJoCOk0BnaaATlNApymg0xTQaQroNAV0mgI6TQGdpoBOU0CnKaDTFNBpCug0xR9zXdBVsxpnpgAAAABJRU5ErkJggg==" alt="" />

分析代码和提供的obj数据发现,result数组中的第一个对象的name属性值为空,当我们使用{{#name}}{{/name}}将<tr></tr>包围的时候,发现这个时候name为空的那一整行数据就被排除掉了,这了注意:根据{{#name}}{{/name}}放的位置的不同,会产生不同的效果!

3、{{^keyName}}{{/keyName}}  与{{#keyName}}{{/keyName}}第二种用法的作用相反,代码如下:

var obj={
result:[
{name:null,age:22,sex:"女"},
{name:"李四",age:22,sex:"男"},
{name:"王五",age:22,sex:"男"}]
};
var template="<table>"
+"<thead><tr><td>姓名</td><td>年龄</td><td>性别</td></tr></thead>"
+"<tbody>" +
"{{#result}}" +
"<tr>" +
"<td>{{^name}}</td>" +
"<td>{{age}}</td>" +
"<td>{{sex}}</td>" +
"</tr>{{/name}}" +
"{{/result}}" +
"</tbody>"
+"</table>";
var view=Mustache.render(template,obj);
document.getElementsByTagName("body")[0].innerHTML=view;

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIIAAAA6CAIAAADz+BayAAADSElEQVR4nO2by7HDIAxFqcsFUQ/V0AzF5C3AGIwkPs8mdya6uwTz00GCGMV8VAAy3x6A6vNRDCBSDBBSDBBSDBBSDBBSDBAaxBDcYQ4X6ALrpareGrqqKG9Np922wr2X/tjYZ4jWBsVaStQ4hrrt00ydqQZ3rECYmMtpMMJw3pouy3r8uV8ag7em1e25VzF4W88nj17CENxBDJsb/3jFqnqB4VQaj7fGup5DpK5iY9dkWAz1t5fNc9FLGJoVcLjA26leWMxa7LnInbkYIzhvOP238eNqGIe1h7E++rZAn4GzD8PZWzmQwgVIb4jzOVxoLSrQSaJMPo+h6JhzWG9NdpfgnC9bmA5KOzDkOcUZldsnMceiOARfrPw4i+6GPhINiq4owzgbF3eqRJomjryKrtczcEGp6t3bOMfLlgOnkcvX+8PzVox5zSLk+muCSDPOZK7z+1u5dFIiy97HcK2qhUPhuV6nDp9No6xV8pORnxSbBrvqdMiVbcDgbQwsuSs6FlTWHljQvH3mMeSlMnvgv7qSRpzDFlu4Y2/IY2jbb1dTZFRv5GRzT2Lw1uQzQQybg0Fs3huqGnkf3IqhnY5gzwUMvJtRyqiLk4Olz1kLA+kdzeoPWzDktoM76ik9i4GT6A33qJGcoviu8zN/BkONlLD5m1v09GrqFD2KgQ5f2X0f3KKbtyOEn03OLKmLgQv+0mZ21ZT0pDfQuwC3oRHT64XDuOHcCBeNl/XnKbz5onuHN/Sf7ASJtcX7uPS+AUKKAUKKAUKKAUKKAUKKAUKKAUKKAUKKAUKKAUKKIWs6Q+1BAWKoXte1L4iYon/rmxTgMFQvRZPVi1wcpugBfZUCGgbyWom5wOnd6EzpuxTQMLQSMpHXkpSThhI0125HFoSOQUgHHskUHhN9J7Ge1T0vbAw54WKqaKWX71JAxiDkWo6kYY6K2WL2bhaoGPb4wYcLSGv5FetCxCDc5A9c8q/0dV/4289NcBh6/4t4yTwps+LMKt59eAXDIPwDpffnlEeUMz9f7aUVFgbmMC8k2z+6R9Rd/fresFVccu5ez/hZDKf5e2b+10/1Yf0sBiwpBggpBggpBggpBggpBggpBggpBggpBggpBgj9AedCrSJ1dcJlAAAAAElFTkSuQmCC" alt="" />

根据输出和分析上面的代码,发现{{^name}}{{/name}}再循环玩result对象数组后,只输出了name值为null的那一行值!

4、{{.}}    表示枚举,可以循环输出整个数组,例如:

var obj={
result:["Macbook ","iPhone ","iPod ","iPad "]
};
var template="<div>{{#result}}<span>{{.}}</span>{{/result}}</div>";
var view=Mustache.render(template,obj);
document.getElementsByTagName("body")[0].innerHTML=view;

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPgAAAAhCAIAAAB7gvG7AAAC/klEQVR4nO2Y0WHEIAiGncuBnMdpXCbDXB9SL6CgaNKzrf/3dDlDQPijRPcCYAPc6gAA+AQQOtgCCB1sAYQOtgBCB1sAoYMtgNDBFkDoYAsgdLAFEDrYgobQj+idc87HoxxJQRmwcUTvXEhzxiIp9MNJgTg9Z1ByxcRu/ghD4Y0+uM7Nh92tpy/0OuzvvPwxoXcNUrgm9XmhV6G0wrv7rLXultATegihjDsFF8Kd6fxSodN/f6HQZzU0KfQfdLeErtBTKpSegvMx8unQva/QR94XyNj54HgNiKvJyBDL7ulR3IfYZl2X43oDU+ARsknpMYR0jVETmgRFBUPhdbJ00NRGVcVD7mwl1tytpy/0F1f6eUVTQ3N2RE/nyS+zUdH8FzYpkFSyC33oCud8trQYG0rLV/T3HSzAZgyiCTMvJjsZXitL9cWk0Mm/jRLb3K3HIPQjepYTH48iCWRibBlQtrGq2MToiL7aQIiGlaH8i78XnG5p5TeHx2eIoTSpXMlt0VB4ehhVW6j02qPZUEpsdbceg9Cp0vOU9TXAOT0L5YOZoVwnHoUydNp7sWNhPtrnDFUfUtn2YhBM6kzJaRkJrxFG/RbNnrrImSxKbHW3HovQL6W/X206HdKihVS+7tKc6//f/wgi0EV2pTm3DUnxyG7OF61ymIXOY1CELtAXeiM8PQxlZKp1KR0KJTa7W49J6FnpR/SkaSNN8TXX5r4m3HPyyIouNBCUnxH6xIpu8Dgs9Psrut0dvfxnK/q30iNrYeSDuOrbxNqjky+3+R79pb9djwi9F4NkIrfk98Ib6NGVr98Rd40SW92txyj0vAPXEpbu4id9/Crvr8oBQusIQR9ilVK+SB8ReicG0UQ6prjbSzSyVJ8RPbqiN0usuluPVeiC5IQe/X3yUXw48c60OkcvVUn62olzdEXqDwm9GYNmwpIgr++DQlfDKNzdOEfXHtgq8Z88Rwfg/wChgy2A0MEWQOhgCyB0sAUQOtgCCB1sAYQOtgBCB1sAoYMt+AIUw0ItDwE98AAAAABJRU5ErkJggg==" alt="" />

分析如上代码和输出发现:{{#result}}{{/result}}表示循环的目标是result数组,{{.}}则表示循环输出result中的每一项

5、{{keyName.keyName}}

var data={
company:["Microsoft"],
adress:{
province:"浙江",
city:"湖州",
county:"安吉",
town:"报福",
village:"统里"
}
}
var template="<h1>{{company}}</h1><ul>" +
"<li>{{adress.province}}</li>" +
"<li>{{adress.city}}</li>" +
"<li>{{adress.county}}</li>" +
"<li>{{adress.town}}</li>" +
"<li>{{adress.village}}</li>" +
"</ul>";
var view=Mustache.render(template,data);
document.getElementsByTagName("body")[0].innerHTML=view;

aaarticlea/png;base64,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" alt="" />

Mustache学习的更多相关文章

  1. 微信小程序入门——Mustache语法学习

    微信小程序中用到了大量Mustache语法,特发此文学习一下 1.简单的变量调换:{{name}} 1 var data = { "name": "Willy" ...

  2. 学习笔记《Mustache》模板

    Mustache 是一款经典的前端模板引擎,在前后端分离的技术架构下面,前端模板引擎是一种可以被考虑的技术选型,随着重型框架(AngularJS.ReactJS.Vue)的流行,前端的模板技术已经成为 ...

  3. 5月学习总结(Ant-Design,mustache,require.js,grunt)

    一.Ant-Design学习 因为Ant-Design是基于React实现的,之前自己也学过一段时间的React,对React还是相对比较熟悉的,在学习Ant-Design也还不算吃力. 最开始是从源 ...

  4. Mustache.js语法学习笔记

    原文地址:http://www.cnblogs.com/flypig88/archive/2012/05/14/2497780.html 看了Mustache的github,学学其中的语法,做个笔记 ...

  5. Javascript模板引擎mustache.js详解

    mustache.js是一个简单强大的Javascript模板引擎,使用它可以简化在js代码中的html编写,压缩后只有9KB,非常值得在项目中使用.本文总结它的使用方法和一些使用心得,内容不算很高深 ...

  6. 微信小程序学习

    官方网站 https://mp.weixin.qq.com/debug/wxadoc/dev/index.html 项目结构介绍 -- MINA框架 https://mp.weixin.qq.com/ ...

  7. Spring 4 官方文档学习(十二)View技术

    关键词:view technology.template.template engine.markup.内容较多,按需查用即可. 介绍 Thymeleaf Groovy Markup Template ...

  8. Github上PHP资源汇总大全,php学习的好资料

    Github上PHP资源汇总大全,php学习的好资料 国外程序员ziadoz 在Github上收集整理了PHP的各种资源,内容包括模板.框架.数据库.安全等方面的库和工具.汇总了各种PHP资源,供各位 ...

  9. Vue.js学习 Item4 -- 数据双向绑定

    Vue.js 的模板是基于 DOM 实现的.这意味着所有的 Vue.js 模板都是可解析的有效的 HTML,且通过一些特殊的特性做了增强.Vue 模板因而从根本上不同于基于字符串的模板,请记住这点. ...

随机推荐

  1. SAE利用storge上传文件 - myskies的专栏 - 博客频道 - CSDN.NET

    SAE利用storge上传文件 - myskies的专栏 - 博客频道 - CSDN.NET SAE利用storge上传文件

  2. SharePoint 2013的100个新功能之场管理

    一:改进的SPSite命令 SharePoint 2013中对SPSite PowerShell命令行做了改进提升,使网站集操作更简便.比如,一个新的参数“HostHeaderWebApplicati ...

  3. POJ 1811 Prime Test 素性测试 分解素因子

    题意: 给你一个数n(n <= 2^54),判断n是不是素数,如果是输出Prime,否则输出n最小的素因子 解题思路: 自然数素性测试可以看看Matrix67的  素数与素性测试 素因子分解利用 ...

  4. linux ar 命令的使用

    摘自http://blog.csdn.net/hxg130435477/article/details/8217247 用途说明 创建静态库.a文件.用C/C++开发程序时经常用到,但我很少单独在命令 ...

  5. Android自己主动化測试之Monkeyrunner用法及实例

    眼下android SDK里自带的现成的測试工具有monkey 和 monkeyrunner两个.大家别看这俩兄弟名字相像,但事实上是完全然全不同的两个工具,应用在不同的測试领域.总的来说,monke ...

  6. POJ 3678 Katu Puzzle(2 - SAT) - from lanshui_Yang

    Description Katu Puzzle is presented as a directed graph G(V, E) with each edge e(a, b) labeled by a ...

  7. ZCTF-final-restaurant1

    和线上赛的题目差别不大,但是需要自己去泄露堆的地址.除了线上赛的溢出之外,还多了一个Use After Free的洞.我写了两种利用方法. 线上赛writeup见:http://www.cnblogs ...

  8. LeetCode Day1

    Palindrome Linked List /** * LeetCode: Palindrome Linked List * Given a singly linked list, determin ...

  9. BZOJ 3307: 雨天的尾巴( LCA + 线段树合并 )

    路径(x, y) +z : u处+z, v处+z, lca(u,v)处-z, fa(lca)处-z, 然后dfs一遍, 用线段树合并. O(M log M + M log N). 复杂度看起来不高, ...

  10. Boost.Python:使用继承

    An example #include <boost/python.hpp> #include <memory> #include <iostream> using ...