Nodejs 入门(三)

1、模块化加载

  • 第一种加载方式


    ![2.png](http://upload-images.jianshu.io/upload_images/1744903-00a6c5d4197e7126.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

interface.js

var demo_module = require('./demo_module'); 
demo_module.hello();

main.js

var demo_module = require('./demo_module'); 
demo_module.hello();
  • 第二种加载方式
    hello.js
function Hello(){
    var name;
    this.setName = function(thyName){
        name = thyName;
    };
    this.sayHello= function(){
        console.log('Hello' + name);
    };
};
module.exports = Hello;

main.js

var Hello = require('./hello');

hello = new Hello();
hello.setName('BYVoid3');
hello.sayHello();

2、函数传递

function execute(someFuction, value){
    someFuction(value);
}
execute(function(word){console.log(word)}, "yangqingshan");

3、global

// 输出全局变量 __filename 当前脚本的文件路径
console.log( __filename );
// 输出全局变量 __dirname 当前脚本所在的文件夹路径
console.log( __dirname );
setTimeout(cb, ms)
// 全局函数在指定的毫秒数后执行指定函数 返回一个代表定时器的句柄值
function printHello(){
    console.log("Hello , World!");
}
// 两秒后执行以上函数
setTimeout(printHello, 2000);
clearTimeout(t)
function printHello(){
    console.log("Hello , World!");
}
// 两秒后执行以上函数
var t = setTimeout(printHello, 2000);
// 清楚定时器
clearTimeout(t);
function printHello(){
    console.log("Hello, World!");
}
var t = setInterval(printHello, 2000);
setTimeout(function(){clearInterval(t);}, 6000);
// console:标准控制台输出
// log, info, error, warn, dir, time
console.log('Hello world'); 
console.log('byvoid%diovyb'); 
console.log('byvoid%diovyb', 1991); 
console.trace();
console.info("程序开始执行:");
var counter = 10;
console.log("计数: %d", counter);
console.time("获取数据");
// //
// // 执行一些代码
// // 
console.timeEnd('获取数据');
console.info("程序执行完毕。")
// process
// 是一个全局变量, 即global对象的属性
// 它用于描述当前Node.js进程状态的对象,提供了一个与操作系统的简单接口.通常在你写本地命令行程序的时候,
// 少不了要和它打交道.
// exit beforeExit uncaughtException Signal
process.on('exit', function(code){

    // 以下代码永远不会执行
    setTimeout(function(){
        console.log("该代码不会执行");
    }, 0 );

    console.log('退出码为:', code);
});
console.log("程序执行结束");

4.工具类

  • 1.继承
var util = require('util');
function Base(){
    this.name = 'base';
    this.base = 1991;
    this.sayHello = function(){
        console.log("Hello" + this.name);
    };
}
Base.prototype.showName = function(){
    console.log(this.name);
};
// Base.prototype.sayHello = function(){
//  console.log("Hello" + this.name);
// };
function Sub(){
    this.name = 'sub';
}
// 继承
util.inherits(Sub, Base);
var objBase = new Base();
objBase.showName();
objBase.sayHello();
console.log(objBase);
var objSub = new Sub();
objSub.showName();
// objSub.sayHello(); 
console.log(objSub);
  • 2.inspect
// util.inspect(object,[showHidden],[depth],[colors])是一个将任意对象转换 为字符串的方法,通常用于调试和错误输出。它至少接受一个参数 object,即要转换的对象。
// showHidden 是一个可选参数,如果值为 true,将会输出更多隐藏信息。
// depth 表示最大递归的层数,如果对象很复杂,你可以指定层数以控制输出信息的多 少。如果不指定depth,默认会递归2层,指定为 null 表示将不限递归层数完整遍历对象。 如果color 值为 true,输出格式将会以ANSI 颜色编码,通常用于在终端显示更漂亮 的效果。
// 特别要指出的是,util.inspect 并不会简单地直接把对象转换为字符串,即使该对 象定义了toString 方法也不会调用。
var util = require('util'); 
function Person() { 
    this.name = 'byvoid'; 
    this.toString = function() { 
        return this.name; 
    }; 
} 
var obj = new Person(); 
console.log(util.inspect(obj)); 
console.log(util.inspect(obj, true)); 
  • 3.isArray
var util = require('util');
console.log(util.isArray([]));
console.log(util.isArray(new Array));
console.log(util.isArray({}));
  • 4.isDate
var util = require('util');
console.log(util.isDate(new Date()));
console.log(util.isDate(Date()));
console.log(util.isDate({}));
  • 5.isError
var util = require('util');
console.log(util.isError(new Error()));
  // true
console.log(util.isError(new TypeError()));
  // true
console.log(util.isError({ name: 'Error', message: 'an error occurred' }));
  • 6.isRegExp
var util = require('util');
console.log(util.isRegExp(/some regexp/));
console.log(util.isRegExp(new RegExp('another regexp')));
console.log(util.isRegExp({}));

5.get 和post

  • 1.get
var http = require('http');
http.get({host:'www.byvoid.com'}, function(res){
    res.setEncoding('utf8');
    res.on('data',function(data){
        console.log(data);
    });
});
  • 2.post
var http = require('http');
var querystring = require('querystring');
var contents = querystring.stringify({
    name:'byvoid',
    email:'byvoid@byvoid.com',
    address:'zijing 2#, Tsinghua University',
});
var options = {
    host:'www.byvoid.com',
    path:'/application/node/post.php',
    method:'POST',
    headers:{
        'Content-Type':'application/x-www-form-urlencoded',
        'Content-Length':contents.length
    }
};
var req = http.request(options, function(res){
    res.setEncoding('utf8');
    res.on('data', function(data){
        console.log(data);
    });
});
req.write(contents);
req.end();

6.debug

// 进入debug模式
node debug debug.js
//debug.js第五行设置断点
sb('debug.js',5)
//清除断点
cb('debug.js',5)
//继续下一步
c
//进入表达式模式
repl
//退出
command + c



_本站文章为 宝宝巴士 SD.Team 原创, 转载务必在明显处注明:(作者官方网站: 宝宝巴士 ) _
_转载自【宝宝巴士SuperDo团队】原文链接: http://www.jianshu.com/p/2e26fac2aa79

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容

  • Node.js 常用工具 util 是一个Node.js 核心模块,提供常用函数的集合,用于弥补核心JavaScr...
    FTOLsXD阅读 529评论 0 2
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,580评论 18 139
  • 前言 提权何须收集各种EXP,一个MSF就够了,本文为大家带来MSF综合提权的一些姿势。 文章内容: 学习`Met...
    钦玄阅读 9,069评论 1 9
  • Happy是乐享生活的享乐派狗狗,今年七岁,七年来一直还过的不错!
    云联珠播报阅读 227评论 0 0