一,前端渲染数据 的弊端

仿 apache 服务器与客户端的几次交互:

1,加载静态页面

2,加载静态资源

3,发送 ajax 请求 ,接收请求并处理返回 。

4,前端浏览器接收数据循环遍历。

存在的问题:   交互太多

/*

*  使用 ajax 作请求的方式叫做 =>  前端渲染数据,也叫客户端页面渲染

*/

解决的方法:   在服务器端遍历数据

—————————————————

二,服务端页面渲染

1,进入npm官网,搜索 art-templet 第三方模块 https://www.npmjs.com/package/art-template

2,打开文档  https://aui.github.io/art-template/zh-cn/docs/

3,根据文档安装

npm install art-template --save

4,API

template(filename, content)

根据模板名渲染模板。

  • 参数

    • {string} filename
    • {Object,string} content
  • 返回值
    • 如果 content 为 Object,则渲染模板并返回 string
    • 如果 content 为 string,则编译模板并返回 function
var html = template('/welcome.art', {
value: 'aui'
}); ———————————————————————————————————— 三,实践
1,出现了错误

2,错误原因 :   没有设置根路径,此刻路径默认根目录C盘

查看 art-template 模块文档的选项, https://aui.github.io/art-template/zh-cn/docs/options.html

var template = require('art-template');
template.defaults.root = './';
var str = template('./art.html',{
  v:'卡卡'
});
——————————————————————————————————————————————————————————————————————

四,具体代码

1,server.js 后台文件  
const http = require('http');
const fs = require('fs');
const moment = require('moment');
const server = http.createServer();
const template = require('art-template')
/**
* 修改根目录路径
*/
template.defaults.root = './';
server.on('request', function (req, res) {
  var urls = req.url;
  console.log(urls);
  if(urls=='/'){
    res.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'});
    fs.readdir('./','utf8',(err,data)=>{
      var data_arr = [];
      var count = 0;
      for(var i=0;i<data.length;i++){
 
        data_arr[i] = {};
        ((i)=>{
          fs.stat(data[i],(err,files)=>{
 
            if(files.isFile()==true){
              data_arr[i].type = 'f';
            }else{
              data_arr[i].type = 'd';
            }
          count++;
 
          data_arr[i].name = data[i];
          data_arr[i].size = files.size;
          data_arr[i].mtime = moment(files.mtime).format('YYYY/MM/DD hh:mm:ss');
          if(count == data.length){
            /**
            * 使用模板引擎读取数据
            */
            var htmls = template('./index.html',{
            data:data_arr
          });
          res.end(htmls)
        }
      })
    })(i)
 
   }
 
  })
 
 
  }else{
 
  fs.readFile('.'+urls, function (err, data) {
    res.end(data)
  });
 }
 
});
server.listen(1234, () => {
console.log('this server is runing on 1234')
});

2, index.html   前台展示文件  。 此处用到了 art-template 模块的语法 ,详细介绍 : https://aui.github.io/art-template/zh-cn/docs/syntax.html

<h1>获取文件及文件夹在前台遍历</h1>
<div id="div">
  {{each data}}
    <!-- 注意不要写成data.type -->
    {{if $value.type == 'f'}}
      <i class = 'glyphicon glyphicon-duplicate'></i> 文件名 :
    {{else}}
      <i class = 'glyphicon glyphicon-folder-close'></i> 目录名 :
    {{/if}}

  

    {{$value.name}} ,文件大小 : {{$value.size}} ,文件创建时间 : {{$value.mtime}} <br>
  {{/each}}
</div>

