Node.js

新闻

nw.js 前端开发桌面应用

内容

node.js实战 照例提供百度云链接,本来以为是实战系列的那本,但不是,不过这本也不错

链接:https://pan.baidu.com/s/1HC2Vhv2EwnYJs0htDTpQTg

提取码:wws9

菜鸟教程至事件循环

随手笔记

img

Node核心技术

告诉Node去做某件事情,并且完成后告诉node传送给谁

第一个应用

var http = require('http');

http.createServer(function (request, response) {

    // 发送 HTTP 头部
// HTTP 状态值: 200 : OK
// 内容类型: text/plain 还有application/json这个
response.writeHead(200, {'Content-Type': 'text/plain'}); // 发送响应数据 "Hello World"
response.end('Hello World\n');
}).listen(8888); // 终端打印如下信息
console.log('Server running at http://127.0.0.1:8888/');

类的定义

function shape() {
this.x=0;
this.y=0;
this.move=function (x,y) {
this.x=x;
this.y=y;
}
this.distance=function () {
return Math.sqrt(this.x*this.x+this.y*this.y);
}
}
var s=new shape();
s.move(10,10);
console.log(s.distance());

使用原型添加类的对象

function shape() {}
shape.prototype.x=0;
shape.prototype.y=0;
shape.prototype.move=function (x,y) {
this.x=x;
this.y=y;
}
shape.prototype.distance=function () {
return Math.sqrt(this.x*this.x+this.y*this.y);
}
var s=new shape();
s.move(10,10);
console.log(s.distance());

console

warn 打印标准错误

time 标准时间戳

timeEnd time之后又过了多长时间

assert 又抛出了异常

//延时
console.log('start');
setTimeout(function () {
console.log('i have done my work');
},2000)//2000就是两秒
//异步读文件
var fs=require('fs');
fs.open(
'gou.txt','r',
function (err,handle) {
if(err){
console.log("Error"+err.code+"("+err.message+")");
return;//注意报了错之后要返回
}
var buf=new Buffer(100000);
fs.read(
handle,buf,0,100000,null,
function(err,length){
if(err){
console.log("Error"+err.code+"("+err.message+")");
return ;
}
console.log(buf.toString('utf-8',0,length));
fs.close(handle,function(){})
}
)
}
)
//输完所有的参数后,要有一个function(err,什么参数),if(err)怎么样,之后再有一个处理
var fs=require('fs');
function FileObject() {
this.filename="";
this.file_exists=function (callback) {
var me=this;//异步回调插入事件队列后,执行完返回不再有FileObject的继承关系了,要有重新的this指针,用一个变量代替this,可以使this保留下来
console.log('try to open',me.filename);
fs.open(this.filename,'r',function (err,handle) {
if(err){
console.log(err.stack);
}
fs.close(handle,function () { });
callback(null,true);
}); }
};
var fo=new FileObject();
fo.filename='ou.txt';
fo.file_exists(function (err,results) {
if(err)
{
console.log('oh! xiba!'+err.stack);
}
console.log('file exits!');
});

err

值为null,表示操作成功,并且会有一个返回值

值为一个Error对象的实例,偶尔会看到不一致的地方

callback(null,a)//没有错误,把a的值送回去

回调函数

大多数回调函数在所有项加载完后就调用这个函数,该回调函数拥有回调都有的原型,一个err参数和result参数

process.nextTick

我放弃主动权,你可以在你空闲的时候执行我给你提供的函数,每隔一段时间就处理一次其他任务

打造服务器

var http=require('http');
function f(req,res) {
de(req.method);
res.writeHead(200,{"Content-Type":"application/app"});
res.end(JSON.stringify({error:null})+'\n');//选中后会下载一个文件
}
var s=http.createServer(f);//把处理函数作为参数传进去
s.listen(8080);
//一个查看本地照片目录的应用
var http=require('http');
var fs=require('fs');
function f(callback) {
fs.readdir(
"img",
function (err,files) {
if(err){
callback(err);//第一个参数喂err,第二个参数不用你管了
return ;
}
callback(null,files);//没有错误,带回文件
}
);
}
function g(req,res) {
de(req.method);
f(function (err,albums) {
if(err){
res.writeHead(503,{'Content-Type':'application/json'});//就相当于错误404
res.end(JSON.stringify(err)+'\n');
}
var out={
error:null,
data:{albums:albums}
};
res.writeHead(200,{"Content-Type":"application/json"});
res.end(JSON.stringify(out)+'\n');//把输出json化,别忘了带一个回车
});
}
var s=http.createServer(g);
s.listen(8080);
//{"error":null,"data":{"albums":["1.jpg","2.jpg","3.jpg","4.jpg","5.jpg"]}}

事件循环

//readFileSync是同步的,后面不能加回调函数,去掉Sync即可回调
//应该先on好处理器,再emit信号
// 引入 events 模块
var events = require('events');
// 创建 eventEmitter 对象
var eventEmitter = new events.EventEmitter(); // 创建事件处理程序
var connectHandler = function connected() {
console.log('连接成功。'); // 触发 data_received 事件
eventEmitter.emit('data_received');
} // 绑定 connection 事件处理程序
eventEmitter.on('connection', connectHandler); // 使用匿名函数绑定 data_received 事件
eventEmitter.on('data_received', function(){
console.log('数据接收成功。');
}); // 触发 connection 事件
eventEmitter.emit('connection'); console.log("程序执行完毕。");

