Node从零开始第一步:node的起步与模块开发

Node.js是什么?

首先呢,node.js并不是编程语言,也不是框架与库,它是一个javascript运行时环境,能解析与执行javascript代码,是构建于Chrome V8 Javascript引擎之上的,从技术角度,它的能力与Java,PHP,Python等服务端技术类似

Node的特点
  • 事件驱动
  • 非阻塞IO(异步)模型
  • 单线程
  • 跨平台
我为什么要学习node

从事前端开发有个几年了,一直想要自己开发维护一个网站,写接口成了大难题,采用node写接口的话,更适合于前端开发人员,node也能让自己对于Javascript的理解更深一层

起步

安装node环境的话,去NodeJS官网下载稳定版的就可以,整个安装的过程是一路点下去就行,安装完了确认下安装上了就可以开始我们的node之旅了
直接文件读取写入走起,感受下node的魅力

const fs = require('fs');
//读取文件
fs.readFile('./index.js', (err, data) => {
    if (err) throw err
    console.log(data)
})
const fs = require('fs');
//写入文件
fs.writeFile('./message.text','Hello World',err=>{
    if(err) throw err
    console.log('ok')
})

新建个js文件,然后命令行node启动这个文件即可

这里我们require的fs是什么呢,可能刚接触node的小伙伴并不知道,这里解释下,fs,是node的内置模块,也就是核心模块,node是模块化开发的,因为本身javascript是一直没有模块体系的(module),无法将一个大程序拆分成互相依赖的肖文杰,然后再用简洁的方法拼接起来,其他语言有这项功能,比如python的import,Ruby的require,css都有@import,但是node是多模块开发的

模块通信规则

require模块导入

// 核心模块
const fs = require('fs')

// 第三方模块
// npm install marked
const marked = require('marked')

// 用户模块(自己写的),正确的,正确的方式
// 注意:加载自己写的模块,相对路径不能省略 ./
const foo = require('./foo.js')

// 用户模块(自己写的),正确的(推荐),可以省略后缀名 .js
const foo = require('./foo')

exports模块导出

// 导出多个成员:写法一(麻烦,不推荐)
module.exports.a = 123
module.exports.b = 456
module.exports.c = 789


//Node 为了降低开发人员的痛苦,所以为 module.exports 提供了一个别名 exports (下面协大等价于上面的写法)。
//导出多个成员:写法二(推荐)
console.log(exports === module.exports) // => true
exports.a = 123
exports.b = 456
exports.c = 789
exports.fn = function () { 
}

上面是导出多个成员的例子,是可以省略module的,但是只导出一个成员的话,是不可以省略module的

// 导出单个成员:不可以省略module
module.exports = function (x, y) {
  return x + y
}

为什么不能省略module?因为每个模块内部有个module对象,module对象上有个成员exports也是一个对象,模块中同时还有一个成员exports等价于module.exports

模块分类
核心模块
  • 核心模块就是node内置的模块,需要通过唯一的标识名称来进行获取的
  • 每一个核心模块基本上都是暴露了一个对象,里面有一些方法供我们使用,具体的api可以去官网查找使用
  • 在导入核心模块的本质也是文件模块,已经被编译到了node的可执行程序中,基于CommonJS模块规范
  • 常用的核心模块名称与作用
模块名称 作用
fs 文件操作
http 网络操作
path 路径操作
url url地址操作
os 操作系统信息
net 一种更底层的网络操作方式
querystring 解析查询字符串
util 工具函数模块
文件模块

一般指用户自己编写的模块

第三方模块

一般通过npm安装的模块就是第三方模块

加载规则如下:

  • 如果不是文件模块,也不是核心模块
  • node 会去 node_modules 目录中找(找跟你引用的名称一样的目录),例如这里 require('underscore')
  • 如果在 node_modules 目录中找到 underscore 目录,则找该目录下的 package.json 文件
  • 如果找到 package.json 文件,则找该文件中的 main 属性,拿到 main 指定的入口模块
  • 如果过程都找不到,node 则取上一级目录下找 node_modules 目录,规则同上。。。
  • 如果一直找到代码文件的根路径还找不到,则报错。。。

注意:对于第三方模块,我们都是 npm install 命令进行下载的,就放到项目根目录下的 node_modules 目录。

基于node.js的服务端开发任重而道远,一步一个脚印,觉得有用的可以点个赞,感谢

你可能感兴趣的:(Node从零开始第一步:node的起步与模块开发)