17 —— 服务端渲染 —— art-template的更多相关文章

  1. 基于vue-cli项目添加服务端渲染

    两个示例的git地址: 1. 我的环境 2. 方式一:使用prerender-spa-plugin插件获得SSR的效果. 2.1 说明 2.2 初始化 1 vue init webpack vue-p ...

  2. Vue服务端渲染 VS Vue浏览器端渲染)

    Vue 2.0 开始支持服务端渲染的功能,所以本文章也是基于vue 2.0以上版本.网上对于服务端渲染的资料还是比较少,最经典的莫过于Vue作者尤雨溪大神的 vue-hacker-news.本人在公司 ...

  3. 改造@vue/cli项目为服务端渲染-ServerSideRender

    VUE SEO方案二 - SSR服务端渲染 在上一章中,我们分享了预渲染的方案来解决SEO问题,个人还是很中意此方案的,既简单又能解决大部分问题.但是也有着一定的缺陷,所以我们继续来看下一个方案--服 ...

  4. 实例PK(Vue服务端渲染 VS Vue浏览器端渲染)

    Vue 2.0 开始支持服务端渲染的功能,所以本文章也是基于vue 2.0以上版本.网上对于服务端渲染的资料还是比较少,最经典的莫过于Vue作者尤雨溪大神的 vue-hacker-news.本人在公司 ...

  5. Vue服务端渲染和Vue浏览器端渲染的性能对比

    Vue 2.0 开始支持服务端渲染的功能,所以本文章也是基于vue 2.0以上版本.网上对于服务端渲染的资料还是比较少,最经典的莫过于Vue作者尤雨溪大神的 vue-hacker-news.本人在公司 ...

  6. Vue.js 服务端渲染业务入门实践

    作者:威威(沪江前端开发工程师) 本文原创,转载请注明作者及出处. 背景 最近, 产品同学一如往常笑嘻嘻的递来需求文档, 纵使内心万般拒绝, 身体倒是很诚实. 接过需求,好在需求不复杂, 简单构思 后 ...

  7. Egg + Vue 服务端渲染工程化实现

    在实现 egg + vue 服务端渲染工程化实现之前,我们先来看看前面两篇关于Webpack构建和Egg的文章: 在 Webpack工程化解决方案easywebpack 文章中我们提到了基于 Vue ...

  8. Angular开发实践(六):服务端渲染

    Angular Universal Angular在服务端渲染方面提供一套前后端同构解决方案,它就是 Angular Universal(统一平台),一项在服务端运行 Angular 应用的技术. 标 ...

  9. 使用 PHP 来做 Vue.js 的 SSR 服务端渲染

    对于客户端应用来说,服务端渲染是一个热门话题.然而不幸的是,这并不是一件容易的事,尤其是对于不用 Node.js 环境开发的人来说. 我发布了两个库让 PHP 从服务端渲染成为可能.spatie/se ...

随机推荐

  1. UOJ Contest #50: Goodbye Jihai

    比赛传送门:Goodbye Jihai. \(\Huge{\mathbf{再见,己亥.\\你好,庚子!\\祝大家新春快乐!}}\) A. 新年的促销 这题如果直接做的话可能方向会想歪,方向对了其实就是 ...

  2. boost::thread demo

    #include <iostream> #include <boost/date_time/gregorian/gregorian.hpp> #include <boos ...

  3. 「React Native笔记」在React的 setState 中操作数组和对象的多种方法(合集)

    运用在React 中 setState的对象.数组的操作时是不能用类似array.push()等方法,因为push没有返回值,setState后会出现state变成Number,为了方便他人和自己查看 ...

  4. GET乱码以及POST乱码的解决方法

    GET乱码以及POST乱码的解决方法 作者:东坡下载  来源:uzzf  发布时间:2010-10-14 11:40:01  点击: 一.GET乱码的解决方法 在tomcat的server.xml文件 ...

  5. Java注解浅谈

    注解定义(来自百度百科):指示编译器如何对待您的自定义 Annotation,预设上编译器会将Annotation资讯留在class档案中,但不被虚拟机器读取,而仅用于编译器或工具程式运行时提供资讯. ...

  6. LoadRunner监控Linux系统

    需要下载3个包:  地址链接:链接:https://pan.baidu.com/s/1lltAa6JnjJ7Mr88duixUSQ 密码:5yiw(1)rsh-0.17-14.i386.rpm (2) ...

  7. 编程题目:求幂 (python)

    数值的整数次方 效率0(lgn) 这个求幂函数无论 基数 或 次方 为 正数或者为负数都是成立的.只是他们都为整数罢了. 注意了哦,这个代码必须要用python3才能运行正确,因为python3的 整 ...

  8. Ubuntu下安装 Mysql

    MYSQL在ubuntu16.04下的编译安装mysql-5.6.23.tar.gz 为减少安装过程中因权限带来个各种问题,建议全程用root用户编译安装,步骤如下: 1.安装依赖文件  apt-ge ...

  9. List<Object> 查询解析优化

    2018年3月16日 大型仪器设备分类查出后,需要展示个分类下总共有多少台设备.因为分类总共分三层,加起来数据700+.以后该系统上线设备可能达到2000+,这样统计每个分类下的设备可能会拖垮服务器. ...

  10. 吴裕雄--天生自然java开发常用类库学习笔记:LinkedList类

    import java.util.LinkedList ; public class LinkedListDemo01{ public static void main(String args[]){ ...