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>

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

推荐阅读更多精彩内容

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