markdown support

HTTP服务器

一、服务器基本方法

"use strict";

// 1.加载http模块
const http = require('http'); // 2.通过http核心模块暴露的createsever方法创建一个服务实例
const sever = http.createSever(); // 3.给服务器添加监听客户端请求的处理函数
// 每当接受客户端的请求,那么就会触发该事件,执行绑定的回调函数
// 当服务器接收到客户端请求之后,会将客户端的请求报文数据解析为一个
sever.on('request',(req,res) => {
// req就是客户端发送的请求报文中的请求头部分
// message.headers
}); // 4.开启服务器,设置一个监听的端口
// 要监听的端口号
// 允许通过那个IP地址进行访问
// 开启监听的需要时间,在回调函数里输出自定义信息
sever.listen(3000,'127.0.0.1',() => { });

二、实现一个静态资源服务器

实现步骤

  • 定义严格模式,并引用模块

    • 文件fs模块
    • 路径path模块
    • http模块
  • 创建服务器http.createSever((req,res) => {}).listen(3000,'127.0.0.1');
    • 客户端请求的路径:req.url;
    • 得到用户的请求的绝对路径:path.join(__dirname,url);
    • 利用获取的路径作为文件名读取文件fs.readFile(absPath,(err,data) => {});
      • 调用函数,向客户端发送数据类型
      res.writeHead(200, {
      'Content-Type': mime;````
      });
      • 发送数据,结束响应 : res.end(data);
  • 通过扩展名获取请求头的格式(自定义函数部分)
"use strict";

const http = require('http');
const fs = require('fs');
const path = require('path'); http.createSever((req,res) => {
// 客户端请求的url路径
let url = req.url; // 如果用户的请求路径中没有点,那么给它返回一个默认的页面
if (!url.includes('.')) {
url = 'index.html';
} // 得到用户的请求的绝对路径
let absPath = path.join(__dirname,url); <!-- res.write(absPath); // 第一个参数必须是字符串类型
res.end(); -->
// end之后,本次相应彻底结束,链接断开 <!-- res.end(absPath); --> // 相当于上述俩句代码 fs.readFile(absPath,(err,data) => {
if(err) {
return res.end(err.message);
} // 读取文件,解析json,然后根据对应的扩展名,找到对应的mime Content-Type
getContentTypeByEXTName(path.extname(absPath),(err,mine) => {
if(err) {
return res.end(err.message);
} // 向客户端发送数据类型的时候,要根据文件的扩展名
res.writeHead(200, {
'Content-Type': mime;
}); // 发送数据,结束响应
res.end(data);
});
}) }).listen(3000,'127.0.0.1'); // 自定义函数
function getContentTypeByEXTName(extName,callback){
fs.readFile(path.join(__dirname,'mine.txt'),'utf8',(err,data) => {
if(err) {
return callback(err,null);
} try{
let jsonObj = JSON.parse(data);
callback(null,jsonObj[extName] ? jsonObj[extName] : 'text/plain');
} catch (e) {
callback(e, null);
}
});
}

三、后端模板字符串(art-template)

1.跨页面

html页面部分

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>art-template</title>
</head>
<body>
{{each list as value i}}
<tr>
<td><a class="icon dir" href="/{{value}}">{{value}}/</a></td>
<td class="detailsColumn"></td>
<td class="detailsColumn">16/2/7 下午5:11:54</td>
</tr>
{{/each}}
</body>
</html>

js页面部分

"use strict";
// 获取template文件
const template = require('art-template');
const fs = require('fs');
const path = require('path'); // 文件读取,获取数据
fs.readFile(path.join(__dirname,'index.html'),'utf8',(err,data) => {
if (err) {
return res.end(err.message);
} // 编译模板,我们在这儿是把文件整体作为一个模板字符串了
let compileFunc = template.render(data); // 向模板中注入数据,得到完整的html字符串
let htmlStr = compileFunc({
list: contents // contents为替换的内容数组
}); // 向客户端发送响应头部字段,告诉客户端本次响应的数据是什么类型
res.writeHead(200, {
'Content-Type': 'text/html; charset=utf-8'
}); // 发送数据,也叫作响应数据
res.end(htmlStr);
})

2.node.js单页面


arr[arr.length] = item;

arr.push(item);

