天天看点

node.js快速入门(一)

一、Node.js简介

Node.js 是一个基于 Chrome V8 引擎的

JavaScrip

运行环境。 Node.js 使用了一个

事件驱动

非阻塞式 I/O

的模型。

JavaScrip

是一种具有函数优先的轻量级,解释型或即时编译型的高级编程语言。JavaScript 基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式和声明式(如函数式编程)风格。

Node

是一个类似于perl,python,ruby等的一个本地运行环境,理论上可以在它的基础上开发任何应用,使用expressjs库,可在node环境下开发高性能web服务器。

事件驱动

是指在持续事务管理过程中,进行决策的一种策略,即跟随当前时间点上出现的事件,调动可用资源,执行相关任务,使不断出现的问题得以解决,防止事务堆积。

非阻塞式 I/O

,也叫异步 I/O,显然对应的就是阻塞式 I/O。阻塞式 I/O 是指,当一个线程在执行 I/O 操作时,这个线程会阻塞,等待 I/O 操作完成后继续执行。故使用单线程非阻塞式I/O的node的性能优异。但存在线程崩溃的隐患。

二、安装配置

安装node.js和npm

sudo apt-get install nodejs
sudo apt-get install npm 
           
npm 是 Node.js 的包管理工具,用来安装各种 Node.js 的扩展
           

验证安装

$ node -v
v10.19.0  

$ npm -v 
6.14.4       
           

测试js运行环境

$ vi hlwd.js
console.log("hello world")

$ node hlwd.js
hello world #成功
           

三、创建服务器

Node.js 应用是由以下部分组成:

1.引入 required 模块:我们可以使用 require 指令来载入 Node.js 模块。

2.创建服务器:服务器可以监听客户端的请求,类似于 Apache 、Nginx 等 HTTP 服务器。

3.接收请求与响应请求 服务器很容易创建,客户端可以使用浏览器或终端发送 HTTP 请求,服务器接收请求后返回响应数据。

分析Node.js 的 HTTP 服务器

·第一行请求(

require

)Node.js 自带的 http 模块,并且把它赋值给 http 变量。

·

·接下来调用 http模块提供的函数:

createServer

。这个函数会返回 一个对象,这个对象有一个叫做

listen

的方法,这个方法有一个数值参数,指定这个 HTTP 服务器监听的

端口号

引入requred模块

使用 require 指令来载入 http 模块,并将实例化的 HTTP 赋值给变量 http。

vi server.js
           

创建服务器

使用 http.createServer() 方法创建服务器,并使用 listen 方法绑定 8888 端口。 函数通过 request, response 参数来接收和响应数据。

var http = require('http');

http.createServer(function (request, response) {

    // 发送 HTTP 头部 
    // HTTP 状态值: 200 : OK
    // 内容类型: text/plain
    response.writeHead(200, {'Content-Type': 'text/plain'});

    // 发送响应数据 "Hello World"
    response.end('Hello World\n');
}).listen(8888);

// 终端打印如下信息
console.log('Server running at http://127.0.0.1:8888/');
           

测试服务器

以上代码我们完成了一个可以工作的 HTTP 服务器。

使用 node 命令执行以上的代码:

$ node server.js 
Server running at http://127.0.0.1:8888/                                                                                        
           

打开浏览器访问 http://127.0.0.1:8888/,可以看到一个写着 "Hello World"的网页

node.js快速入门(一)

四、NPM介绍

NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种:

允许用户从NPM服务器下载别人编写的第三方包到本地使用。

允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。

允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。

常用 NPM 命令

安装

常用的 Node.js web框架模块 express:

本地安装:将安装包放在 ./node_modules 下(运行 npm 命令时所在的目录);可以通过 require() 来引入本地安装的包。

$ npm install express	
           

全局安装:将安装包放在 /usr/local 下或者你 node 的安装目录;可以直接在命令行里使用。

$ npm install express -g 
           

更新

模块

$ npm update express
           

搜索

模块

$ npm search express
           

卸载

express模块

$ npm uninstall express
           

查看

是否卸载成功

清空NPM本地缓存

$ npm cache clear可以
           

查看某条命令的详细

帮助

使用package.json

package.json 位于模块的目录下,用于定义包的属性。Package.json 属性说明:

name

- 包名。

version

- 包的版本号。

description

- 包的描述。

homepage

- 包的官网 url 。

author

- 包的作者姓名。

contributors

- 包的其他贡献者姓名。

dependencies

- 依赖包列表。如果依赖包没有安装,npm 会自动将依赖包安装在 node_module 目录下。

repository

- 包代码存放的地方的类型,可以是 git 或 svn,git 可在 Github 上。

main

- main 字段指定了程序的主入口文件,require(‘moduleName’)

就会加载这个文件。这个字段的默认值是模块根目录下面的 index.js。

keywords

- 关键字

其他命令

#创建模块
$ npm init
#在npm资源库中注册用户
$ npm adduser
#发布模块
$ npm publish
           

使用淘宝 NPM 镜像

淘宝 NPM 镜像是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步。

$ npm install -g cnpm --registry=https://registry.npm.taobao.org
           

之后便可以使用淘宝定制的 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm,如:

五、Node.js REPL交互式解释器

Node 自带了REPL(Read Eval Print Loop:交互式解释器),可以执行以下任务:

读取

- 读取用户输入,解析输入的 Javascript 数据结构并存储在内存中。

执行

- 执行输入的数据结构

打印

- 输出结果

循环

- 循环操作以上步骤直到用户两次按下 ctrl-c 按钮退出。

node.js的REPL类似于python终端,所以只做一些简单补充:

变量声明需要使用

var

关键字

使用下划线

_

获取上一个表达式的运算结果
$ node

> var a = 1 +4
undefined
> var sum = _
undefined
> sum
5
           

REPL 命令

ctrl + c

按下两次 - 退出 Node REPL。

ctrl + d

- 退出 Node REPL.

向上/向下 键

- 查看输入的历史命令

tab 键

- 列出当前命令

.help

- 列出使用命令

.break

- 退出多行表达式

.clear

- 退出多行表达式

.save filename

- 保存当前的 Node REPL 会话到指定文件

.load filename

- 载入当前 Node REPL 会话的文件内容。

以上,我们已经能够初步的使用node.js了,接下来会介绍node.js的一些特性。

继续阅读