Node 入门
什么是 node
node 是 js 的运行环境
两种运行模式
交互模式
在命令行输入 node 回车 即可进入交互模式
使用.help 可以查看一些帮助信息 使用 tab 可以自动补全命令
连按两次 tab 可以查看所有命令
例如输入 Math. 然后连续按两次 tab 即可查看所有 Math 下的命令
推出使用.exit 或者连续两次 ctrl+c
脚本模式
直接使用在命令行 输入 node 文件名 即可执行对应的 js
全局对象
node 的全局对象是 global 与 js 的 window 不一样
在交互模式下 声明的全局变量都可以用 global 访问到
但是在脚本模式下 访问不到
例如
var a = 1;
b = 2;
console.log(global.a, global.b);
以上代码在交互模式下会输出 1 和 2 但是在脚本模式下都都为 undefined
全局函数
js 中的全局函数 在 node 下全部都可以使用
除此之外 node 还新增了 setImmediate / clearImmediate
通过打印 global 全局对象 我们就可以看到全部的全局函数
{
global: [Circular *1],
clearInterval: [Function: clearInterval],
clearTimeout: [Function: clearTimeout],
setInterval: [Function: setInterval],
setTimeout: [Function: setTimeout] {
[Symbol(nodejs.util.promisify.custom)]: [Getter]
},
queueMicrotask: [Function: queueMicrotask],
performance: [Getter/Setter],
clearImmediate: [Function: clearImmediate],
setImmediate: [Function: setImmediate] {
[Symbol(nodejs.util.promisify.custom)]: [Getter]
}
}
setImmediate 在任务队列的顶部 所有它会优先于 setInterval 等这些任务队列中的函数先执行
作为比较的是 process.nextTick
这个函数位于主程序的队尾 所以它会优先与 setImmediate 先执行

setTimeout(() => {
console.log('setTimeout执行了');
}, 0);
setImmediate(() => {
console.log('setImmediate执行了');
});
process.nextTick(() => {
console.log('nextTick执行了');
});
console.log('同步函数执行了');
以上代码的执行结果为
同步函数执行了
nextTick执行了
setTimeout执行了
setImmediate执行了
内置模块
console
/**
* console.time()
* console.timeEnd()
* 获取程序运行的时间
*/
console.time('for');
for (let i = 0; i <= 10000000; i++) {}
console.timeEnd('for');
console.time('while');
let i = 0;
while (i <= 10000000) {
i++;
}
console.timeEnd('while');
/**
* console.table
* 表格形式输出一个对象
* 可以传入一个对象
* 也可以传入一个数组 此时第二个参数为一个筛选项
*/
const obj1 = {
name: 'chou',
age: 18,
hobby: 'ramires',
};
console.table(obj1);
const obj2 = {
name: 'ramires',
age: 18,
hobby: 'chou',
};
console.table([obj1, obj2]);
console.table([obj1, obj2], ['name']);
fs
const fs = require('fs');
// 清空写入
fs.writeFile('./note.txt', 'hello\n', (err) => {
console.log('写入成功');
});
// 删除
fs.unlink('./note.txt', () => {
console.log('删除成功');
});
// 追加写入
fs.appendFile('./note.txt', 'hello\n', (err) => {
console.log('追加成功');
});
// 读取文件内容
fs.readFile('./note.txt', (err, data) => {
console.log(data.toString());
});
// 新建文件夹
fs.mkdir('./demo', (err) => {
console.log(err);
});
// 删除文件夹
fs.rmdir('./demo', (err) => {
console.log('删除成功');
});
// 读取文件夹
fs.readdir('../', (err, dir) => {
console.log(dir);
});
path
const path = require('path');
console.log(__dirname);
console.log(__filename);
// 获取扩展名
console.log(path.extname(__filename));
// 拼接路径
console.log(path.join(__dirname, '/index.js'));
http
const http = require('http');
const server = http.createServer((req, res) => {
console.log(req);
res.end('hello');
});
server.listen(3000, () => {
console.log('服务器启动成功');
});
process
console.log(process.arch);
console.log(process.platform);
console.log(process.argv);
console.log(process.cwd());
process.nextTick(() => {
console.log('hello');
});
Last updated
Was this helpful?