如何从Node.js开始-Visual Studio2017
如何从Node.js开始
好吧,简单地说,Node.js是一个服务器框架,可以在Windows,Linux,Unix,Mac OS X等各种平台上运行。它是开源的。
根据NodeJS网站的说法,“Node.js®是基于Chrome的V8 JavaScript引擎构建的JavaScript运行时。Node.js使用事件驱动的非阻塞I / O模型,使其轻巧高效。Node.js的软件包生态系统 npm是世界上最大的开源库生态系统。”
那么,什么是V8?
根据Google开发人员的说法
V8是Google的开源高性能JavaScript引擎,用C ++编写,并用在Google Chrome,Google的开源浏览器以及Node.js等中。 它实现ECMA-262中指定的ECMAScript,并在Windows 7或更高版本,macOS 10.5+和使用IA-32,ARM或MIPS处理器的Linux系统上运行。 V8可以独立运行,也可以嵌入到任何C ++应用程序中。
可以在V8的公共Wiki上找到更多信息。
如何开始
我们需要安装和设置NodeJS开发环境才能使用。 进入NodeJS页面下载MSI文件。
点击“下一步”完成设置。 当我们计划使用Visual Studio开发示例应用程序时,请确保IDE已安装NodeJS开发包。
在Visual Studio中使用NodeJS
打开Visual Studio2017。转到文件>新建>项目
将会出现一个新项目窗口。 从左侧菜单中,单击JavaScript。 它将显示示例NodeJS应用程序的列表。 我刚开始使用一个空白的NodeJS Web应用程序。
初始示例具有server.js和package.json文件。
Nodejs Web服务器
'use strict';
var http = require('http');
var port = process.env.PORT || 1337;
http.createServer(function (req, res) {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello Worldn');
}).listen(port);
在上面的代码片段中,我们可以看到初始示例应用程序具有一个核心模块(HTTP),该模块具有“ http.createServer”方法来处理端口1337上来自用户的带有响应的请求。
package.json
{
"name": "startup-nodejs",
"version": "0.0.0",
"description": "StartupNodejs",
"main": "server.js",
"author": {
"name": "Shashangka"
}
}
现在,运行该应用程序。 服务器将在浏览器中响应以下输出。
现在,如果要根据用户请求提供HTML页面,则需要使用不同的NodeJS框架。 在本文中,我们将使用Express.js开发可为HTML页面提供服务的示例Web应用程序。
Node.js框架
Express.js,Geddy,机车,Koa,Total.js,Hapi.js等。
Express.js Web应用程序
创建Express.js Web应用程序。 首先,我们需要安装Express.js软件包。
使用npm安装express.js
$ npm install express --save
在Visual Studio中安装Express.js
package.json
{
"name": "nodejs-web-app1",
"version": "0.0.0",
"description": "NodejsWebApp1",
"main": "server.js",
"author": {
"name": "Shashangka"
},
"dependencies": {
"express": "^4.16.2"
}
}
正如我们所看到的,我们的package.json现在具有与软件包版本的依赖关系。 现在,我们需要修改server.js文件以提供HTML页面。
index.html
创建一个HTML页面以响应用户请求。
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<h3>Hello NodeJS</h3>
</body>
</html>
server.js
在下面的代码片段中,使用require()函数导入Express.js模块。
'use strict';
//var http = require('http');
var express = require('express');
var app = express();
var port = process.env.PORT || 1337;
//http.createServer(function (req, res) {
// res.writeHead(200, { 'Content-Type': 'text/plain' });
// res.end('Hello Worldn');
//}).listen(port);
app.get('/', function (req, res) {
res.sendFile('index.html', { "root": __dirname });
});
var server = app.listen(port, function () {
console.log('Node server is running on port..' + port);
});
app对象负责响应用户请求(HTTP)路由,渲染HTML视图。 app.listen()函数通过监听定义的端口来创建Node Web服务器。
输出
现在,运行应用程序,它将显示如下输出。
现在,我们添加另一个about页面。 我们还需要修改现有的server.js文件并添加以下代码段。
app.get('/about', function (req, res) {
res.sendFile('about.html', { "root": __dirname });
});
将菜单添加到index和about页面。 最后,运行该应用程序。 从下图可以看出,通过响应about页面来执行请求。
Node.js
- 浅析负载均衡的6种算法,Ngnix的5种算法
- 字符串的学习
- 【Scikit-Learn 中文文档】内核岭回归 - 监督学习 - 用户指南 | ApacheCN
- 可视化(番外篇)——在Eclipse RCP中玩转OpenGL
- 养良好C语言编程风格,编优质C语言代码,这才是C语言的开始
- IBM让《星球大战》中的各种黑科技变成现实
- 学习SVM(二) 如何理解支持向量机的最大分类间隔
- 解密区块链:不可编辑性带来的问题
- 学习SVM(三)理解SVM中的对偶问题
- 学习SVM(四) 理解SVM中的支持向量(Support Vector)
- 转行数据挖掘和机器学习(四)
- 了解ASP.NET MVC几种ActionResult的本质:JavaScriptResult & JsonResult
- 学习SVM(五)理解线性SVM的松弛因子
- 了解ASP.NET MVC几种ActionResult的本质:EmptyResult & ContentResult
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Linux内核设备驱动之高级字符设备驱动笔记整理
- Linux使用scp命令进行文件远程拷贝详解
- Linux内核设备驱动之Linux内核模块加载机制笔记整理
- linux无损扩容的方法
- Linux内核设备驱动之内核的时间管理笔记整理
- 使用squid搭建http和https的代理服务器设置指南
- linux中gdb的入门使用教程
- Linux命令中Ctrl+z、Ctrl+c和Ctrl+d的区别和使用详解
- Linux lseek函数的使用详解
- Nginx出现500 Internal Server Error 错误的解决方案
- Linux常见基本命令与用法大全
- Navicat 环境测试 innodb 的默认行锁升级表锁
- Ubuntu18.04更换国内源的方法示例
- 详解ubuntu双系统启动时卡死解决办法
- 轻松掌握Git开发(二)本地仓库的基本操作