zoukankan      html  css  js  c++  java
  • Nodejs----简介

    1.概述:

          Node.js是基于Chrome JavaScript运行时建立的一个平台,实际上它是对Google Chrome V8引擎进行了封装,它主要用于创建快速的、可扩展的网络应用。Node.js采用事件驱动和非阻塞I/O模型,使其变得轻微和高效,非常适合构建运行在分布式设备的数据密集型实时应用。

          运行于浏览器的Javascript,浏览器就是Javascript代码的解析器,而Node.js则是服务器端JS的代码解析器,存于服务器端的JS代码由Node.js来解析和应用。

          JS解析器只是JS代码运行的一种环境,浏览器是JS运行的一种环境,浏览器为JS提供了操作DOM对象和window对象等接口。Node.js也是JS的一种运行环境,node.js为JS提供操作文件、创建http服务、创建TCP、UDP服务等接口,所以Node.js可以完成其他后台语言能完成的工作。

    2.交互式运行环境:PEPL

          Node.js提供了一个交互式运行环境,通过这个环境,可以立即执行JS代码,使用方法类似于Chrome浏览器中Firebug插件中的Console。

          在Linux环境进入终端后,属于"node"或者“nodejs”进入Node.js的交互式运行环境,Ctrl+d可以退出此环境。

          查看系统中安装的Node.js版本:node -v or nodejs -v

          运行JS文件,eg:node file.js or nodejs file.js

    3.Node.js模块和包

          a.模块

             Node.js官方提供了很多模块,这些模块分别实现了一种功能,如操作文件模块fs,构建http服务模块的http等,每个模块都是一个JS文件,当然也可以自己编   写模块。

          2.包

              包可以将多个具有依赖关系的模块组织在一起,封装多个模块,以方便管理。Node.js采用了CommonJS规范,根据CommonJS规范规定,一个JS文件就是 一个模块,而包是一个文件夹,包内必须包含一个JSON文件,命名package.json。一般情况下,包内bin文件夹存放二进制文件,包内的lib文件夹存放JS文件,包内的doc文件夹存放文档,包内的test文件夹存放单元测试。package.json文件中需要包含的字段及包的使用。

          3.npm包管理工具

             npm是node.js的包管理工具,npm定义了包依赖关系标准,我们使用npm主要用来下载第三方包和管理本地下载的第三方包。

    4:总结

    一:什么是nodejs:
    	什么是 NodeJS
    	JS是脚本语言,脚本语言都需要一个解析器才能运行。对于写在 HTML 页面里的 JS,浏览器充当了解析器的角色。而对于需要独立运行的 JS,NodeJS 就是一个解析器。
    	每一种解析器都是一个运行环境,不但允许JS定义各种数据结构,进行各种计算,还允许 JS 使用运行环境提供的内置对象和方法做一些事情。例如运行在浏览器中的JS的用途是操作 DOM,浏览器就提供了 document 之类的内置对象。而运行在 NodeJS 中的 JS 的用途是操作磁盘文件或搭建 HTTP 服务器,NodeJS 就相应提供了 fs、http 等内置对象。---------------------------------------------------------------------------------------------nodejs是一个解释器,是运行在服务端的js.
    
    二:Nodejs用途:--------------------------------------------------------------------------------------------实现高性能web服务器,看重的是事件机制和异步IO.
    	用途
    		尽管存在一听说可以直接运行 JS 文件就觉得很酷的同学,但大多数同学在接触新东西时首先关心的是有啥用处,以及能带来啥价值。
    		NodeJS 的作者说,他创造 NodeJS 的目的是为了实现高性能 Web 服务器,他首先看重的是事件机制和异步 IO 模型的优越性,而不是 JS。但是他需要选择一种编程语言实现他的想法,这种编程语言不能自带 IO 功能,并且需要能良好支持事件机制。JS 没有自带 IO 功能,天生就用于处理浏览器中的 DOM 事件,并且拥有一大群程序员,因此就成为了天然的选择。
    		如他所愿,NodeJS 在服务端活跃起来,出现了大批基于 NodeJS 的 Web 服务。而另一方面,NodeJS 让前端众如获神器,终于可以让自己的能力覆盖范围跳出浏览器窗口,更大批的前端工具如雨后春笋。
    		因此,对于前端而言,虽然不是人人都要拿 NodeJS 写一个服务器程序,但简单可至使用命令交互模式调试 JS 代码片段,复杂可至编写工具提升工作效率。
    
    三:安装nodejs:---------------------------------------------------------------------------------------------官网下载,安装
    	1:windous安装:
    		32 位安装包下载地址 : https://nodejs.org/dist/v4.4.3/node-v4.4.3-x86.msi
    		64 位安装包下载地址 : https://nodejs.org/dist/v4.4.3/node-v4.4.3-x64.msi
    		安装步
    			1:点点点。
    			2:检测PATH环境变量是否配置了Node.js,点击开始=》运行=》输入"cmd" => 输入命令"path",输出如下结果:
    			(也可以自己手动配置环境变量)
    			3:查看版本node --version
    
    	2:Windows 二进制文件 (.exe)安装:
    		32 位安装包下载地址 : http://nodejs.org/dist/v0.10.26/node.exe
    		64 位安装包下载地址 : http://nodejs.org/dist/v0.10.26/x64/node.exe
    		安装步骤
    			1: 双击下载的安装包 Node.exe
    			2:点击 Run(运行)按钮将出现命令行窗口:
    			3:版本测试
    				cd downlocad
    				node --version
    
    	3:Ubuntu 上安装 Node.js
    		Node.js 源码安装:
    			1:在 Github 上获取 Node.js 源码:
    				$ sudo git clone https://github.com/nodejs/node.git
    				Cloning into 'node'...
    			2:修改目录权限:
    				$ sudo chmod -R 755 node
    			3:使用 ./configure 创建编译文件,并按照:
    				$ cd node
    				$ sudo ./configure
    				$ sudo make
    				$ sudo make install
    			4:查看 node 版本:
    				$ node --version
    				v0.10.25
    		Ubuntu apt-get命令安装
    			命令格式如下:
    				sudo apt-get install nodejs
    				sudo apt-get install npm
    
    	4:CentOS 下安装 Node.js
    		1:下载源码,你需要在https://nodejs.org/en/download/下载最新的Nodejs版本,本文以v0.10.24为例:
    			cd /usr/local/src/
    			wget http://nodejs.org/dist/v0.10.24/node-v0.10.24.tar.gz
    		2:解压源码
    			tar zxvf node-v0.10.24.tar.gz
    		3: 编译安装
    			cd node-v0.10.24
    			./configure --prefix=/usr/local/node/0.10.24
    			make
    			make install
    		4:配置NODE_HOME,进入profile编辑环境变量
    			vim /etc/profile
    			设置nodejs环境变量,在 export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL 一行的上面添加如下内容:
    			#set for nodejs
    			export NODE_HOME=/usr/local/node/0.10.24
    			export PATH=$NODE_HOME/bin:$PATH
    		5::wq保存并退出,编译/etc/profile 使配置生效
    			source /etc/profile
    		6:验证是否安装配置成功
    			node -v
    		7:输出 v0.10.24 表示配置成功
    			npm模块安装路径
    				/usr/local/node/0.10.24/lib/node_modules/
    				注:Nodejs 官网提供了编译好的Linux二进制包,你也可以下载下来直接应用。
    
    四:在 Cloud Studio 中运行 node.js 程序:
    	Node.js 是一个基于 Chrome JavaScript 运行时建立的一个平台。基于 Google 的 V8 引擎,使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。前端程序员在不懂 PHPRubyPython 这样的动态编程语言时完全可以基于 Node.js 使用自己熟悉的JS语言来搭建一个高效的 Web 服务。通过 Cloud Studio 平台,我们可以快速开始自己的 Node.js 项目,并且可以实时访问他。
    	Cloud Studio 已经为我提供了内置的 Node.js 开发环境,我们不仅可以通过切换运行环境来编写 Node.js 代码,也可以通过 访问链接 功能来实时查看代码的运行效果,下面我通过一个例子来展示:
    		step1:访问Cloud Studio(https://studio.coding.net),注册/登录账户。
    		step2:在右侧的运行环境菜单选择:"Node.js" 运行环境
    		step3:在左侧代码目录中新建Node.js代码目录编写你的 Node.js 代码
    		step4:进入 Node.js 代码目录运行 node hello.js 我们在代码中引入了 http 模块,并且通过http.createServer()方法创建了一个 http 服务器,通过listen() 方法绑定了 8888 端口
    		step5:点击最右侧的【访问链接】选项卡,在访问链接面板中填写端口号为:8888,点击创建链接,即可点击生成的链接访问我们的 Node.js 项目
    	/*代码示例*/:
    		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, Universe! I'm running on Cloud Studio!
    ");
    		}).listen(8888);
    
    	// 终端打印如下信息
    		console.log('Server running at http://127.0.0.1:8888/');
    		Tips: 从终端中输入命令可以看出 Cloud Studio 为我们集成了 Ubuntu16.04.1 + node8.10.0 的开发环境:
    
    五:Node.js 创建第一个应用:
    	如果我们使用PHP来编写后端的代码时,需要Apache 或者 Nginx 的HTTP 服务器,并配上 mod_php5 模块和php-cgi。
    	从这个角度看,整个"接收 HTTP 请求并提供 Web 页面"的需求根本不需 要 PHP 来处理。
    	不过对 Node.js 来说,概念完全不一样了。使用 Node.js 时,我们不仅仅 在实现一个应用,同时还实现了整个 HTTP 服务器。事实上,我们的 Web 应用以及对应的 Web 服务器基本上是一样的。
    
    	在我们创建 Node.js 第一个 "Hello, World!" 应用前,让我们先了解下 Node.js 应用是由哪几部分组成的:
    		1:引入 required 模块:我们可以使用 require 指令来载入 Node.js 模块。
    		2:创建服务器:服务器可以监听客户端的请求,类似于 Apache 、Nginx 等 HTTP 服务器。
    		3:接收请求与响应请求 服务器很容易创建,客户端可以使用浏览器或终端发送 HTTP 请求,服务器接收请求后返回响应数据。:
    	创建 Node.js 应用
    		步骤一、引入 required 模块
    			我们使用 require 指令来载入 http 模块,并将实例化的 HTTP 赋值给变量 http,
    			实例如下:
    				var http = require("http");
    		步骤二、创建服务器
    			接下来我们使用 http.createServer() 方法创建服务器,并使用 listen 方法绑定 8888 端口。 函数通过 request, response 参数来接收和响应数据。
    
    			实例如下,在你项目的根目录下创建一个叫 server.js 的文件,并写入以下代码:
    				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
    ');
    				}).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/
    			cmdrun
    
    		接下来,打开浏览器访问 http://127.0.0.1:8888/,你会看到一个写着 "Hello World"的网页。
    
    	分析Node.js 的 HTTP 服务器:
    		第一行请求(require)Node.js 自带的 http 模块,并且把它赋值给 http 变量。
    		接下来我们调用 http 模块提供的函数: createServer 。这个函数会返回 一个对象,这个对象有一个叫做 listen 的方法,这个方法有一个数值参数, 指定这个 HTTP 服务器监听的端口号。
    
    六:NPM 使用介绍--------------------------------------------------------------------------------------------包管理工具
    	NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种:
    	允许用户从NPM服务器下载别人编写的第三方包到本地使用。
    	允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
    	允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。
    
    	1:由于新版的nodejs已经集成了npm,所以之前npm也一并安装好了。测试是否成功安装----------------------------npm -v
    		$ npm -v
    		2.3.0
    	2: 如果你安装的是旧版本的 npm,可以很容易得通过 npm 命令来升级-----------------------------------------$ sudo npm install npm -g
    		/usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js
    		npm@2.14.2 /usr/local/lib/node_modules/npm
    
    	3:如果是 Window 系统使用以下命令即可:---------------------------------------------------------------npm install npm -g
    
    	4:使用淘宝镜像的命令:------------------------------------------------------------------------------cnpm install npm -g
    
    	使用 npm 命令安装模块:
    		npm 安装 Node.js 模块语法格式-------------------------------------------------------------------npm install <Module Name>
    
    	express安装:---------------------------------------------------------------------------------------npm install express
    		安装好之后,express 包就放在了工程目录下的 node_modules 目录中,因此在代码中只需要通过 require('express') 的方式就好,无需指定第三方包路径。
    			var express = require('express');
    
    	全局安装:-----------------------------------------------------------------------------------------npm install express -g
    		1. 将安装包放在 ./node_modules 下(运行 npm 命令时所在的目录),如果没有 node_modules 目录,会在当前执行 npm 命令的目录下生成 node_modules 目录。
    		2. 可以通过 require() 来引入本地安装的包。
    
    	本地安装:-----------------------------------------------------------------------------------------npm install express
    		1. 将安装包放在 /usr/local 下或者你 node 的安装目录。
    		2. 可以直接在命令行里使用。
    		npm 的包安装分为本地安装(local)、全局安装(global)两种,从敲的命令行来看,差别只是有没有-g而已
    		如果出现以下错误:
    			npm err! Error: connect ECONNREFUSED 127.0.0.1:8087 
    		解决办法为:
    			$ npm config set proxy null
    	如果你希望具备两者功能,则需要在两个地方安装它或使用----------------------------------------------------npm link。
    
    	接下来我们使用全局方式安装 express:------------------------------------------------------------------npm install express -g
    		安装过程输出如下内容,第一行输出了模块的版本号及安装位置。
    			express@4.13.3 node_modules/express
    			├── escape-html@1.0.2
    			├── range-parser@1.0.2
    			├── merge-descriptors@1.0.0
    			├── array-flatten@1.1.1
    			├── cookie@0.1.3
    			├── utils-merge@1.0.0
    			├── parseurl@1.3.0
    			├── cookie-signature@1.0.6
    			├── methods@1.1.1
    			├── fresh@0.3.0
    			├── vary@1.0.1
    			├── path-to-regexp@0.1.7
    			├── content-type@1.0.1
    			├── etag@1.7.0
    			├── serve-static@1.10.0
    			├── content-disposition@0.5.0
    			├── depd@1.0.1
    			├── qs@4.0.0
    			├── finalhandler@0.4.0 (unpipe@1.0.0)
    			├── on-finished@2.3.0 (ee-first@1.1.1)
    			├── proxy-addr@1.0.8 (forwarded@0.1.0, ipaddr.js@1.0.1)
    			├── debug@2.2.0 (ms@0.7.1)
    			├── type-is@1.6.8 (media-typer@0.3.0, mime-types@2.1.6)
    			├── accepts@1.2.12 (negotiator@0.5.3, mime-types@2.1.6)
    			└── send@0.13.0 (destroy@1.0.3, statuses@1.2.1, ms@0.7.1, mime@1.3.4, http-errors@1.3.1)
    	查看安装信息----------------------------------------------------------------------------------------npm list -g
    		├─┬ cnpm@4.3.2
    		│ ├── auto-correct@1.0.0
    		│ ├── bagpipe@0.3.5
    		│ ├── colors@1.1.2
    		│ ├─┬ commander@2.9.0
    		│ │ └── graceful-readlink@1.0.1
    		│ ├─┬ cross-spawn@0.2.9
    		│ │ └── lru-cache@2.7.3
    		……
    
    	如果要查看某个模块的版本号,可以使用命令如下:----------------------------------------------------------npm list grunt
    		projectName@projectVersion /path/to/project/folder
    		└── grunt@0.4.1
    
    	使用 package.json
    		package.json 位于模块的目录下,用于定义包的属性。接下来让我们来看下 express 包的 package.json 文件,位于 node_modules/express/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 uninstall express
    		卸载后,你可以到 /node_modules/ 目录下查看包是否还存在,或者使用以下命令查看:-----------------------npm ls
    
    	更新模块--------------------------------------------------------------------------------------------npm update express
    
    	搜索模块--------------------------------------------------------------------------------------------npm search express
    
    	创建模块package.json 文件是必不可少的。我们可以使用 NPM 生成 package.json 文件--------------------------npm init
    		This utility will walk you through creating a package.json file.
    		It only covers the most common items, and tries to guess sensible defaults.
    
    		See `npm help json` for definitive documentation on these fields
    		and exactly what they do.
    
    		Use `npm install <pkg> --save` afterwards to install a package and
    		save it as a dependency in the package.json file.
    
    		Press ^C at any time to quit.
    		name: (node_modules) runoob                   # 模块名
    		version: (1.0.0) 
    		description: Node.js 测试模块(www.runoob.com)  # 描述
    		entry point: (index.js) 
    		test command: make test
    		git repository: https://github.com/runoob/runoob.git  # Github 地址
    		keywords: 
    		author: 
    		license: (ISC) 
    		About to write to ……/node_modules/package.json:      # 生成地址
    
    		{
    		  "name": "runoob",
    		  "version": "1.0.0",
    		  "description": "Node.js 测试模块(www.runoob.com)",
    		  ……
    		}
    		Is this ok? (yes) yes
    		以上的信息,你需要根据你自己的情况输入。在最后输入 "yes" 后会生成 package.json 文件。
    
    	接下来我们可以使用以下命令在 npm 资源库中注册用户(使用邮箱注册):--------------------------------------npm adduser
    		Username: mcmohd
    		Password:
    		Email: (this IS public) mcmohd@gmail.com
    	接下来我们就用以下命令来发布模块:--------------------------------------------------------------------npm publish
    
    
    	版本号:
    		使用NPM下载和发布代码时都会接触到版本号。NPM使用语义版本号来管理代码,这里简单介绍一下。
    		语义版本号分为X.Y.Z三位,分别代表主版本号、次版本号和补丁版本号。当代码变更时,版本号按以下原则更新。
    		如果只是修复bug,需要更新Z位。
    		如果是新增了功能,但是向下兼容,需要更新Y位。
    		如果有大变动,向下不兼容,需要更新X位。
    		版本号有了这个保证后,在申明第三方包依赖时,除了可依赖于一个固定版本号外,还可依赖于某个范围的版本号。例如"argv": "0.0.x"表示依赖于0.0.x系列的最新版argv。
    
    	NPM支持的所有版本号范围指定方式可以查看官方文档。
    
    	NPM 常用命令
    		除了本章介绍的部分外,NPM还提供了很多功能,package.json里也有很多其它有用的字段。
    
    		除了可以在npmjs.org/doc/查看官方文档外,这里再介绍一些NPM常用命令。
    
    		NPM提供了很多命令,例如install和publish,使用npm help可查看所有命令。
    
    		NPM提供了很多命令,例如install和publish,使用npm help可查看所有命令。
    
    		使用npm help <command>可查看某条命令的详细帮助,例如npm help install。
    
    		在package.json所在目录下使用npm install . -g可先在本地安装当前命令行程序,可用于发布前的本地测试。
    
    		使用npm update <package>可以把当前目录下node_modules子目录里边的对应模块更新至最新版本。
    
    		使用npm update <package> -g可以把全局安装的对应命令行程序更新至最新版。
    
    		使用npm cache clear可以清空NPM本地缓存,用于对付使用相同版本号发布新版本代码的人。
    
    		使用npm unpublish <package>@<version>可以撤销发布自己发布过的某个版本代码。
    
    		使用淘宝 NPM 镜像
    		大家都知道国内直接使用 npm 的官方镜像是非常慢的,这里推荐使用淘宝 NPM 镜像。
    
    		淘宝 NPM 镜像是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步。
    
    		你可以使用淘宝定制的 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm:
    
    		$ npm install -g cnpm --registry=https://registry.npm.taobao.org
    		这样就可以使用 cnpm 命令来安装模块了:
    		$ cnpm install [name]
    		更多信息可以查阅:http://npm.taobao.org/。
    
    七:Node.js REPL(交互式解释器)------------------------------------------------------------------------------终端
    	Node.js REPL(Read Eval Print Loop:交互式解释器) 表示一个电脑的环境,类似 Window 系统的终端或 Unix/Linux shell,我们可以在终端中输入命令,并接收系统的响应。
    
    	Node 自带了交互式解释器,可以执行以下任务:
    		读取 - 读取用户输入,解析输入了Javascript 数据结构并存储在内存中。
    		执行 - 执行输入的数据结构
    		打印 - 输出结果
    		循环 - 循环操作以上步骤直到用户两次按下 ctrl-c 按钮退出。
    		Node 的交互式解释器可以很好的调试 Javascript 代码。
    
    	REPL:
    		启动 Node 的终端:-----------------------------------------------------------node
    			简单的表达式运算接下来让我们在 Node.js REPL 的命令行窗口中执行简单的数学运算:
    			$ node
    			> 1 +4
    			5
    			> 5 / 2
    			2.5
    			> 3 * 6
    			18
    			> 4 - 1
    			3
    			> 1 + ( 2 * 3 ) - 4
    			3
    			>
    
    		使用变量
    			你可以将数据存储在变量中,并在你需要的时候使用它。变量声明需要使用 var 关键字,如果没有使用 var 关键字变量会直接打印出来。
    			使用 var 关键字的变量可以使用 console.log() 来输出变量。
    				$ node
    				> x = 10
    				10
    				> var y = 10
    				undefined
    				> x + y
    				20
    				> console.log("Hello World")
    				Hello World
    				undefined
    				> console.log("www.runoob.com")
    				www.runoob.com
    				undefined
    
    		多行表达式
    			Node REPL 支持输入多行表达式,这就有点类似 JavaScript。接下来让我们来执行一个 do-while 循环:
    			$ node
    			> var x = 0
    			undefined
    			> do {
    			... x++;
    			... console.log("x: " + x);
    			... } while ( x < 5 );
    			x: 1
    			x: 2
    			x: 3
    			x: 4
    			x: 5
    			undefined
    			>
    			... 三个点的符号是系统自动生成的,你回车换行后即可。Node 会自动检测是否为连续的表达式。
    
    		下划线(_)变量:
    			你可以使用下划线(_)获取上一个表达式的运算结果:
    			$ node
    			> var x = 10
    			undefined
    			> var y = 20
    			undefined
    			> x + y
    			30
    			> var sum = _
    			undefined
    			> console.log(sum)
    			30
    			undefined
    			>
    			REPL 命令
    			ctrl + c - 退出当前终端。
    
    			ctrl + c 按下两次 - 退出 Node REPL。
    
    			ctrl + d - 退出 Node REPL.
    
    			向上/向下 键 - 查看输入的历史命令
    
    			tab 键 - 列出当前命令
    
    			.help - 列出使用命令
    
    			.break - 退出多行表达式
    
    			.clear - 退出多行表达式
    
    			.save filename - 保存当前的 Node REPL 会话到指定文件
    
    			.load filename - 载入当前 Node REPL 会话的文件内容。
    
    		停止 REPL---------------------------------------------------------------------ctrl + c 
    
    八:运行
    	打开终端,键入 node 进入命令交互模式,可以输入一条代码语句后立即执行并显示结果,例如:
    		$ node
    		> console.log('Hello World!');
    		Hello World!
    
    	如果要运行一大段代码的话,可以先写一个JS文件再运行。例如有以下 hello.js。
    		function hello() {
    		    console.log('Hello World!');
    		}
    		hello();
    	写好后在终端下键入 node hello.js 运行,结果如下:
    		$ node hello.js
    		Hello World!
    
    	权限问题:
    		在 Linux 系统下,使用 NodeJS 监听 80 或 443 端口提供 HTTP(S)服务时需要 root 权限,有两种方式可以做到。
    		一种方式是使用 sudo 命令运行 NodeJS。例如通过以下命令运行的 server.js 中有权限使用 80 和 443 端口。一般推荐这种方式,可以保证仅为有需要的 JS 脚本提供 root 权限。
    			$ sudo node server.js
    		另一种方式是使用 chmod +s 命令让 NodeJS 总是以 root 权限运行,具体做法如下。因为这种方式让任何JS脚本都有了 root 权限,不太安全,因此在需要很考虑安全的系统下不推荐使用。
    			$ sudo chown root /usr/local/bin/node
    			$ sudo chmod +s /usr/local/bin/node
    
    九:模块
    	编写稍大一点的程序时一般都会将代码模块化。在 NodeJS 中,一般将代码合理拆分到不同的 JS 文件中,每一个文件就是一个模块,而文件路径就是模块名。
    	在编写每个模块时,都有 require、exports、module 三个预先定义好的变量可供使用。
    
    	1:require:--------------------用于在当前模块中加载和使用别的模块:传入一个模块名,返回一个模块导出对象。模块名可使用相对路径(以./开头),或者是绝对路径(以/或C:之类的盘符开头)。模块名中的.js扩展名可以省略。
    		例:
    			var foo1 = require('./foo');
    			var foo2 = require('./foo.js');
    			var foo3 = require('/home/user/foo');
    			var foo4 = require('/home/user/foo.js');
    			// foo1 至 foo4 中保存的是同一个模块的导出对象。另外,可以使用以下方式加载和使用一个 JSON 文件。
    			
    			var data = require('./data.json');
    	
    	2:exports:---------------------对象是当前模块的导入对象:用于导入模块的公有方法和属性别的模块通过 require 函数使用当前模块时得到的就是当前模块的 exports 对象。
    		例:exports.hello = function(){
    			console.log('Hello word');
    		};
    
    	3:module-------------------------通过对象可以访问到当前模块的一些相关信息:但最多的用途是替换当前模块的导出对象。例如模块导出对象默认是一个普通对象,如果想改成一个函数的话
    		使用以下方式。
    			module.exports = function () {
    			    console.log('Hello World!');
    			};
    			**以上代码中,模块默认导出对象被替换为一个函数。
    
    		模块初始化:
    				一个模块中的JS代码仅在模块第一次被使用时执行一次,并在执行过程中初始化模块的导出对象。之后,缓存起来的导出对象被重复利用。
    
    		主模块
    			    通过命令行参数传递给 NodeJS 以启动程序的模块被称为主模块。主模块负责调度组成整个程序的其它模块完成工作。例如通过以下命令启动程序时,main.js 就是主模块。
    				$ node main.js
    
    		完整示例:
    				例如有以下目录。
    				- /home/user/hello/
    				    - util/
    				        counter.js
    				    main.js
    				其中 counter.js 内容如下:
    				var i = 0;
    				function count() {
    				    return ++i;
    				}
    				exports.count = count;
    				该模块内部定义了一个私有变量 i,并在 exports 对象导出了一个公有方法 count。
    				主模块 main.js 内容如下:
    
    				var counter1 = require('./util/counter');
    				var    counter2 = require('./util/counter');
    				console.log(counter1.count());
    				console.log(counter2.count());
    				console.log(counter2.count());
    				运行该程序的结果如下:
    				$ node main.js
    				可以看到,counter.js 并没有因为被 require 了两次而初始化两次。
    	
    

      

  • 相关阅读:
    二维数组求和
    mysql 常用函数
    3月17日 45道T-SQL查找 习题
    查询语句
    T-SQL 增删改查操作
    <转jerrylsxu> HTML语法大全
    1月25日 作业 多线程
    1月22日- 链表和哈希算法
    1月22日作业
    1月21日
  • 原文地址:https://www.cnblogs.com/w-s-l123/p/9417790.html
Copyright © 2011-2022 走看看