效果图

1.js文件

var http=require('http')
var fs=require('fs')
var template=require('art-template')
var server=http.createServer()var wwwDir= 'E:/Node/www'server.on('request',function(req,res){var url = req.urlfs.readFile('./template.html',function(err,data){if(err){return res.end('404 NOT FOUND')}// 1. 如何得到 wwwDir 目录列表中的文件名和目录名//    fs.readdir// 2. 如何将得到的文件名和目录名替换到 template.html 中//    2.1 在 template.html 中需要替换的位置预留一个特殊的标记(就像以前使用模板引擎的标记一样)//    2.2 根据 files 生成需要的 HTML 内容// 只要你做了这两件事儿,那这个问题就解决了fs.readdir(wwwDir,function(err,files){if(err){return res.end('Can not find www dir')}// else{//     console.log(files)//     console.log(data.toString())// }//这里只需要使用模板引擎解析替换data中的模板字符串就可以了//数据就是files//var htmlStr= template.render(data.toString(),{files:files,title:'哈哈哈哈啊哈哈哈哈哈'})res.end(htmlStr)})})
})server.listen(80,function(){console.log('服务器启动成功')})

templat.html文件

<html dir="ltr" lang="zh" i18n-processed=""><head><meta charset="utf-8"><meta name="google" value="notranslate"><style>h1 {border-bottom: 1px solid #c0c0c0;margin-bottom: 10px;padding-bottom: 10px;white-space: nowrap;}table {border-collapse: collapse;}th {cursor: pointer;}td.detailsColumn {-webkit-padding-start: 2em;text-align: end;white-space: nowrap;}a.icon {-webkit-padding-start: 1.5em;text-decoration: none;}a.icon:hover {text-decoration: underline;}a.file {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABnRSTlMAAAAAAABupgeRAAABHUlEQVR42o2RMW7DIBiF3498iHRJD5JKHurL+CRVBp+i2T16tTynF2gO0KSb5ZrBBl4HHDBuK/WXACH4eO9/CAAAbdvijzLGNE1TVZXfZuHg6XCAQESAZXbOKaXO57eiKG6ft9PrKQIkCQqFoIiQFBGlFIB5nvM8t9aOX2Nd18oDzjnPgCDpn/BH4zh2XZdlWVmWiUK4IgCBoFMUz9eP6zRN75cLgEQhcmTQIbl72O0f9865qLAAsURAAgKBJKEtgLXWvyjLuFsThCSstb8rBCaAQhDYWgIZ7myM+TUBjDHrHlZcbMYYk34cN0YSLcgS+wL0fe9TXDMbY33fR2AYBvyQ8L0Gk8MwREBrTfKe4TpTzwhArXWi8HI84h/1DfwI5mhxJamFAAAAAElFTkSuQmCC ") left top no-repeat;}a.dir {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAd5JREFUeNqMU79rFUEQ/vbuodFEEkzAImBpkUabFP4ldpaJhZXYm/RiZWsv/hkWFglBUyTIgyAIIfgIRjHv3r39MePM7N3LcbxAFvZ2b2bn22/mm3XMjF+HL3YW7q28YSIw8mBKoBihhhgCsoORot9d3/ywg3YowMXwNde/PzGnk2vn6PitrT+/PGeNaecg4+qNY3D43vy16A5wDDd4Aqg/ngmrjl/GoN0U5V1QquHQG3q+TPDVhVwyBffcmQGJmSVfyZk7R3SngI4JKfwDJ2+05zIg8gbiereTZRHhJ5KCMOwDFLjhoBTn2g0ghagfKeIYJDPFyibJVBtTREwq60SpYvh5++PpwatHsxSm9QRLSQpEVSd7/TYJUb49TX7gztpjjEffnoVw66+Ytovs14Yp7HaKmUXeX9rKUoMoLNW3srqI5fWn8JejrVkK0QcrkFLOgS39yoKUQe292WJ1guUHG8K2o8K00oO1BTvXoW4yasclUTgZYJY9aFNfAThX5CZRmczAV52oAPoupHhWRIUUAOoyUIlYVaAa/VbLbyiZUiyFbjQFNwiZQSGl4IDy9sO5Wrty0QLKhdZPxmgGcDo8ejn+c/6eiK9poz15Kw7Dr/vN/z6W7q++091/AQYA5mZ8GYJ9K0AAAAAASUVORK5CYII= ") left top no-repeat;}a.up {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAmlJREFUeNpsU0toU0EUPfPysx/tTxuDH9SCWhUDooIbd7oRUUTMouqi2iIoCO6lceHWhegy4EJFinWjrlQUpVm0IIoFpVDEIthm0dpikpf3ZuZ6Z94nrXhhMjM3c8895977BBHB2PznK8WPtDgyWH5q77cPH8PpdXuhpQT4ifR9u5sfJb1bmw6VivahATDrxcRZ2njfoaMv+2j7mLDn93MPiNRMvGbL18L9IpF8h9/TN+EYkMffSiOXJ5+hkD+PdqcLpICWHOHc2CC+LEyA/K+cKQMnlQHJX8wqYG3MAJy88Wa4OLDvEqAEOpJd0LxHIMdHBziowSwVlF8D6QaicK01krw/JynwcKoEwZczewroTvZirlKJs5CqQ5CG8pb57FnJUA0LYCXMX5fibd+p8LWDDemcPZbzQyjvH+Ki1TlIciElA7ghwLKV4kRZstt2sANWRjYTAGzuP2hXZFpJ/GsxgGJ0ox1aoFWsDXyyxqCs26+ydmagFN/rRjymJ1898bzGzmQE0HCZpmk5A0RFIv8Pn0WYPsiu6t/Rsj6PauVTwffTSzGAGZhUG2F06hEc9ibS7OPMNp6ErYFlKavo7MkhmTqCxZ/jwzGA9Hx82H2BZSw1NTN9Gx8ycHkajU/7M+jInsDC7DiaEmo1bNl1AMr9ASFgqVu9MCTIzoGUimXVAnnaN0PdBBDCCYbEtMk6wkpQwIG0sn0PQIUF4GsTwLSIFKNqF6DVrQq+IWVrQDxAYQC/1SsYOI4pOxKZrfifiUSbDUisif7XlpGIPufXd/uvdvZm760M0no1FZcnrzUdjw7au3vu/BVgAFLXeuTxhTXVAAAAAElFTkSuQmCC ") left top no-repeat;}html[dir=rtl] a {background-position-x: right;}#parentDirLinkBox {margin-bottom: 10px;padding-bottom: 10px;}#listingParsingErrorBox {border: 1px solid black;background: #fae691;padding: 10px;display: none;}</style><title id="title">{{ title }}</title>
</head><body><div id="listingParsingErrorBox">糟糕!Google Chrome无法解读服务器所发送的数据。请<a href="http://code.google.com/p/chromium/issues/entry">报告错误</a>,并附上<a href="LOCATION">原始列表</a>。</div><h1 id="header">E:\Node\www\ 的索引</h1><div id="parentDirLinkBox" style="display:none"><a id="parentDirLink" class="icon up"><span id="parentDirText">[上级目录]</span></a></div><table><thead><tr class="header" id="theader"><th onclick="javascript:sortTable(0);">名称</th><th class="detailsColumn" onclick="javascript:sortTable(1);">大小</th><th class="detailsColumn" onclick="javascript:sortTable(2);">修改日期</th></tr></thead><tbody id="tbody">{{each files}}<tr><td data-value="apple/"><a class="icon dir" href="/E:/Node/www/apple/">{{$value}}/</a></td><td class="detailsColumn" data-value="0"></td><td class="detailsColumn" data-value="1509589967">2017/11/2 上午10:32:47</td></tr>{{/each}}</tbody></table>
</body></html>

在Apache案例中加入模板引擎相关推荐

  1. Node 03--在Node中使用模板引擎进行渲染

    使用readdir获取指定路径下的所有文件名 文件结构 实现代码 const fs = require('fs');fs.readdir('G:/pink_code/Node_Study/02',(e ...

  2. ThinkPHP6 模板引擎普通标签中,模板引擎运算符函数,循环标签,判断标签的使用,及一些特殊标签

    ThinkPHP6 模板引擎普通标签中,模板引擎运算符函数,循环标签,判断标签的使用,及一些特殊标签 模板引擎支持普通标签和XML标签方式两种标签定义,分别用于不同的目的: 标签类型 描述 普通标签 ...

  3. node中使用模板引擎

    模板引擎 1 .模板引擎基础 1.1模板引擎 主要功能就是拼接字符串(将HTML模板与数据拼接) 模板引擎不是node.js本身提供的,是第三方模块 让开发者以更友好的方式拼接字符串,是项目代码更加清 ...

  4. 六十四、SpringBoot中的模板引擎Thymeleaf

    @Author:Runsen 来源:尚硅谷 下面建议读者学习尚硅谷的B站的SpringBoot视频,我是学雷丰阳视频入门的. 具体链接如下:B站尚硅谷SpringBoot教程 文章目录 使用Sprin ...

  5. 3、play中的模板引擎

    1.模板格式 Play默认的模板引擎是一种基于scala的安全模板引擎,尽管模板引擎使用Scala作为表达式语言,但是非常简单易学.参数类型使用后缀语法指定(例如: id:Long),泛型类型是使用[ ...

  6. Spring Boot中使用模板引擎引用资源

    目录 概念 演示 概念 在Spring Boot中可以通过模板引擎去引用资源,如果项目改变了,也是可以跑的,不需要自己手动一个个去改链接. 演示 运行截图如下: 但修改properties文件: se ...

  7. 【ST4】Java 中的模板引擎 StringTemplate

    1.概述 StringTemplate是一种基于java的模板引擎库,类似于velocity,FreeMarker.可以用于生成源代码.web页面.电子邮件等多种样式的文本.选择StringTempl ...

  8. JavaScript中template模板引擎

    这篇文章主要为大家详细介绍了JavaScript模板引擎Template.js使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 template.js 一款 JavaScript 模板引擎, ...

  9. tal php x 1,PHP中TAL模板引擎语法的解析(代码)

    这篇文章给大家介绍的内容是关于php TAL模板引擎语法,内容很详细,有需要的朋友可以参考一下,希望可以帮助到大家. PHP 数据 本文档的使用到的数据($talData)//定义talData变量 ...

最新文章

  1. 关于微信公众号注意事项
  2. numpy(5)-astype
  3. 云计算中HMI的三大优点
  4. TP框架多上传域上传图片
  5. 华为海思总裁凌晨邮件燃爆全国:多年备胎一夜转“正”,今后要科技自立
  6. activiti工作流 php,码云社 | 砺锋科技-SpringBoot整合Activiti工作流(附源码) - 用代码改变世界...
  7. Win10易升-在线升级工具
  8. iperf 服务端发送数据_iperf网络测试工具
  9. S7-200SMART案例分析——伺服接线(二)
  10. 解决无法从Git官网下载Git安装包的具体方法
  11. TaxoNN: ensemble of neural networks on stratified microbiome data for disease prediction阅读报告
  12. 如何手动结束Python的子线程和子进程
  13. 【sketchup 2021】草图大师的高级工具使用2【材质贴图应用的基础功能和高级使用与实战演练(给地砖调整尺寸、转贴贴图圆柱为例、投影贴图百叶窗为例】
  14. 解决androidstudio unable to delete directory的办法
  15. MyBatis和MyBatis-plus教程
  16. 全国30米土地利用数据分享(1980-2020)
  17. Python采集天天基金数据,帮你掌握最新基金动向
  18. 卡莱特led显示屏调试教程_麒麟电子|LED控制卡|LED显示屏|卡莱特同步卡使用千兆网卡调试步骤 通用 - Powered by Discuz!...
  19. 人工智能史话(番外篇)
  20. c语言怎么解析midi文件,C++读取midi文件出现问题

热门文章

  1. 创造天赋:达·芬奇的7种天才特质
  2. Scala学习(一) 快速入门
  3. Linux 入门——基础使用及常见命令
  4. Lineage OS刷机出现error 7的解决办法
  5. 【Mysql数据库 第2章】MySQL数据库基本操作-DML
  6. 黑马python培训课程
  7. 4. 机器人正运动学---理解变换矩阵
  8. PID file not written; -detached was passed,安装rabbitmq启动失败
  9. 用 iOS 系统自动化解救钉钉打卡族
  10. php gmssl,支持国密SM2/SM3/SM4/SM9/ZUC/SSL的密码工具箱GmSSL