学习node.js 有比较长的时候了,但没有实践过,现在从简单的知识点复习。
第一步:创建package.json 项目依赖文件
node.js不要被名字迷惑,他不是 javascript,但与js有很大的关联,语法基本一样。
使用http 就会用到http模块,看下面代码
var http = require('http'); http.createServer(function(req,res){ res.writeHead(200); res.end('hello world!'); }).listen(3000); console.log("服务启动:3000")
打开浏览器输入 http://localhost:3000/
如果能在页面中看到 hello world!说明正常启动了。
在node.js需要明确定义头信息。(前端或许不太关注头信息,但后端人员会很关注头信息的,如果头信息不同传输的内容是不一样的。)上面的例子没有指定头信息,就会是一个普通的文本(text/plain)文件,不会做为html文件渲染,
如果是html需要指定头信息看下面代码:
var http = require('http'); http.createServer(function(req,res){ res.writeHead(200,{'content-type':'text/html'}); res.end('hello world!'); }).listen(3000); console.log("服务启动:3000")
要想看到html标签的内容很简单,就是在字符中加入html标签就可以了。
var http = require('http'); http.createServer(function(req,res){ res.writeHead(200,{'content-type':'text/html'}); res.end('hello world!'); }).listen(3000); console.log("服务启动:3000")
其实上面的代码比较简单,node.js可以自己搭建一个http的服务器,不需要第三方的。
简单的代码中也需要注意:createServer(function(req,res){}) 这个函数中通过高阶函数把参数req,res加入到代码中,req,res是什么呢?
什么是高阶函数呢?
高阶函数(Higher Order Function)作为函数式编程众多风格中的一项显著特征,经常被使用着。按照维基百科上面的定义,高阶函数是至少满足下列一个条件的函数:
- 接受函数作为输入
- 输出一个函数
这两个req,res什么时候定义的呢? 肯定是在定义createServer的时候已经定义了这个两个函数了,特别注意的是node.js是javascript的特性,所以不需要申明变量的类型,所以这个req,res看不出类型。
看看下面的小例子
function a(){ } a.pr = function(){ alert('a'); } function b(fun){ var bb = a; fun.call(null,bb); } b(function(c){ c.pr(); });
函数b()把函数作为参数,在b()函数体内通过call调用,call调用的时候就可以指定参数。
http协议构建在请求和响应的概念上,对应在Node.js中就是http.ServerRequest和http.serverResponse这两个构造器构造出来的对象,而http.ServerRequest是IncomingMessage的实例。
所以查看Node.js帮助文档的时候实际上查看的是IncomingMessage->http.IncomingMessage和http.serverResponse
明白了这一点就能明白为什么会出现下面这种req.url(查看http.IncomingMessage的帮助就知道有这个属性)
var http = require('http'); http.createServer(function(req,res){ res.writeHead(200,{'content-type':'text/html'}); if(req.url == '/'){ res.write('home'); } if(req.url == '/savepage'){ res.write('savepage') } res.end(); }).listen(3000); console.log("服务启动:3000")
启动服务后有两个地址可以访问 一个是/ 首页,另一个是/savepage
看一个简单的表单程序
var http = require('http'); http.createServer(function(req,res){ res.writeHead(200,{'content-type':'text/html'}); if(req.url == '/'){ res.write('<meta charset="UTF-8">'); res.end('<a href="/reg">注册</a>'); } if(req.url == '/reg' ){ res.end(['<!doctype html>', '<meta charset="UTF-8"/>', '<h1>用户注册</h1>', '<form method="POST" action="/url">', '<label>用户名:</label><input type="text" name="name"/>', '<label>密码:</label><input type="password" name="password"/>', ' <input type="submit" value="提交"/> </form>' ].join('')); } if(req.url == '/url' && req.method == 'POST'){ var body = ''; req.on('data',function(chunk){ body += chunk; }); req.on('end',function(){ res.write(['<!doctype html>', '<meta charset="UTF-8"/>', '<h1>注册信息是</h1>'].join('')); res.end(body); }); } }).listen(3000); console.log("服务启动:3000")
相关推荐
由于提供的【部分内容】是一段经过OCR扫描后的混乱文本,它不包含任何有关Node.js入门的实质性信息,因此无法从中提取出与Node.js相关的知识点。不过,我可以利用提供的标题和描述中的关键词“Node入门-一本全面的...
最后一部分关注于Node.js应用的测试和部署。测试是软件开发的重要环节,Node.js应用也不例外。这一部分可能会介绍单元测试、集成测试和端到端测试等多种测试方法,以及如何使用Mocha、Jest等测试框架来实现这些测试...
Node.js(node-v16.15.1.tar.gz 源码)长期版本。...Node.js 包含一个用于文件、套接字和 HTTP 通信的内置异步 I/O 库。HTTP 和套接字支持允许 Node.js 充当 Web 服务器,而无需额外的软件,例如 Apache。
Node.js(node-v16.15.1-win-x86.zip)长期版本,适用于Windows...Node.js 包含一个用于文件、套接字和 HTTP 通信的内置异步 I/O 库。HTTP 和套接字支持允许 Node.js 充当 Web 服务器,而无需额外的软件,例如 Apache。
Node.js(node-v16.15.1.pkg)长期版本,适用于macOS x64/Arm64...Node.js 包含一个用于文件、套接字和 HTTP 通信的内置异步 I/O 库。HTTP 和套接字支持允许 Node.js 充当 Web 服务器,而无需额外的软件,例如 Apache。
Node.js(node-v16.15.1-win-x64.zip)长期版本,适用于Windows...Node.js 包含一个用于文件、套接字和 HTTP 通信的内置异步 I/O 库。HTTP 和套接字支持允许 Node.js 充当 Web 服务器,而无需额外的软件,例如 Apache。
总结起来,Node.js 是现代 Web 开发的重要组成部分,`node 12` 和 `node 16` 分别代表了两个不同阶段的稳定版本,而 `nvm-setup` 则提供了一个便捷的工具来管理和切换这些版本,以满足开发和项目需求。通过正确使用...
Node.js(node-v16.15.1-x64.msi)长期版本,适用于Windows x64...Node.js 包含一个用于文件、套接字和 HTTP 通信的内置异步 I/O 库。HTTP 和套接字支持允许 Node.js 充当 Web 服务器,而无需额外的软件,例如 Apache。
- 节点每行代码详解:在Node-RED中,尽管大部分工作是通过图形界面完成,但某些节点可能需要自定义JavaScript代码。例如,你可以使用“function”节点编写自己的处理逻辑。每一行代码都有其特定作用,如变量声明、...
对于零售、餐饮等需要快速响应的行业,POS(Point of Sale,销售点)系统是不可或缺的一部分,而“node-escpos”就是这样一个基于Node.js的库,专为Windows环境下的POS打印机提供服务。这个库允许开发者通过Node.js...
本文将详细探讨一款名为"Node-Red-Node-Serialport"的前端开源库,它是Node-Red框架中的一个重要组成部分,主要用于实现前端与串行端口(Serial Port)之间的通信。 Node-Red是一款由IBM开发的轻量级流程编程工具,...
Node.js(node-v16.15.1-x86.msi)长期版本,适用于Windows 32...Node.js 包含一个用于文件、套接字和 HTTP 通信的内置异步 I/O 库。HTTP 和套接字支持允许 Node.js 充当 Web 服务器,而无需额外的软件,例如 Apache。
**Node.js - ShortcutsJS:一个用于创建iOS 12快捷键的工具** 在iOS 12中,苹果引入了一项名为“快捷指令”(Shortcuts)的新特性,允许用户自定义一系列操作来自动化日常任务。`Shortcuts JS` 是一个基于Node.js的...
根据给出的文件信息,文件标题为《Node入门 » 一本全面的Node.pdf》,描述表明这是一本适合初学者全面入门的Node.js书籍。标签为"nodejs",意味着内容将集中在Node.js技术上。由于部分内容为OCR扫描文字,可能存在...
标签中的“Node.js开发-HTTP工具”表明`node-fetch`是Node.js开发中的一款HTTP客户端工具,它使得在服务端处理HTTP请求变得更加便捷和高效。在进行Node.js项目开发时,如果需要发起HTTP请求,`node-fetch`是一个值得...
接着,在你的`package.json`文件中的`scripts`部分添加一个`dev`命令,比如: ```json "scripts": { "dev": "webpack --mode development" } ``` 运行`npm run dev`命令启动Webpack开发服务器,它会自动处理Sass...
Node.js(node-v16.15.1-linux-x64.tar.xz)长期版本,适用于...Node.js 包含一个用于文件、套接字和 HTTP 通信的内置异步 I/O 库。HTTP 和套接字支持允许 Node.js 充当 Web 服务器,而无需额外的软件,例如 Apache。
此外,它开始引入ES模块,这是JavaScript标准的一部分,有助于实现更规范的代码组织。 4. **Node.js 版本12**:“Erbium”于2019年4月发布,也是LTS版本,它标志着Node.js进入了ES2019特性的世界。这个版本包括对V8...
Node.js(node-v16.15.1-linux-s390x.tar.xz)长期版本,适用于...Node.js 包含一个用于文件、套接字和 HTTP 通信的内置异步 I/O 库。HTTP 和套接字支持允许 Node.js 充当 Web 服务器,而无需额外的软件,例如 Apache。
尽管 Micro Python 在语法上更接近于 Python,但其 API 函数与 NodeMCU 的 Lua API 有部分重叠,例如 Wi-Fi 连接和 GPIO 控制。不过,两者在具体实现和细节上可能存在差异,开发者需要根据实际使用的语言查阅相应的 ...