nodejs(一)基础介绍

一. nodejs介绍

因为网上关于这种介绍性质的文章太多了,在此推荐几篇相关的介绍,以及提取一些关键字,你们简单了解一些便可,如想继续深刻的同窗,能够自行在网上搜索相关资源html

:thumbsup:相关文章推荐node

:point_down:浅谈我的理解正则表达式

首先咱们来看一下Nodejs官网的描述npm

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境json

Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效缓存

提取关键字模块化

  • Nodejs是一个==JavaScript运行环境==,即给JavaScript代码提供运行平台,能够运行JavaScript代码的一个环境
  • Nodejs使用了 ==事件驱动,非阻塞式I/O模型==
  • Nodejs优势:轻量又高效
  • 刚接触的同窗不用去纠结事件驱动和非阻塞式I/O模型是什么,后面对nodejs有必定的了解以后,再回来查看这个介绍,必定会有不同的认识

二. nodejs安装

nodejs的安装相对比较简单,这里推荐以下安装教程,对着该教程一步步操做下去便可成功安装nodejs函数

菜鸟教程:nodejs安装工具

安装完成以后,在命令行输入 node -v 便可查看当前nodejs版本,因为我本地安装的nodejs版本是 V8.11.3,因此建议跟着个人笔记学习的小伙伴安装一样的nodejs版本,避免后续出现一些不可预见的小问题学习

nodejs安装完成以后,会附带的帮咱们安装另外一个工具,npm(node package manager)

npm是什么:经过npm的全称咱们能够得知,npm是一个nodejs的包管理工具,咱们可使用npm工具便捷的管理咱们须要使用到的nodejs模块包

这里一样建议,刚接触的同窗不用纠结npm这个东西,跟着笔记一步一步的去使用,就能明白npm是什么,给咱们的开发带来了哪些便捷,想深刻了解的小伙伴,这里推荐两个连接

三. npm命令

如下是npm常见命令,能够先混个眼熟,后续须要使用再来查看

前5个我用黑体标粗的是平时咱们开发过程当中使用得最多的几个命令

  1. **npm -v:**查看npm版本。
  2. **npm init:**初始化后会出现一个package.json配置文件。能够在后面加上-y ,快速跳过问答式界面。
  3. **npm install:**会根据项目中的package.json文件自动下载项目所需的所有依赖。
  4. **npm install 包名 --save-dev(npm install 包名 -D):**安装的包只用于开发环境,不用于生产环境,会出如今package.json文件中的devDependencies属性中。
  5. **npm install 包名 --save(npm install 包名 -S):**安装的包须要发布到生产环境的,会出如今package.json文件中的dependencies属性中。
  6. npm list:查看当前目录下已安装的node包。
  7. npm list -g:查看全局已经安装过的node包。
  8. npm --help:查看npm帮助命令。
  9. npm update 包名:更新指定包。
  10. npm uninstall 包名:卸载指定包。
  11. npm config list:查看配置信息。
  12. npm 指定命令 --help:查看指定命令的帮助。
  13. npm info 指定包名:查看远程npm上指定包的全部版本信息。
  14. npm config set registry https://registry.npm.taobao.org: 修改包下载源,此例修改成了淘宝镜像。
  15. npm root:查看当前包的安装路径。
  16. npm root -g:查看全局的包的安装路径。
  17. npm ls 包名:查看本地安装的指定包及版本信息,没有显示empty。
  18. npm ls 包名 -g:查看全局安装的指定包及版本信息,没有显示empty。

四. 模块化的概念

Node.js采用的是CommonJs规范,在NodeJS中,通常将代码合理拆分到不一样的JS文件中,每个文件就是一个模块,而文件路径就是模块名。

在编写每一个模块时,都有requireexportsmodule三个预先定义好的变量可供使用。

4.1 详细说明

  • **require:**用于在当前模块中加载和使用其余模块,传入一个模块名,返回一个模块导出对象。模块名可以使用相对路径(以./开头),或者是绝对路径(以/C:之类的盘符开头)。另外,模块名中的.js扩展名能够省略。如下是一个例子。

    var person1 = require("./person");
    var person2 = require("./person.js");
    复制代码
  • exports:exports对象是当前模块的导出对象,用于导出模块公有方法和属性。别的模块经过require函数使用当前模块时获得的就是当前模块的exports对象。如下例子中导出了一个公有方法。

    exports.hello = function(){
        console.log("hello world!");
    }
    复制代码
  • module:经过module对象能够访问到当前模块的一些相关信息,但最多的用途是替换当前模块的导出对象。例如模块导出对象默认是一个普通对象,若是想改为一个函数的话,可使用如下方式。

    module.exports = function(){
        console.log("替换当前模块化导出对象")
    }
    复制代码
    • 以上代码中,模块默认导出对象被替换为一个函数。

4.2 模块初始化 和主模块

**模块初始化:**一个模块中的JS代码仅在模块第一次被使用时执行一次,并在执行过程当中初始化模块的导出对象。以后,缓存起来的导出对象被重复利用。

**主模块:**经过命令行参数传递给NodeJS以启动程序的模块被称为主模块。主模块负责调度组成整个程序的其它模块完成工做。例如经过如下命令启动程序时,main.js就是主模块。

node main.js
复制代码

4.3 Demo示例

在同级目录下面,建立counter.jsmain.js,以下所示

//counter.js

var i = 0;

function count() {
    return ++i;
}

exports.count = count;
复制代码
// main.js
var counter1 = require('./counter');
var counter2 = require('./counter');

console.log(counter1.count());
console.log(counter2.count());
console.log(counter2.count());
复制代码

经过node 命令运行主模块,运行测试:

  • 不管counter被初始化多少次,都是同一个counter对象

五. 总结

  • NodeJS是一个JS脚本解析器,任何操做系统下安装NodeJS本质上作的事情都是把NodeJS执行程序复制到一个目录,而后保证这个目录在系统PATH环境变量下,以便终端下可使用node命令。
  • 终端下直接输入node命令可进入命令交互模式,很适合用来测试一些JS代码片断,好比正则表达式。
  • NodeJS使用CMD模块系统,主模块做为程序入口点,全部模块在执行过程当中只初始化一次。
  • 使用npm工具来管理nodejs中的各类包模块
相关文章
相关标签/搜索