node学习笔记(一)本地文件目录查看器的更多相关文章

  1. 微信小程序开发:学习笔记[9]——本地数据缓存

    微信小程序开发:学习笔记[9]——本地数据缓存 快速开始 说明 本地数据缓存是小程序存储在当前设备上硬盘上的数据,本地数据缓存有非常多的用途,我们可以利用本地数据缓存来存储用户在小程序上产生的操作,在 ...

  2. JVM学习笔记-第三章-垃圾收集器与内存分配策略

    JVM学习笔记-第三章-垃圾收集器与内存分配策略 tips:对于3.4之前的章节可见博客:https://blog.csdn.net/sanhewuyang/article/details/95380 ...

  3. Docker技术入门与实战 第二版-学习笔记-8-网络功能network-3-容器访问控制和自定义网桥

    1)容器访问控制 容器的访问控制,主要通过 Linux 上的 iptables防火墙来进行管理和实现. iptables是 Linux 上默认的防火墙软件,在大部分发行版中都自带. 容器访问外部网络 ...

  4. node学习笔记(二)(ajax方式向node后台提交数据)

    通过ajax向node后台提交数据过程(附手写前后台代码),并总结post与get的区别 POST 前台代码 //CSS简单给点样式 <style> form{ width: 200px; ...

  5. Hadoop-2.4.1学习之edits和fsimage查看器

    在hadoop中edits和fsimage是两个至关关键的文件.当中edits负责保存自最新检查点后命名空间的变化.起着日志的作用,而fsimage则保存了最新的检查点信息.这个两个文件里的内容使用普 ...

  6. node学习笔记第一天

    ES6---* JavaScript语言随着使用的人越来越多,ECMA语法规范:if/else* 为了让js语言更适应大型应用的开发.旨在消除一些怪异的行为 ### 包含内容(strict严格模式)- ...

  7. Go语言学习笔记——在本地建立一个官网查看

    命令行内运行 godoc -http=:8080 运行完成后打开浏览器输入网址:http://localhost:8080能看到一个和官网一模一样的网站,然后查看帮助文档

  8. node学习笔记

    一.准备(github地址) 什么是Javascript? ... Javascript能做什么? ..... 浏览器中的Javascript可以做什么? 操作DOM(增删改查) AJAX/跨域 BO ...

  9. node 学习笔记 - Modules 模块加载系统 (1)

    本文同步自我的个人博客:http://www.52cik.com/2015/12/11/learn-node-modules-path.html 用了这么久的 require,但却没有系统的学习过 n ...

随机推荐

  1. MongoDB的介绍安装与基本使用

    MongoDB的介绍安装 关于MongoDB的介绍于安装可参考:https://www.cnblogs.com/DragonFire/p/9135630.html 除了官网下载,可以下载他人下载好分享 ...

  2. html基础——下拉式菜单

    一个网站能否让用户容易使用该网站往往是由菜单栏体现出来,因为它为网页的大多数页面提供功能入口.一个轻轻的点击以后,即可显示出菜单项,将网站的大部分页面和功能显示出来让用户清楚了解从而用户节约一定的时间 ...

  3. ccflow关于流程引擎的父子流程的基本概念

    关键字:驰骋BPM jflow,ccflow, 驰骋工作流引擎 父子流程概念:在管理活动中,通用的部分,公用的部分,可以被重复执行的部分的流程管理活动我们把他独立出来,成为子流程,可以被其他流程的管理 ...

  4. [python] - 读取文件内容,并输出

    1.读取文件,并逐行输出内容,代码如下: # coding=gbk import os path = 'E:\python_practice' os.chdir(path) fname = raw_i ...

  5. ASP.NET Core结合Nacos来完成配置管理和服务发现

    目录 前言 Nacos的简介 启动Nacos 配置管理 服务发现 写在最后 前言 今年4月份的时候,和平台组的同事一起调研了一下Nacos,也就在那个时候写了.net core版本的非官方版的SDK. ...

  6. 【Offer】[40] 【最小的K个数】

    题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 输入n个整数,找出其中最小的k个数.例如,输入4.5.1.6.2.7.3.8这8个数字,则最小的4个数字是1.2.3.4. 牛客网刷题地 ...

  7. 阿里云机器维护-gitlab Forbidden

    gitlab这台机子运行了一两年了,今天突然拉代码不能拉了,看了下接口403 登录网页 Forbidden 看了下是前两天挖矿病毒引发的,大致因为大量请求导致ip被封了 我们只要把这台机子加入配置白名 ...

  8. 通过脚本实现将服务器的Log实时传送到Telegram群组

    首先说下需求,IT老大提出的一个需求,实现将php-laravel的应用日志实时传送到telegram的监控群组中,不用登陆服务器就可以实时查看应用的日志. 具体思路是: 先要将日志切割,并实时更新这 ...

  9. 代码质量检测(SonarQube)整合中文版+阿里P3C

    代码质量检测(SonarQube)整合中文版+阿里P3C 简介 SonarQube是一种自动代码审查工具,用于检测代码中的错误,漏洞和代码异味.它可以与您现有的工作流程集成,以便在项目分支和拉取请求之 ...

  10. 使用Nginx实现反向代理过程(一台服务器部署两个网站)

    正向代理指的是客户端的 反向代理指的是服务端的 需要实现的反向代理: 1.首先使用SwitchHosts配置不同域名,如下:(SwitchHosts软件在上一篇博客有链接) 2.在Linux上部署两台 ...