博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nodejs之入门
阅读量:5053 次
发布时间:2019-06-12

本文共 2638 字,大约阅读时间需要 8 分钟。

一、安装:

去官网下载稳定版本,安装即可。

 安装后执行node -v,显示node版本,然后输入node回车,然后输出console.log(111);,正常输出即可。

二、入门介绍:

1、nodejs是一门后端语言,是基于chrome的V8引擎,JavaScript运行在服务器平台上的一门语言。简单来说就是能够运行于服务器的JavaScript。

2、nodejs系统是基于CommonJS规范,CommonJS规范是同步加载模块,而AMD规范是异步加载模块。

3、nodejs支持部分es6语法,在文件顶部添加"use strict"即可。

4、直接在命令行下执行node 文件名字即可,执行该js文件

5、模块的导出和引入:

(1)、模块分类:

  • 原生(核心)模块:该模块在Node.js源代码编译的时候编译进了二进制执行文件,加载的速度最快,例如http、fs等
  • 文件模块:文件模块是动态加载的,加载速度比原生模块慢。

(2)、模块的导出:module.exports 或者 exports

"use srict";function add(a, b) {    return a + b;}// 此方法导出,引入后的直接就是add函数,可以直接使用module.exports = add;// 此两种方法导出,引入后的是一个对象,对象有一个方法属性add,通过xxx.add的方法使用exports.add = add;module.exports = add;

module.exports 和 exports的区分:每个模块js文件被nodejs封装后,都会存在两个变量module和exports。

module是一个对象,有一个对象属性exports,即module.exports,其初始值为一个空对象。

然后exports指向module.exports的引用,即exports = module.exports。

最后require每次引入的都是module.exports,而不是exports,所以我们对module.exports直接赋值或者添加属性都可以正常导出,我们为exports添加属性也是可以的,因为exports指向module.exports,

但是我们为exports直接赋值是不可以正常导出的,因为此行为导致exports不在指向module.exports,module.exports根本不受任何影响,最后导出的modulee.exports是一个空对象。

(3)、模块的引入:require(参数)

参数共四种:

  • http、fs、path等原生模块(直接通过名称引入)     const fs = require('fs'); 
  • ./mod 或 ../mod,相对路径的文件模块(通过相对路径引入)     const add = require('./math/add.js'); (其中.js后缀可以省略,默认即是js文件)
  • /pathtomodule/mod,绝对路径的文件模块(通过绝对路径引入)     const add = require('E:/nodejs/math/add.js'); 
  • react,文件模块(在node_module中寻找)(通过名称引入)   const postcss = require('postcss'); 

引入流程:

Node.js系统针对原生模块的文件模块存在缓存机制,当我们第一次引入模块后,便对该模块进行缓存,我们再次引入该模块时,直接从缓存获取使用。

所以引入一个模块mode的流程就是,先区分mod是原生模块还是文件模块,然后到对应模块缓存中查看有没有该mod,如果有直接获取使用,如果没有则正常引入,然后缓存该mod。

6、nodejs的包管理工具npm

npm一些命令:

npm init:初始化包,帮用户在当前目录生成一个package.json文件

npm install:嵌入包模块(可以先嵌入cnpm,然后使用cnpm install,淘宝镜像,比npm快一些)

  • npm install 模块名:安装本地模块
  • npm install 模块名 -g: 安装全局模块
  • npm install 模块名 --save: 把安装的模块更新到package.json中
  • npm install 模块名 -dev:模块安装到package.json的devDependencies中

npm uninstall 模块名:卸载模块

package.json

{    // 包的名字    "name": "mypack",    // 包的版本号    "version": "1.0.0",    // 木块被引用的入口文件,默认为index.js    "main": "index.js"    // 项目运行所依赖的模块    // "dependencies": {},    // 指定项目开发所需要的模块    // "devDependencies": {},   }

/*

版本号:
指定版本:1.2.1,遵循"大版本.中版本.小版本"
波浪号(tilde)+指定版本:~1.2.2,表示安装1.2.x的最新版本(不低于1.2.2),但是不安装1.3.x,安装时不改变大版本号和次要版本号
插入号(caret)+指定版本:^1.2.2,表示安装1.x.x的最新版本(不低于1.2.2),但是不安装2.x.x,安装时不改变大版本号(如果大版本号是0,则和波浪号行为相同,因为此时处于开发阶段,即使次要版本号该改变,也可能带来程序的不兼容)
lateest:安装最新版本
*/

三、例子demo

exam01:

 

// add.js"use srict";module.exports = function (a, b) {    return a + b;}

 

// index.js"use srict";const add = require('./add');console.log(add(11, 22)); // 33

 

在index.js目录下执行node index,打印结果33即可

----------------------------------end

 

转载于:https://www.cnblogs.com/Walker-lyl/p/7249080.html

你可能感兴趣的文章
phpcms 添加自定义表单 留言
查看>>
mysql 优化
查看>>
WCF 配置文件
查看>>
oracle导出/导入 expdp/impdp
查看>>
JAVA 技术类分享(二)
查看>>
Objective - C基础: 第四天 - 10.SEL类型的基本认识
查看>>
数据结构之查找算法总结笔记
查看>>
Android TextView加上阴影效果
查看>>
Android 音量调节
查看>>
windows上面链接使用linux上面的docker daemon
查看>>
每天一个小程序—0005题(批量处理图片大小)
查看>>
js-创建对象的几种方式
查看>>
JDK JRE Java虚拟机的关系
查看>>
[算法之美] KMP算法的直观理解
查看>>
EntityFramework 性能优化
查看>>
【ASP.NET开发】菜鸟时期的ADO.NET使用笔记
查看>>
android圆角View实现及不同版本号这间的兼容
查看>>
OA项目设计的能力③
查看>>
Cocos2d-x3.0 文件处理
查看>>
全面整理的C++面试题
查看>>