nodejs
huyao_road
20多岁,有30年Web开发经验。
展开
-
nodejs中时间执行的顺序
setImmediate(function () { console.log('immediate');})setTimeout(function () { console.log('setTimeout 0ms');}, 0)setTimeout(function () { console.log('setTimeout 10ms');}, 1000)...原创 2018-08-19 15:34:44 · 1241 阅读 · 1 评论 -
Node.js没有Web容器的概念
在Apatch这种Web服务器中,只要打开服务器,那么你就可以在浏览器的地址栏通过相对路劲的方式获取到里面的所有资源。比如服务器的www目录下有一张图片,那么只要在浏览器中输入 domain/some.jpg的方式就可以在客户端直接获取到图片。但在Node中这不行现在我创建一个文件夹,文件夹中包含 index.js 、hello.html、lvgu.jpg 这三个文件。其中,在index.j...原创 2018-10-21 16:31:15 · 1374 阅读 · 0 评论 -
文件流管道(pipe)
在Node.js中读取文件时为使用非阻塞IO, 我们可以这样写: fs.createReadStream('./lvgu.jpg').on('data', (data) => { res.write(data); }).on('end', () => { res.end(); })还可以用pipe来简化代码:fs.crea...原创 2018-10-21 16:29:55 · 3069 阅读 · 0 评论 -
fs常用API
查询文件信息fs.stat(path, callback)fs.stat() 方法用于查询文件信息,可以用于查询文件的大小、创建时间、权限等相关信息。fs.stat() 是异步方法,还有一个同步方法 fs.statSync(path)const fs = require('fs')fs.stat('./package.json', (err, stats) => { ...原创 2018-10-19 11:55:03 · 690 阅读 · 0 评论 -
node实现缓存
为了减少数据传输,减少请求数,继续添加缓存支持。首先梳理一下缓存的处理流程:如果是第一次访问,请求报文首部不会包含相关字段,服务端在发送文件前做如下处理: 设置Expires头 设置Cache-Control头(设置其max-age值) 如服务器支持Last-Modified,设置Last-Modified头 如服务器支持ETag,设置ETag头 浏览器收到响应后会存下这些标记...转载 2018-08-30 15:16:18 · 5962 阅读 · 0 评论 -
nodejs实现范围请求
使服务器支持范围请求,允许客户端只请求文档的一部分。其流程是:客户端向服务端发起请求 服务端响应,附上Accept-Ranges头(值表示表示范围的单位,通常是“bytes”),告诉客户端其接受范围请求 客户端发送新的请求,附上Ranges头,告诉服务端请求的是一个范围 服务端收到范围请求,分情况响应: 范围有效,服务端返回206 Partial Content,发送指定范围内内容,并...原创 2018-08-29 16:11:49 · 567 阅读 · 0 评论 -
npm的一些操作
npm install安装本地包npm install <package_name>:这个命令将在当前目录中创建node_modules目录(如果尚不存在),并将该软件包下载到该目录。该命令默认本地安装。安装了哪个版本的软件包?如果本地目录中没有package.json文件,则会安装最新版本的软件包。如果有package.json文件,则安装满足该package(如...转载 2018-08-31 19:50:53 · 191 阅读 · 0 评论 -
nodejs压缩文件
工具方法: compress.jsconst {createGzip, createDeflate} = require('zlib');module.exports = (rs, req, res) =>{ const acceptEncoding = req.headers['accept-encoding']; //浏览器支持的压缩方式 if(!...原创 2018-08-27 20:45:34 · 534 阅读 · 0 评论 -
让浏览器以utf-8编码格式解析text/plain的文件
只需再响应头中设置编码格式即可res.setHeader('Content-Type', 'text/plain; charset=utf-8');以下这种方式是不可以的:res.setHeader('Content-Type', 'text/plain');res.setHeader('charset','utf-8'); ...原创 2018-08-27 19:28:08 · 6900 阅读 · 0 评论 -
setTimeout/setImmediate/process.nextTick的区别
node.js中的非IO的异步API提供了四种方法,分别为setTimeOut(),setInterval(),setImmediate()以及process.nextTick(),四种方法实现原理相似,但达到的效果略有区别:一、事件循环Event Loop首先,我们需要了解node.js的基于事件循环的事件模型,正是因为它才使得node.js中回调函数十分普遍,也正是基于此,node.j...转载 2018-08-19 15:38:59 · 200 阅读 · 0 评论 -
使用router.post()无法获取到req.body
应该用一个router, 然后连续点:router.get() .post() .get() .post() 而不是像下面这样每处理一个URL就去:router.get()router.post()// 应该是这样:router.get('/simple/get', function(req, res) { res.json({ msg: `hello wo...原创 2019-10-07 16:11:58 · 3783 阅读 · 0 评论