'use strict'; var fs = require('fs'), url = require('url'), path = require('path'), http = require('http'); // 从命令行参数获取root目录,默认是当前目录: var root = path.resolve(process.argv[2] || '.'); console.log('Static root dir: ' + root); // 创建服务器: var server = ht…
标签: NodeJS 0 这个伪系列的第二篇,不过和之前的几篇是同一天写的.三分钟热度貌似还没过. 1 静态资源代理 上一篇,我们是通过判断请求的路径来直接返回结果的.简单粗暴,缺点明显:如果url后面加杂了queryString,因为判断逻辑中没有处理,那么将直接返回404页面(其实也没有其他的页面). 难道要一个一个加queryString的处理?有可行性,但麻烦. 再者,如果要添加新的html页面,那么也要在处理逻辑中依次添加?html页面还要引用js脚本,css样式,样式表中还要引用图片…
Node.js是目前非常火热的技术,但是它的诞生经历却很奇特. 众所周知,在Netscape设计出JavaScript后的短短几个月,JavaScript事实上已经是前端开发的唯一标准. 后来,微软通过IE击败了Netscape后一统桌面,结果几年时间,浏览器毫无进步.(2001年推出的古老的IE 6到今天仍然有人在使用!) 没有竞争就没有发展.微软认为IE6浏览器已经非常完善,几乎没有可改进之处,然后解散了IE6开发团队!而Google却认为支持现代Web应用的新一代浏览器才刚刚起步,尤其是浏…
nodejs版本:v10.14.2 1.首先准备一个简单的html页面 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>nodejs显示html</title> </head> <body> <h1>看到这句话表示html页面成功显示了.</h1> <…
为什么要学习node.首先是听说了这个和前后端分离有很大的关系.node作为一个基础的技术,需要提前学习.学习node,不打算直接先跟着视频去学习老师们的课程.因为想自己找到一种适合自己的学习方法.之前张龙老师的所有课程,都是根据所有技术的官方文档进行讲解的.我们为什么不可以直接在node的官网上根据官网的文档进行学习呢?当然可以.node作为我以这种学习方式的第一门技术.来记录一下此种学习方法的过程,看能否适合当前的我的学习. 首先打开了node.js的官网.想要学习这门技术,首先要把node…
npm:NodeJs包管理器 express:服务器端比较流行的MVC框架,处理服务请求,路由转发,逻辑处理 http://socket.io:实现服务端和客户端socket通信解决方案 ); // 将文件流导向response: fs.createReadStream(filepath).pipe(response); } else { // 出错了或者文件不存在: console.log('404 ' + request.url); // 发送404响应: response.writeHea…
Node.js开发的目的就是为了用JavaScript编写Web服务器程序.因为JavaScript实际上已经统治了浏览器端的脚本,其优势就是有世界上数量最多的前端开发人员.如果已经掌握了JavaScript前端开发,再学习一下如何将JavaScript应用在后端开发,就是名副其实的全栈了. HTTP协议 要理解Web服务器程序的工作原理,首先,我们要对HTTP协议有基本的了解.如果你对HTTP协议不太熟悉,先看一看HTTP协议简介. HTTP服务器 要开发HTTP服务器程序,从头处理TCP连接…
步骤:一.安装node;二.新建一个文件夹目录(根目录),里面再新建一个server.js文件:三.打开命令行界面,进入文件夹目录然后输入命令node server.js;四.然后就可以在浏览器上通过localhost:8080进行文件的访问了.例如:根目录下有个index.html,那么访问地址是:localhost:8080/index.html; server.js配置文件如下:'use strict'; var fs = require('fs'), url = require('url…
Node.js创建第一个应用 Node.js开发的目的就是为了用JavaScript编写Web服务器程序, 在使用Node.js时,不仅仅是在实现一个应用,同时还实现了整个HTTP服务器.在创建Node.js第一个"Hello, World!"应用前,需先了解下Node.js应用是由哪几部分组成的: 引入require模块: 使用require指令载入Node.js模块 创建服务器: 服务器可以监听客户端的请求,类似于Apache.Nginx等HTTP服务器 接收请求与响应请求: 客户…
Node.JS--学习笔记 2020年02月23日11:52:01 我打算自学NodeJS-通过阅读NodeJS官网来完成. https://nodejs.org/dist/latest-v13.x/docs/api/ https://www.liaoxuefeng.com/wiki/1022910821149312/1023025235359040 初识Node.js Node.js 是一个基于 Chrome V8 引擎 的 JavaScript 运行时. 安装Node.js 下载-安装 运行…
前言 本章将主要介绍使用Node.js开发web应用可能面临的安全问题,读者通过阅读本章可以了解web安全的基本概念,并且通过各种防御措施抵御一些常规的恶意攻击,搭建一个安全的web站点. 在学习本章之前,读者需要对HTTP协议.SQL数据库.Javascript有所了解. 什么是web安全 在互联网时代,数据安全与个人隐私受到了前所未有的挑战,我们作为网站开发者,必须让一个web站点满足基本的安全三要素: (1)机密性,要求保护数据内容不能泄露,加密是实现机密性的常用手段. (2)完整性,要求…
JS生成随机的由字母数字组合的字符串 Math.random().toString(36).substr(2)…
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node/http-server 使用 Node.js 创建 http 服务器需要使用内置的 http 模块 创建 web server Node.js 是运行在服务器环境的 JavaScript,这里的服务器更多指的是物理概念的服务器,也就是主机.使用 Node.js 创建 HTTP 服务器指的是软件概念…
概览 做过web性能优化的同学,对性能优化大杀器gzip应该不陌生.浏览器向服务器发起资源请求,比如下载一个js文件,服务器先对资源进行压缩,再返回给浏览器,以此节省流量,加快访问速度. 浏览器通过HTTP请求头部里加上Accept-Encoding,告诉服务器,"你可以用gzip,或者defalte算法压缩资源". Accept-Encoding:gzip, deflate 那么,在nodejs里,是如何对资源进行压缩的呢?答案就是Zlib模块. 入门实例:简单的压缩/解压缩 压缩的…
静态服务器 代码 const http = require('http') const chalk = require('chalk') const conf = require('./config/default') const path = require('path') const fs = require('fs') const server = http.createServer((req, res) => { const url = req.url const filePath =…
一.缓存的作用 1.减少了数据传输,节约流量. 2.减少服务器压力,提高服务器性能. 3.加快客户端加载页面的速度. 二.缓存的分类 1.强制缓存,如果缓存有效,则不需要与服务器发生交互,直接使用缓存. 2.对比缓存,每次都需要与服务器发生交互,对缓存进行比较判断是否可以使用缓存. 三.通过使用 Last-Modified / If-Modified-Since 来进行缓存判断 1.Last-Modified 是服务器向客户端发送的头信息,用于告诉客户端资源的 最后修改时间,该信息浏览器会保存起…
起因: 新来了一个需求,让用户下载一个200m的zip文件,并且校验用户信息,难点:下载的文件是200M的. 现在维护的系统,以前的文件下载,走的是node的静态文件,用的express框架上自带的静态文件资源配置,用法如下: //静态文件资源目录配置app.use(express.static(__dirname + '/public'))这种方式是不能校验用户信息的,因为不走路由,也不走路由后面的后台逻辑层,所以改用get请求到后台,验证用户信息后再读取文件,将文件流返回到页面 页面请求方式…
在JavaScript模块化和闭包和JavaScript-Module-Pattern-In-Depth这两篇文章中,提到了模块化的基本思想,但是在实际项目中模块化和项目人员的分工,组建化开发,打包发布,性能优化,工程化管理都有密切的关系,这么重要的事情,在JavaScript大行其道的今天,不可能没有成熟的解决方案,所以从我的实践经验出发,从模块化讲到工程化,分享一下自己的经验. 这篇文章主要是讲require.js和r.js在项目中的使用,不会涉及到工程化问题,对此熟悉的看官可以略过此文.对…
1.express项目修改不重启 $ supervisor node bin/www 让supervisor监听模板文件的改动 $ supervisor --extensions html,css,js ./bin/www 2.Express+Nodejs 下的登录拦截实现 app.use(function (req, res, next) { var url = req.originalUrl; console.log("url"+url); if (url != "/lo…
在node环境中运行下面的代码 "use strict"; const http = require("http"), path = require("path"), url = require("url"), fs = require("fs"); //path的resolve方法不传参数将返回当前工作目录的绝对路径 let root = path.resolve(); http.createServer…
downloadfile:function(req,res,next){ var name= encodeURI(req.query.name); var path= req.query.url; var url = p.urlprestatic.substr(0, p.urlprestatic.indexOf("/supplierplatformstatic/")+"/supplierplatformstatic/".length) if(utils.isEmpt…
打开github,在github上创建新项目: Repository name: anydoor Descripotion: Tiny NodeJS Static Web server 选择:public 选择:Initialize this repository with a README 添加gitignore文件:Add .gitignore:Node 添加License文件:Add a license: MIT License git clone 该项目地址到本地文件夹 .gitigno…
阅读目录 一:浏览器缓存的作用是什么? 二:理解协商缓存 1 Last-Modified/if-Modify-Since 2 ETag/if-None-Match 三:理解强制缓存 回到顶部 一:浏览器缓存的作用是什么? 1. 缓存可以减少冗余的数据传输.节省了网络带宽,从而更快的加载页面.2. 缓存降低了服务器的要求,从而服务器更快的响应. 那么我们使用缓存,缓存的资源文件到什么地方去了呢? 那么首先来看下 memory cache 和 disk cache 缓存 memory cache:…
myanywhere 用原生node做一个简易阉割版的anywhere静态资源服务器,以提升对node与http的理解. 相关知识 es6及es7语法 http的相关网络知识 响应头 缓存相关 压缩相关 path模块 path.join拼接路径 path.relative path.basename path.extname http模块 fs模块 fs.stat函数 使用 fs.stat函数取得stats来获取文件或文件夹的参数 stats.isFile 判断是否为文件夹 fs.createR…
原文: https://github.com/chyingp/nodejs-learning-guide/blob/master/README.md 自己的跟进学习: 概览 做过web性能优化的同学,对性能优化大杀器gzip应该不陌生.浏览器向服务器发起资源请求,比如下载一个js文件,服务器先对资源进行压缩,再返回给浏览器,以此节省流量,加快访问速度. 浏览器通过HTTP请求头部里加上Accept-Encoding,告诉服务器,“你可以用gzip,或者defalte算法压缩资源”. Accept…
引入模板引擎(handlebars) cnpm i handlebars 结构大概是这样子的,新建模板dir.tpl文件和route.js dir.tpl <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, i…
实例3 上面有点回调,优化成近似同步的写法 route.js const fs =require('fs') const promisify = require('util').promisify; const stat = promisify(fs.stat) const readdir = promisify(fs.readdir); module.exports=async function(req,res,filePath){ try{ const stats =await stat(f…
实例2 : 实现获取文件路径,判断是文件还是文件夹,如果是文件夹就显示里面的列表文件,如果是文件就显示里面的内容 defaultConfig.js module.exports={ root:process.cwd(), hostname:'127.0.0.1', port:9527 } app.js const http = require('http'); const chalk = require('chalk') const path = require('path') const fs…
我们的目标是实现一个可访问静态文件的服务器,即可以在浏览器访问文件夹和文件,通过点击来查看文件. 1.先创建一个文件夹anydoor,然后在该文件夹里npm init一个package.json文件,按如下图所示创建文件夹和文件(node_models,package-lock.json是安装生成,不用自己创建).为了方便管理,我们把一些设置性和公共的参数放在defaultConfig.js里,方便后期的更改和管理,在app.js中创建一个服务器. //app.js,(npm install c…
项目初始化 .gitignore cnpm i eslint -D eslint --init得到.eslintrc.js .eslintrc.js module.exports = { 'env': { 'browser': true, 'commonjs': true, 'es6': true }, 'extends': 'eslint:recommended', 'globals': { 'Atomics': 'readonly', 'SharedArrayBuffer': 'readon…