html脚本与模板分离
❶ php怎么和html分开写
?我做PHP程序的时候,一般是把PHP程序和HTML页面分开的。
只是在要显示的地方加句PHP语句。
但我看有的人把HTML和PHP程序写在一个程序里。
这个问题很简单呀!分开写:好处是便于维护,把一个html的代码include进php里,当你的html需要修改的时候,只改一处就行了!如果你真的是嵌入的话修改维护时光查试代码位置就很麻烦了!由此看对网站的更新也是方便的!把html和php分开写,也算是某种意义上的“封装”!如果是大型网站,还是分开为好!合在一起:php本身就是“嵌入式”的脚本语言,一个小的页面,变化不大,易于修改,二者相嵌则更显灵活!
倒底是写在一起,还是分开写,应该视具体情况而定吧!
分开写,处理好了,使网站“模块化”在管理维护上好处是显示易见的!
如果混在一起,修改维护起来……
学学模板吧,挺好的,是真正实现了表现层和逻辑层的分离,很不错的
我建议还是分开写,也许有人认为写在一起好,可是我的观点是我们都是程序员,我们要考虑页面修改人员,他们不懂,所以还是分开写比较好
如果要考虑那些不懂php的美工,建议分开写
自己的感觉是很重要的!!!
❷ 如何在 JS 中嵌入 HTML 代码
答案是不要这么搞,大段的 HTML 嵌入到 JS 里结果就是悲剧。不能代码高亮不能自动缩进,太难维护了。
我的经验是,直接把 HTML 单独写到一个浏览器能访问到的文件里,比如 template/foo.html。然后 JS 里发一个同步 XHR 请求去读这个文件,例如:
var html = Template.load('/template/foo.html');
var target = document.getElementById('xxx');
target.innerHTML = html;Template 是一个工具类,负责发送同步 XHR 请求并返回结果。
这样在开发的时候,模板文件和 JS 代码分离,非常好维护。
当然这样做的话,上线的时候总发 XHR 请求也不是办法。所以在打包 JS 之前,我一般会通过脚本把所有的 Template.load('.*') 提取出来,替换成对应 HTML 的内容。这样在开发时非常方便,上线时也没有性能问题。
比如上面的代码被打包工具跑一下就变成了:
var html = "<ol>\n<li class=\"xxx\">...</li>\n</ol>"; // 引号里是 /template/foo.html 对引号、换行做了转义之后的内容,由工具自动生成
var target = document.getElementById('xxx');
target.innerHTML = html;
❸ 如何分析网页模板
ASP网页模板的应用: 让程序和界面分离,让ASP脚本更清晰,更换界面更容易 为了避免ASP程序和HTML代码混写造成维护困难的情况,本文介绍了一种方法,利用模板来分离程序和页面,使程序设计更加轻松。 在使用ASP制作一个站点的时候,常常会出现一个ASP文件中,程序代码和HTML代码混合的情况。这样子做有许多缺点: 1. 且不说编程时就要对页布局进行设计和编排,造成代码混乱难懂,不规范; 2. 当需要改变页面外观时,你不仅要改变HTML部份,也需要改变ASP代码,不易维护。 那么,要如何才能避免这些麻烦呢? 答案就是使用模板文件,将ASP代码和HTML页面分开,一切问题就都解决了。使用网页模板有以下好处: 1. 在很短的时间内可以替换整个站点的外观; 2. 使程序员可以抽象编程,而无须接触HTML代码; 3. 可以重复利用以前的模板。 使用过PHP的程序就会知道,PHP有个模板程序(FastTemplate),现在的问题是如何在ASP中实现类似的功能。 Microsoft的ASP带有两种脚本:VBScript和JScript。它们都带有一个 "正则表达式对象" (RegExp),利用字符串对象和RegExp对象,就可以轻松的实现模板功能。沐枫以此编写了一个 "Template.JScript.INC" 文件,此文件的内容附在文章后面。有能力的读者可以根据自己的需要进行改进。 下面介绍一下使用方法。由于此文件是使用JScript编写的(当然要转成VBScript也很容易),因此,缺省脚本语言要设为JScript,即ASP程序第一行应为:<%@Language=JScript%>,然后再包含模板程序文件:<!--#include file="Template.JScript.INC"-->。 先介绍一下Template类的使用: 1. 建立Template对象:Template(Path) 参数:Path(字符串类型) HTML模板文件的存放路径。 使用new 操作符建立Template对象。 例子: var tpl = new Template("c:\\template"); 在程序中可以用tpl.TplPath来取得模板路径,也可以通过tpl.TplPath来改变模板路径。 如: tpl.TplPath = "d:\\template"; 2. 装载模板文件:Template.Load(Name, File) 参数:Name(字符串类型) 是一个模板变量名。 File(字符串类型) 模板文件名。此文件存放在HTML模板路径下。 读取文件File到模板变量Name中。 例子: tpl.Load("Main", "TEST.HTM"); 此时,模板变量Main就包含了文件TEST.HTM的内容。 你可以用tpl.Main来访问模板变量"Main"。 例子: <%=tpl.Main%> 将显示刚才读进来的TEST.HTM文件内容。 3. 模板分拆:Template.Split(Name) 参数:Name(字符串类型) 是一个模板变量名。 将Name中的子模板分解。 例子: 先假设上例中的TEST.HTM内容为: ------------------- 这是主模板。接下来是:<!--#TPLDEF SUB-->SUB子模板,还有 <!--#TPLDEF THIRD-->THIRD模板。<!--#TPLEND THIRD--> <!--#TPLEND SUB--> ------------------- 那么: tpl.Split("Main"); 执行以后,就会生成新的模板变量"SUB",和"THIRD",它们的内容就是<!--#TPLDEF SUB-->和<!--#TPLEND SUB-->之间语句。 而且"Main"模板变量的内容也会发生改变: tpl.Main 的内容为:"这是主模板。接下来是{SUB}" tpl.SUB 的内容为:"SUB子模板,还有{THIRD}" tpl.THIRD 的内容为:"THIRD模板。" TPLDEF 和 TPLEND 定义的语句块充许多重嵌套。 4. 模板处理:Template.Parse(Name) 参数:Name(字符串类型) 是一个模板变量。 将模板中用花括号括起来的字串用同名的模板变量的内容替换。 例子:续上例 <%=tpl.Parse("Main")%> 显示:"这是主模板。接下来是SUB子模板,还有{THIRD}" 由例子可知,Parse只替换"Main"模板中的{SUB}变量,而不能嵌套替换下去。这是为了增加程序灵活性而故意设计的。那么该怎么样完整显示"Main"模板呢? 例子: tpl.SUB = tpl.Parse("SUB"); //先处理SUB变量,再处理Main变量。 Response.write(tpl.Parse("Main")); 5. 自定义模板变量。 自定义模板变量很简单,可以直接用赋值语句来定义和修改任何变量: 例子: tpl.Hahaha = "这是自定义变量"; tpl.THIRD = "改变原模板中的THIRD变量"; 需要注意的是,由于JScrip是区分大小写的,因此一定要注意大小写的拼写。一般来说,HTML模板中定义的模板变量都用大写。 另外,网站模板中使用的"TplPath","Load","Parse","Split"变量是内部使用的,不要挪做它用,否则程序将可能发生异常。 下面举个完整的例子: 第一步:先建立Html模板文件。 这里先说明HTML模板文件的组成。首先,它和普通的HTML文件几乎没有区别,只不过多了几个标记。 模板的标记有两种。让我们先看一个例子: TEST.HTM ----------------- <!--文件名:TEST.HTM--> <HTML> <TITLE>范例</TITLE> <HEADER> </HEADER> <BODY> 这是一个表格范例。 <TABLE> <!--#TPLDEF MAXX-->10<!--#TPLEND MAXX--> <!--...注意,此处使用了一个技巧即定义了MAXX模板变量并赋值为10。--> <TR> <TD>X</TD><TD>X的平方</TD> </TR> <!--#TPLDEF ROW--> <TR> <TD>{X}</TD><TD>{XX}</TD> </TR> <!--#TPLEND ROW--> </TABLE> 以上共有{COUNT}行数据。 </BODY> </HTML> ----------------- 从上面可以看出,象{X},{XX},{COUNT}之类的记号是定义模板变量。它们将会在ASP程序中被替代。 而<!--#TPLDEF ROW-->...<!--#TPLEND ROW-->是定义一个语句块"ROW"。在ASP程序中就可以将"ROW"块重复多次。 第二步:设计ASP程序。 TEST.ASP ------------------- <%@Language=JScript%> <!--#include file="Template.JScript.INC"--> <% var tpl = new Template("c:\\Inetpub\\wwwroot"); var str=""; var i; tpl.Load("Main","TEST.HTM"); tpl.Split("Main"); tpl.COUNT = 0; for(i=1;i<=tpl.MAXX;i++) //tpl.MAXX在模板中定义为10。 { tpl.X = i; tpl.XX = i*i; str+=tpl.Parse("ROW"); tpl.COUNT++; } tpl.ROW = str; tpl.MAXX =""; //清空此模板变量,以避免被显示出来。 %> <%=tpl.Parse("Main"%> ------------------- 上面的程序将显示一个1到10的平方表。 通常在使用模板的情况下,都只要在最后一行加上显示页面的语句。因此整个程序显得十分清晰。此时,只要对模板文件进行编辑,就可以改变整个页面的外观。 至于模板文件,它可以是任何文件,如HTML文件、ASP文件,甚至是程序本身!,而且在一个程序中可以装载多个模板配合使用,这样,不仅具有极大灵活性,而且模板文件与ASP程序的相关性可减到最低程度。 好好利用模板,将会使你的工作更加轻松。 附:Template 源程序 ------------------------------------ <!--文件名:Template.JScript.INC--> <% /*********************************************************/ /* Template Class */ /* Author: 沐枫 ([email protected]) */ /* Date: 2000-6-09 */ /*********************************************************/ //Template Method Define function Template_Parse(name) { if(this[name]==null) return ""; var reg = new RegExp("{(\\w*)}","ig"; var str = new String(this[name]); var arr = str.match(reg); var i; if(arr != null) for(i=0;i<arr.length;i++) { key = arr.slice(1,-1); reg = new RegExp(arr,"ig"; if(this[key]!=null) str = str.replace(reg,this[key]); } return str; } function Template_Split(name) { var len = 0; var arr; if(this[name]==null) return; var Template_Exp = new RegExp("<!--#TPLDEF +(\\w*) *-->((.|\\n)*)<!--#TPLEND +\\1 *-->","i"; while(this[name].search(Template_Exp)!=-1) { arr = this[name].match(Template_Exp); this[arr[1]] = arr[2]; this[name] = this[name].replace(Template_Exp,"{"+arr[1]+"}"; this.Split(arr[1]); } } function Template_Load(name,filename) { var fso = new ActiveXObject("Scripting.FileSystemObject"; var file = fso.BuildPath(this.TplPath, filename); if(fso.FileExists(file)) { var f = fso.OpenTextFile(file, 1); this[name] = f.ReadAll(); } } //Template Constructor function Template(path) { //Property this.TplPath = path; //Method this.Parse = Template_Parse; this.Split = Template_Split; this.Load = Template_Load; } %> 希望对你有帮助、希望采纳、谢谢
❹ 想要将逻辑运算的PHP代码 和 HTML代码分离 循环的内容应该如何写
HTML文件test.html:
<HTML代码>{$title}<HTML代码>
{$for}
<br /><HTML代码>循环内容{$i}<HTML代码>
{$end}
PHP文件test.php:
$title = '标题';
$html = file_get_contents('test.html');
$html = str_replace('{$title}','<?php echo $title;?>',$html);
$html= str_replace('{$for}','<?php for ($i=0; $i<10; $i++) { ?>',$html);
$html = str_replace('{$i}','<?php echo $i;?>',$html);
$html = str_replace('{$end}','<?php } ?>',$html);
$fp = fopen('index.php', 'w');
fwrite($fp,$html);
fclose($fp);
生成的PHP文件index.php:
<HTML代码><?php echo $title;?><HTML代码>
<?php for ($i=0; $i<10; $i++) { ?>
<br /><HTML代码>循环内容<?php echo $i;?><HTML代码>
<?php } ?>
❺ 如何将php脚本与html分开成两个文件!
用smarty模板 挺简单的
具体配置与使用: http://e.save95.cn/index.php/video/index/14541/series/1/plid/8028
第27讲到29讲就是讲smarty模板的使用 很适合初学者
❻ PHP页面怎么分离为HTML+PHP
前后端分离可以使用ajax,php后台return,如果数据获取成功,返回list,
ajax代码如下:
$.ajax({
type: "GET",
url: "test.json",//php请求数据的地址
data: {aaa:'aaa'},//可选,发送到服务器的数据
dataType: "json",
success: function(data){
$('#resText').empty(); //清空resText里面的所有内容
var html = '<option>查询后选择</option>';
$.each(data, function(commentIndex, comment){
html += '<option value="' + comment[0]+ '">"' + comment[1]+ '</option>';
});
$('#resText').html(html);
}
});
select 加上一个id="resText".大概的意思就是这样,具体根据你的需求在做修改。