node服务器的更多相关文章

  1. 手把手教你从购买vps到搭建一个node服务器

    要准备什么? 1.5刀 2.最好有FQ软件(可以用蓝灯) let's Go! 一.vps购买 vps可以选择digital ocean(do) 链接 ,由于是外国网站,响应比较慢,所以最好翻个墙. g ...

  2. webstorm搭建node服务器

    前言,搭建服务器,必须有node.js环境(吐槽:本来就是用node搭建的(⊙o⊙)…) 下载node.js 网址  https://nodejs.org/en/ 先新建项目: 这里选择Node.js ...

  3. 设置node服务器的端口及运行环境

    一般来说,node服务器中通常会看到这样的代码: ``` app.set('port', process.env.PORT || 3000); if ( process.env.NODE_ENV == ...

  4. koa-static node服务器设置静态目录

    最近毕设需要用到上传照片,但当node服务器成功获取前端传来的图片时,又不知道如何在页面获取服务器image目录下的图片,一直报以下错误: 问题主要是无法找到图片url,虽然可以一个个在app.js文 ...

  5. 上传图片,通过node服务器存储在指定目录

    最近做毕设,需要上传图片,因为在本地服务器运行,所以想着前端上传后,通过node服务器接收图片,存储在指定的目录下. 一.前端实现 1.前端的页面和上传图片是利用element-ui组件实现的,&qu ...

  6. 亚马逊EC2服务器申请+NODE服务器部署+阿里云域名申请+SSL证书使用

    最近,由于项目需要,自己申请了一台亚马逊用于部署网站测试,在使用期间,发现网上没有一篇非常完整的文章讲解从服务器申请到域名解析,SSL证书申请的整个流程.所以自己总结一下,以供大家学习! 一.亚马逊E ...

  7. 使用express创建node服务器的两种方法及区别

    使用express创建node服务器有两种方法,如下所示: 方法一: var express = require('express'); var app = express(); app.listen ...

  8. 搭建一个最简单的node服务器

    搭建一个最简单的node服务器 1.创建一个Http服务并监听8888端口 2.使用url模块 获取请求的路由和请求参数 var http = require('http'); var url = r ...

  9. 创建简单的node服务器

    昨天咱们说了封装ajax,今天咱们说一下 自己创建一个建议的node服务器: 话不多说直接上代码: var http = require('http') //对URL 解析为对象//1.导入模块 UR ...

  10. 2、node服务器

    一.简单的node服务器搭建 1.首先新建一个名为server.js的文件(文件名随意,后缀名必须是.js) 2.粘贴进文件以下内容 //引入http模块 const http = require(& ...

随机推荐

  1. Delphi 调用Dll的两种方式

    unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System ...

  2. 浅谈Web缓存

    在前端开发中性能一直都是被大家所重视的一点,然后判断一个网站的性能最直观的就是看网页打开的速度. 其中提高网页反应的速度的一个方式就是使用缓存.一个优秀的缓存策略可以缩短网页请求资源的距离,减少延迟, ...

  3. win 7,win2008 无法给新建用户完全权限

    明明把这个用户添加到管理员组了啊,为什么在运行一些程序时老是提示没有权限,实在是郁闷.在网上Google 了半天也没找到个所以然来. 后来发现是系统用户帐户控制搞的鬼,到 控制面板/用户帐户和家庭安全 ...

  4. STL迭代器之一:偏特化

    在stl的算法中运用容器的迭代器时,很可能经常会用到迭代器相应型别(例如迭代器所指物的型别),假设算法中有必要声明一个变量,以"迭代器所指对象的型别"为类型,如何是好,例如我们写一 ...

  5. linux 下 TeXmacs 作 Maple 18 的前端

    TeXmacs的maple 插件比较老,默认条件下无法运行maple 18.且默认情况下maple18不在系统的搜索目录中,导致TeXmacs中不显示 maple 的session.以下假设TeXma ...

  6. linux 下 TeXmacs 作 Mathematica 10 的前端

    TeXmacs可以作很多种数学软件的前端,比如maxima,octave,R等.甚至还可以作mathematica的前端.TeXmacs的mathematica 插件比较老,默认条件下无法运行math ...

  7. vim的树形菜单NERDTREE的设置

    网上比较好的一篇文章:http://coolshell.cn/articles/1679.html http://coolshell.cn/articles/11312.html 1.Vim安装NER ...

  8. EM算法(1):K-means 算法

    目录 EM算法(1):K-means 算法 EM算法(2):GMM训练算法 EM算法(3):EM算法运用 EM算法(4):EM算法证明 EM算法(1) : K-means算法 1. 简介 K-mean ...

  9. JavaScript编程总结

    1.   JS加载放在底部 2.   JS和CSS合并,一个页面加载的JS和CSS越少越好 3.   尽量使用变量,页非全局变量. 4.   脚本和DOM交互越少越好,尽量批量修改. 5.   批量修 ...

  10. Python 3.X简史——记录3.0之后的重要更新

    Python 3.0在2008年12月3日正式发布,在之后又经历了多个小版本(3.1,3.2,3.3……),本文梳理Python 3.0之后的新特性. 其实每个版本都有大量更新,都写出来要几百页,这里 ...