美文网首页
00 NodeJs基础

00 NodeJs基础

作者: 亨锅锅 | 来源:发表于2018-10-18 16:36 被阅读0次

NodeJs

//  查看版本
node -v
node --version
//查看安装的版本
nvm list
nvm ls
// 创建一个文件夹
mkdir NodeDemo
// 创建一个app.js 文件
touch app.js

输入内容

console.log("hello node");

运行
node app.js

hello node

全局对象

console.log("hello node");

//全局对象
// 定时器
// setTimeout(function () {
//     console.log('3 seconds have passed');
// },3000);
//
// var time = 0;
// var timer = setInterval(function () {
//     time += 2;
//     console.log(time + 'seconds have passed');
//     if(time === 6){
//         clearInterval(timer);
//     }
// },2000);


// 路径
// 不包含文件名
console.log(__dirname);
// 包含文件名
console.log(__filename);

//global
console.log(global);

引擎

js引擎
电脑不识别也不理解js
js引擎的作用就是让电脑识别js代码

nodejs是使用c++写的
V8 是Node.js的核心
V8的作用就是让js代码能够让电脑识别

流程梳理
js
c++ node v8
电脑

模块 module

stuff.js

var counter = function (arr) {
    return '一共有' + arr.length + '个元素在数组中';
}

// console.log(counter(['a', 'b', 'c']));

var adder = function (a,b) {
    return `你需要计算的两个值得和为:${a+b}`;
}

var PI = 3.142;

// module
// module.exports = counter;

// module.exports.counter = counter;
// module.exports.adder = adder;
// module.exports.PI = PI;

module.exports = {
    counter: counter,
    adder: adder,
    PI: PI
}

app.js

// require
// var counter = require('./stuff')
// console.log(counter(['a', 'b', 'c']));

var stuff = require('./stuff')

console.log(stuff.counter(['a', 'b', 'c']));
console.log(stuff.adder(5, stuff.PI));

事件模块

1 大多数Node核心API都是采用异步事件驱动架构(fs/http)
2 所有能触发事件的对象都是EventEmitter类的实例
3 事件流程:引入模块 》创建EventEmitter对象 》注册事件 》触发事件

// 事件模块

// 1 引入事件模块
//var stuff = require('./stuff')
// 引入node自带的模块不需要路径
var events = require('events');

// 2 创建EventEmitter 对象
var myEmitter = new events.EventEmitter();

// 3 注册事件
myEmitter.on('someEvent',function (msg) {
    console.log(msg);
})

// 触发事件
myEmitter.emit('someEvent','事件粗发并传递参数到注册事件的回调函数中'); 

结果:

事件粗发并传递参数到注册事件的回调函数中

异步的事件

// 事件模块

// 1 引入事件模块
//var stuff = require('./stuff')
// 引入node自带的模块不需要路径
var events = require('events');

// 2 创建EventEmitter 对象
var myEmitter = new events.EventEmitter();

// 3 注册事件
myEmitter.on('someEvent',function (msg) {
    console.log(msg);
})

// 触发事件
myEmitter.emit('someEvent','事件事件并传递参数到注册事件的回调函数中');

console.log(1);

结果:

事件事件并传递参数到注册事件的回调函数中
1

上面的结果说明是同步的
如果要异步,看下面的代码

// 事件模块

// 1 引入事件模块
//var stuff = require('./stuff')
// 引入node自带的模块不需要路径
var events = require('events');

// 2 创建EventEmitter 对象
var myEmitter = new events.EventEmitter();

// 3 注册事件
myEmitter.on('someEvent',function (msg) {
    // es6
    // setImmediate(() => {
    //     console.log('异步进行:'+msg);
    // });

    setImmediate(function () {
        console.log('异步进行:'+msg);
    });

})

// 触发事件
myEmitter.emit('someEvent','事件事件并传递参数到注册事件的回调函数中');

console.log(1);

结果:

1
异步进行:事件事件并传递参数到注册事件的回调函数中

文件系统

文件系统主要对项目中的文件进行操作
1 读取文件 fs.readFile
2 写入文件 fs.writeFile
3 流程:引入fs模块 》调用方法 》异常捕获

//新建一个文本文件readMe.txt,并输入内容
一只蛤蟆
    四条腿
        四个美眉
            八只__

编写代码


// 文件系统

// 1 引入文件系统模块
var fs = require('fs');

// 2 通过对象调用方法
//var readMe = fs.readFileSync('readMe.txt');
// 没有字符参数
/*
<Buffer e4 b8 80 e5 8f aa e8 9b a4 e8 9f 86 0a 20 20 20 20 e5 9b 9b e6 9d a1 e8 85 bf 0a 20 20 20 20 20 20 20 20 e5 9b 9b e4 b8 aa e7 be 8e e7 9c 89 0a 20 20 ... >
*/
// 添加了字符参数
//var readMe = fs.readFileSync('readMe.txt','utf8');
/*
一只蛤蟆
    四条腿
        四个美眉
            八只__
 */
