nodejs入门-新手入门1

> # 前言

  年底,有点时间,抽空学习下nodejs,然后顺便整理成教程方便后来者。

  本人学的主要是nodejs--koa2--mongoose的结合。

其中nodejs--koa2属于操控服务器,mongoose属于操控数据库。

现在刚开始写,后续也会再次对文章进行修正更改。

> # 正题

## 首先为什么想学nodejs <hr>

&emsp;&emsp;因为作为一个前端,如果你只能写前端的东西,那就太low了,比如我现在想自己写一个微信小程序,前端页面能很快搞定,但是后端呢,你就需要求人,求人不如求己,再说nodejs在大公司也都会用到,学习也没什么坏处。但是相对去学习java或者python而言,java和我们掌握的js语言完全是两种语言,python安装起来有比较繁琐,毕竟我用的是vue,所以安装nodejs是很正常的事情,所以学习nodejs也是很正常的事,对吧。

## node入门 <hr>

&emsp;&emsp;一般来说如果使用了vue-cli的话,都会进行对nodejs的全局安装,所以node安装这块我就不说了。

&emsp;&emsp;nodejs简单来说就是运行在服务端的javascript,是前端开发人员比较容易进入全站的一门入行服务器和数据库的语言。

&emsp;&emsp;更正确的说,nodejs是开发人员用javascript编写的一款前端人员开发后端服务的框架。

&emsp;&emsp;nodejs有很多api,就像我们刚开始学习javascript的时候一样,我们也有很多不明白并且感到繁琐,所以就出现了各种对nodejs进行2次封装的框架:express,koa,egg,nestjs等。本章主要讲node,后面会再提及我所用的框架koa。

**&emsp;&emsp;看到这,如果你是新手,建议你粗略浏览下下面的内容,对nodejs的api有个认知概念即可,毕竟nodejs的api还是很多的,下面只是罗列了常用的,然后直接跳过去看koa部分**

## node主要api <hr>

### fs(文件系统)

&emsp;&emsp;所有文件系统的操作都具有同步和异步,具体使用看情况,异步是在方法执行完毕之后将参数放到回调中再进行执行,而同步则在发生异常时立即抛出错误:另外英文:sync是同步的意思

```javascript

const fs = require('fs');

// unlink是删除文件的方法

// 异步

fs.unlink('/tem/input.txt', (err) => {

if (err) throw err;

console.log('input.txt文件已被删除');

})

// 同步

try{

fs.unlink('/tem/input.txt');

console.log('input.txt文件已被删除');

}catch(err) {

throw err;

}

```

&emsp;&emsp;由于使用异步操作,无法保证执行的循序:

```javascript

// 由于rename和stat使用的都是异步,无法保证回调结果那个先获取到

// 所以可能出现先获得文件属性然后改名成功,也可能相反

fs.rename('/tem/input.txt','/tem/rename.txt', err => {

if (err) throw err;

console.log('改名成功');

})

fs.stat('/tem/input.txt', (err, stat) => {

if (err) throw err;

console.log('获得文件或目录属性'+stat)

})

// 正式写法

// 但这样就可能陷入到回调地狱中,所以后续的开发koa框架人员引入了es6的语法中async和await

fs.rename('/tem/input.txt','/tem/rename.txt', err => {

if (err) throw err;

console.log('改名成功');

fs.stat('/tem/input.txt', (err, stat) => {

if (err) throw err;

console.log('获得文件或目录属性'+stat)

});

})

```

- **fs.open(path, type, callback):打开文件**

path:是路径

type:打开方式,有r:以读写模式打开,有ws:以读取模式打开,没有则新建,有a:以追加模式打开,没有则新建,具体:<a href="https://www.jb51.net/article/58625.htm">参考</a>

- **fs.readFile(path, options, callback):读取文件获取数据**

path:是路径

options:是配置参数,可有可无

- **fs.writeFile(file, data, options, callback):写入数据**

file:文件名或文件路径

data:数据,字符串类型的数据

<br>

<br>

<br>

### http (请求)

&emsp;&emsp;在框架中都会被封装,用于连接服务器

<br>

<br>

<br>

### path(路径)

&emsp;&emsp;主要用于路径的生成,转化,规范路径,了解即可

- **path.format(otpions):将配置转为字符串路径**

```javascript

// `root` 会被忽略。

path.format({

  root: '/ignored',

  dir: '/home/user/dir',

  base: 'file.txt'

});

// 返回: '/home/user/dir/file.txt'

```

- **path.resolve([...paths]):解析路径**

```javascript

path.resolve('/foo/bar', './baz');

// 返回: '/foo/bar/baz'

path.resolve('/foo/bar', '/tmp/file/');

// 返回: '/tmp/file'

path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif');

// 如果当前工作目录是 /home/myself/node,

// 则返回 '/home/myself/node/wwwroot/static_files/gif/image.gif'

```

- **path.join():拼接路径**

```javascript

path.join('/foo', 'bar', 'baz/asdf', 'quux', '..');

// 返回: '/foo/bar/baz/asdf'

// 其中__dirname的值是你node启动的文件所在目录

path.join('foo', {}, 'bar');

// 抛出 'TypeError: Path must be a string. Received {}'

```

<br>

<br>

<br>

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 文件系统模块是一个封装了标准的 POSIX 文件 I/O 操作的集合。通过require('fs')使用这个模块。...
    保川阅读 894评论 0 0
  • Node.js 常用工具 util 是一个Node.js 核心模块,提供常用函数的集合,用于弥补核心JavaScr...
    FTOLsXD阅读 600评论 0 2
  • 一、核心模块和对象 核心模块的意义 常用内置模块path:处理文件路径fs:操作文件系统child_process...
    EndEvent阅读 4,487评论 0 1
  • https://nodejs.org/api/documentation.html 工具模块 Assert 测试 ...
    KeKeMars阅读 6,585评论 0 6
  • 个人入门学习用笔记、不过多作为参考依据。如有错误欢迎斧正 目录 简书好像不支持锚点、复制搜索(反正也是写给我自己看...
    kirito_song阅读 2,611评论 1 37

友情链接更多精彩内容