Node.js 新手入门
Node.js 新手入门
Node.js是运行在服务端的JavaScript运行环境(runtime)。实际上它是对Google V8引擎进行了封装。V8引 擎执行Javascript的速度非常快,性能非常好。简单地说,Node.js 是运行在服务端的 JavaScript, 是基于 Chrome JavaScript V8 引擎建立的平台,换句话说,Node.js是一个让JavaScript运行在服务器端的开发平台。除了服务器编程,Node.js 还被广泛应用于客户端编程,如桌面软件(Electron 框架),手机软件(React-Native 框架,Apache Cordova 框架)等,当然还有现在特别火的“前端”开发,例如 React、Vue、Angular都基于Node.js 。
Node.js对一些特殊用例进行了优化,提供了替代的API,使得V8在非浏览器环境下运行得更好。
Node.js 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。
可以使用node -v命令来查看当前是否安装 Node 版本,若安装出现版本号信息:
若不是类似如上图显示,说明尚未安装Node.js,需要下载安装,下载地址为:Download | Node.js。
根据不同平台系统选择你需要的Node.js安装包。Windowv 上安装Node.js比较容易,只要一直下一步即可(且能自动为配置环境变量path),就不多说了【需要提醒的是在安装过程中,若不想安装大量的工具,不要点选“automatically install the necessary tools. Note that this will also install chocolatey. The script will pop_up in a new window after the installation completes.“ 意思是:自动安装必要的工具。注意,这也会安装chocolatey。安装完成后,脚本将弹出一个新窗口】。
Node.js默认安装目录为 "C:\Program Files\nodejs\" , 你可以修改目录:
可以使用node -v命令来查看Node 版本,前面提到过。
创建 Node.js 应用实例
在你项目的根目录下创建一个叫 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\n');
}).listen(8888);
// 终端打印如下信息
console.log('Server running at http://127.0.0.1:8888/');
说明:其中var http = require("http"); 使用 require 指令来载入 http 模块,并将实例化的 HTTP 赋值给变量 http。
使用 node 命令执行以上的代码:
编写了.js的程序,运行的时候就要通过node.js来运行了,在CMD中先切换到编写程序的目录下,然后用node XXX.js即可启动服务,若不先切换路径,则用node 路径\XXX.js启动服务。然后在浏览器中输入相应的监听IP地址加上端口号,这里的端口号使用比较大一点的就可以,因为是回环测试,所以使用127.0.0.1来作为测试IP。
用cd命令切换到server.js 的文件所在的目录
用node server.js 命令执行
打开浏览器访问 http://127.0.0.1:8888/,你会看到一个写着 "Hello World"的网页:
简单例子运行成功了,这其实是用node.js搭建了一个服务器,然后来监听端口的访问事件,最后做出相应的回应,需要指出的是,当我们关闭CMD或按CTRL+C键之后服务就关闭了。
下面再举个例子较为复杂的例子:
有两部分:服务器代码和网页代码
服务器代码如下:
//require表示引包,引包就是引用自己的一个特殊功能
var http = require("http");
var url = require("url");
var server = http.createServer(function(req,res){
//得到查询部分,由于写了true,那么就是一个对象
var queryObj = url.parse(req.url,true).query;
var name = queryObj.name;
var age = queryObj.age;
var sex = queryObj.sex;
res.writeHead(200,{"Content-Type":"text/html;charset=UTF-8"});
res.end("服务器收到了表单请求" + name + age + sex);
});
//运行服务器,监听3000端口(端口号可以任改)
server.listen(3000,"127.0.0.1");
// 终端打印如下信息
console.log('Server running at http://127.0.0.1:3000/')
保存文件名为server2.js ,运行:
网页代码如下:
<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Document</title></head><body><form action="http://127.0.0.1:3000/" method="GET">姓名:<input type="text" name="name" /> <br />年龄:<input type="text" name="age" /> <br /><input type="radio" name="sex" value="男"/> 男<input type="radio" name="sex" value="女"/> 女<br /><input type="submit"></form></body></html>
保存文件名为 测试网页.html ,用浏览器运行:
下面介绍Node.js之REPL
Node.js之 REPL
Node.js REPL(Read Eval Print Loop:交互式解释器) 表示一个电脑的环境,类似 Window 系统的终端或 Unix/Linux shell,我们可以在终端中输入命令,并接收系统的响应。
REPL 的交互式的编程环境可以实时的验证你所编写的代码,非常适合于验证 Node.js 和 JavaScript 的相关 API。
Node 自带了交互式解释器,可以执行以下任务:
读取 - 读取用户输入,解析输入了Javascript 数据结构并存储在内存中。
执行 - 执行输入的数据结构
打印 - 输出结果
循环 - 循环操作以上步骤直到用户两次按下 ctrl-c 按钮退出。
Node 的交互式解释器可以很好的调试 Javascript 代码。
可以输入以下命令来启动 Node 的终端:
node
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 建就能退出 REPL:
REPL的使用
表达式运算
使用变量
你可以将数据存储在变量中,并在你需要的使用它。
变量声明需要使用 var 关键字,如果没有使用 var 关键字变量会直接打印出来。
使用 var 关键字的变量可以使用 console.log() 来输出变量。
多行表达式
Node REPL 支持输入多行表达式,执行一个 do-while 循环:
说明:
... 三个点的符号是系统自动生成的,你回车换行后即可。Node 会自动检测是否为连续的表达式。
Node.js 之NPM介绍
文介绍了 Node.js 中 NPM 的使用,我们先来了解什么是 NPM。
NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种:
允许用户从NPM服务器下载别人编写的第三方包到本地使用。
允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。
由于新版的nodejs已经集成了npm,所以之前npm也一并安装好了。同样可以通过输入
npm -v
来测试是否成功安装。命令如下,出现版本提示表示安装成功:
如果你安装的是旧版本的 npm,可以很容易得通过 npm 命令来升级,Window 系统使用以下命令即可:
npm install npm -g
使用npm包管理工具安装第三方库(npm包),有两种安装方式:全局安装和局部安装:
从敲的命令行来看,差别只是有没有-g而已,如
npm install X # 局部(本地)安装,则是将模块下载到当前命令行所在目录。可能会遇到 “'X' 不是内部或外部命令,也不是可运行的程序”错误。
npm install X -g # 全局安装,可以直接在命令行里使用。
附、 npm 、cnpm常用命令及.npmrc配置文件详解
npm 、cnpm常用命令及.npmrc配置文件详解_cnds123的专栏-CSDN博客
Node.js 新手入门相关推荐
- node.js新手入门初学
新公司后端需要用到node.js做开发,由于本人在此之前实习亦或是在学校做的项目仅仅使用java所谓后端语言进行项目的开发,所以在入职之前先是自己学习node.js基础的知识,方便进公司后能快速上手工 ...
- Node.js:入门资料
<快速搭建 Node.js 开发环境以及加速 npm> http://fengmk2.com/blog/2014/03/node-env-and-faster-npm.html <N ...
- 54 Node.js快速入门
技术交流QQ群:1027579432,欢迎你的加入! 欢迎关注我的微信公众号:CurryCoder的程序人生 1.Node开发概述 1.1 为什么要学习服务器端开发基础 能够与后端程序员更加紧密的配合 ...
- Node.js核心入门(二)
目录: Node.js核心入门(一) 全局对象 常用工具 事件机制 Node.js核心入门(二) 文件系统访问 HTTP服务器与客户端 文件系统 fs fs 模块是文件操作的封装,它提供了文件的读取. ...
- Node.js开发入门—使用jade模板引擎
在"Node.js开发入门--Express安装与使用"里,我们曾经使用express generator创建了一个HelloExpress网站,express工具为我们生成了基本 ...
- Node.js开发入门—Express安装与使用
之前我们在安装完Node.js后直接写了个HelloWorld网站,这次呢,我们使用Node.js的Web框架Express来重写一下HelloWorld,看看有什么不同.同时我们还会重写之前的文件服 ...
- Node.js开发入门—语音合成示例
出于项目需要,搞了一个语音合成(TTS)的小示例,使用的是OKVoice. 我想在PC上测试,OKVoice的快速接入API可以实现我的目的,文档在这里:http://dev.okvoice.com/ ...
- Node.js新手教程——怎样实现文件上传功能
作者:zhanhailiang 日期:2014-11-16 本文将介绍怎样使用Node.js实现文件上传功能. 1. 初始化项目信息:npm init [root@~/wade/nodejs/node ...
- Vue.js新手入门指南
最近在逛各大网站,论坛,以及像SegmentFault等编程问答社区,发现Vue.js异常火爆,重复性的提问和内容也很多,楼主自己也趁着这个大前端的热潮,着手学习了一段时间的Vue.js,目前用它正在 ...
最新文章
- 【博士论文】机器学习中的标记增强理论与应用研究
- python plot 坐标轴范围,Python,Matplotlib,子图:如何设置轴范围?
- netty epoll调用示例
- Selective Search
- Visual C++位图操作(1)
- 【CTR模型】TensorFlow2.0 的 DeepFM 实现与实战(附代码+数据)
- 计算机主机的奥秘,揭秘网吧电脑为何流畅的奥秘
- 使用 guard 的正确姿势
- Django:MySQL查询结果为datetime.date无法转换为JSON
- 自然语言处理 -- NLP作业 1 :训练词向量
- 【吴恩达机器学习】学习笔记——梯度下降
- 配置pytoch版人脸关键点网络pfld docker环境
- 文件操作 详解(freopen)(C++)
- GM505高斯计使用方法图解
- 物联网(IOT)介绍与发展背景
- 数学分析教程(科大)——2.1笔记+习题
- 什么是自签名证书?自签名SSL证书的优缺点?
- android脚本实现自动捉妖,一起来捉妖自动捉妖脚本使用教程ios00
- recyclerview的条目添加点击事件
- [转]Cortex-a8 arm11 arm9 xscale powerpc 嵌入式处理器实测性能
热门文章
- linux 失能鼠标,Linux内核中CPU主频和电压调整 (一)
- 高并发之伪共享和缓存行填充(缓存行对齐)(@Contended)
- 5 设置windows2003 ipsec/l2tp psk 的接入服务器. 及一些看到的问题.
- 数据库实验一 数据库定义
- java排序算法(插入排序,冒泡排序,选择排序)
- C语言详解 FILE文件操作
- python镜像网址
- exit(0)和_exit(0)区别
- C语言 exit 0;与exit 1;return 0;return1
- uni-app日历组件(calendar),兼容安卓、ios、微信、百度、抖音小程序