// console.log(readMe);

// 会创建一个writeMe.txt文件,并写入读取出来的readMe的值
// fs.writeFileSync('writeMe.txt',readMe);

// 异步读取文件
fs.readFile('readMe.txt','utf8',function (err,data) {
    if (err) throw err;
    console.log(data);
})

// 异步写入文件
fs.readFile('readMe.txt','utf8',function (err,data) {
    if (err) throw err;
    fs.writeFile('writeMe2.txt',data);
})

console.log(1);

结果:
1 控制台输入下面的内容
2 多了一个writeMe2.txt文件并写入了内容

// 我是控制台输出的内容
1
一只蛤蟆
    四条腿
        四个美眉
            八只__

文件系统操作

文件系统主要对项目中的文件进行操作
1 创建文件夹 fs.mkdir
2 删除文件夹 fs.rmdir
3 删除文件 fs.unlink
4 流程:引入fs模块 》调用方法 》异常捕获

// 命令行的一点小补充
rmdir删除空目录,不过一旦目录非空会提示
Directiry not empty

使用rm既可以删除文件又可以删除文件夹
删除文件夹(无论文件夹是否为空),使用 -rf 命令即可。
即:rm -rf 目录名字
-r 就是向下递归,不管有多少级目录,一并删除
-f 就是直接强行删除,不作任何提示的意思

// 文件系统

// 1 引入文件系统模块
var fs = require('fs');

// 2 通过对象调用方法
//var readMe = fs.readFileSync('readMe.txt');
// 没有字符参数
/*
<Buffer e4 b8 80 e5 8f aa e8 9b a4 e8 9f 86 0a 20 20 20 20 e5 9b 9b e6 9d a1 e8 85 bf 0a 20 20 20 20 20 20 20 20 e5 9b 9b e4 b8 aa e7 be 8e e7 9c 89 0a 20 20 ... >
*/
// 添加了字符参数
//var readMe = fs.readFileSync('readMe.txt','utf8');
/*
一只蛤蟆
    四条腿
        四个美眉
            八只__
 */
// console.log(readMe);

// 会创建一个writeMe.txt文件,并写入读取出来的readMe的值
// fs.writeFileSync('writeMe.txt',readMe);

// 异步读取文件
// fs.readFile('readMe.txt','utf8',function (err,data) {
//     if (err) throw err;
//     console.log(data);
// })

// 异步写入文件
// fs.readFile('readMe.txt','utf8',function (err,data) {
//     if (err) throw err;
//     fs.writeFile('writeMe2.txt',data);
// })
//
// console.log(1);

// fs.unlink('writeMe2.txt',function (err) {
//     if (err) throw err;
//     console.log('文件删除成功');
// })

//创建文件夹 同步
// fs.mkdirSync('stuff');

//删除文件夹 同步
// fs.rmdirSync('stuff');

// 异步创建文件夹和删除文件夹
// fs.mkdir('stuff',function () {
//     fs.readFile('readMe.txt','utf8',function (err,data) {
//         if (err) throw err;
//         fs.writeFile('./stuff/writeMe.txt',data);
//     })
// })

// 异步删除文件夹
// 1 先删除文件夹中的文件 2 再删除外部的文件夹
fs.unlink('./stuff/writeMe.txt',function () {
    fs.rmdir('stuff',function (err) {
        if (err) throw err;
        console.log('文件夹删除成功');
    })
})

相关文章

  • 00 NodeJs基础

    NodeJs 输入内容 运行node app.js 全局对象 引擎 js引擎电脑不识别也不理解jsjs引擎的作用就...

  • 说明

    nodejs基础

  • Node.js 安装

    基础安装 1、到 nodejs官网 https://nodejs.org[https://nodejs.org]...

  • nodejs基础

    NodeJs是什么 Node.js is a JavaScript runtime built on Chrome...

  • nodejs基础

    Buffer: 处理二进制数据 二进制数据的获取 文件数据 网络数据 二进制数据的可读性:base64 Base6...

  • nodeJS 基础

    Node.js 可以理解为能在操作系统上跑的js(不仅仅在浏览器) 还能当web服务器哟~ 用的Chrome V8...

  • nodeJS基础

    Node.js REPL(交互式解释器) Node.js REPL(Read Eval Print Loop:交互...

  • NodeJS基础

    一、基础 关闭服务器----------------查看对应服务器端口PID : lsof -i tcp 8989...

  • Nodejs基础

    Nodejs 定义:node是javascript的解析器,是javascript服务器的运行环境。 创建服务器v...

  • NODEJS基础

    Node的小基友supervisor 每次修改代码后会自动重启。懒程序员就指望这种省事省力的工具活着了:) 安装:...

网友评论

      本文标题:00 NodeJs基础

      本文链接:https://www.haomeiwen.com/subject/vwrjzftx.html