Windows系统下Node.js的简单入门教程


Posted in Javascript onJune 23, 2015

随着近日Paypal和Netflix宣告 迁移到Node.js, 服务器端Javascript平台已经证明其自身在企业领域的价值. 这对于Node来说是一小步,对于Javascript而言却是一大跨越啊! 来自.NET, Java, PHP, Ruby on Rails和更多技术领域的程序员, 所有游走于服务器端的编码者都会聚集到这个平台上. 作为像 Yahoo, Walmart, 和 Oracle 这样的大玩家入局,, Node 正在甩掉其一直就存在的不成熟和不稳定的坏名声. 在这篇文章中,我会向你展示在Window环境下安装Node.js到底有多容易.
安装Node.js

让Node.js安装在Windows上就是小事一桩. 到 Node.js 网站下载并运行".msi"文件. 它将会把Node.js 和 NPM (Node包管理模块)安装上. NPM 相当于用于.NET应用的 NuGet 包管理器.

运行Node.js

在Windows上运行Node.js同样很容易. 打开 PowerShell 并输入 "node -v" 确保Node在你的环境变量,并查看你正在运行的Node.js的版本. 同样的输入 "npm -v" 来查看你安装的Node包管理工具的版本. 你弄好了没? Ok, 让我们来开始享受乐趣吧!!

打开记事本程序,我们将构建我们的第一个Node.js应用. 把下面的代码复制到记事本程序中,使用任何文件名都可以,比如"example.js", 并把它保存到你希望的文件夹中:
 

var http = require('http');
http.createServer(function (req, res) {
 res.writeHead(200, {'Content-Type': 'text/plain'});
 res.end('Hello Node');
}).listen(1337, '127.0.0.1');

现在回到 PowerShell. 将路径变更到你的"example.js"文件存放的地方,并运行Node!
 

cd C:\Websites\NodeTest
node example.js

开启你的网页浏览器,导航输入 http://127.0.0.1:1337. 起作用了么? 恭喜你运行了你的第一个Node.js应用!

提供网站服务

你会担忧我会只留下一个 "Hello World" 示例就收工了? 如果我们知道如何去运行一个HTML文件,那将会更加的美好. 添加一个 "index.html" 文件,里面可以是任何HTML内容. 将会像这样:
 

<html>
 <head>
  <title>Sample Node.js Website</title>
 </head>
 <body>
  <p>This is the home page for you Node.js website.</p>
 </body>
</html>

是时候运行应用了。创建一个可以叫任何名字的新文件,比如 "index.js", 并把如下的js代码加到里面:
 

var http = require('http');
var fs = require('fs');
 
http.createServer(function(req, res){
  fs.readFile('index.html',function (err, data){
    res.writeHead(200, {
       'Content-Type': 'text/html',
       'Content-Length': data.length
      });
    res.write(data);
    res.end();
  });
}).listen(1337, '127.0.0.1');

事情在这里开始变得更加有趣了. 注意开头的地方多了一行 "require" . 你正在往你的应用中带入需要的依赖程序. 这像是C#中用来调用依赖程序的 "using" 命名空间指令.

通过在PowerShell中输入: node index.js 来运行"index.js"(不要忘了敲击 Ctrl-C来退出上一个Node应用的运行,或者在这一次使用一个新的端口号). 在你的浏览器中,导航到http://127.0.0.1:1337 ,你就应该会看到你的HTML文件了. 你将可能在这点成就上感到有些激动, 但如果你想我,就会对它产生一些复杂的感觉. 这还只是低级别的编程,如果我不得不去考虑读取/流媒体文件,还有有关每次应该发送什么状态这些问题的时候,世界很快就会变得烦恼重重. 向 ExpressJS道好吧!

使用Node包管理器

Node.js有一个再次让我们感觉世界美好的搭档. ExpressJS 屏蔽掉了需要在Node.js进行的老调重弹,让你可以直接进入web开发. 它是一个可以让你构建单页,多页还有混合类型web应用程序的web框架. 没有它你在 Node.js 领域是不会有盼头滴!

首先使用 NPM 来安装它. 为此,再一次打开PowerShell并切换到你的应用程序的路径. 现在输入: npm install express. 它将会创建一个叫做 "node_modules" 来安装 ExpressJS. 从这个角度上看,你的Node模块将会放到那里,有点像在.NET应用中的"bin"目录, 从这里你可以调用或者"require"你的依赖程序.
 
ExpressJS入门

现在任意创建一个新文件, 比如 "server.js", 并把下面的代码粘贴进去:
 

var express = require('express');
 
//CREATE APP
var app = express();
 
//LOCATION OF STATIC CONTENT IN YOUR FILESYSTEM
app.use(express.static(__dirname));
 
//PORT TO LISTEN TO
app.listen(1337);

这是在调用ExpressJS的依赖, 然后从它那里创建一个应用. 从此你可就牛逼大发了! 在这里,我们只是简单的提供静态文件服务. "__dirname" 是来自ExpressJS的一个特殊的变量,意思是根文件系统位置. 最后你告诉应用去侦听端口 1337. 现在你就拥有了一个提供静态文件服务的 Node.js 站点了! 另外在新增一些HTML文件,一些放在子目录中,然后到http://127.0.0.1:1337 测试看看吧.

关于 IIS

在这些示例中, 我一直都是在端口1337运行应用,而不是端口80.原因是IIS已经侦听了80端口. 有许多的方法可以使IIS 和 Node.js 和谐共存:

  •     IISNode: 这是一个在你的IIS站点让Node.js像一个应用池那样运行的很聪明的点子, 同在IIS中与运行PHP很像. 事实上,Azure就是用这个在其平台上运行Node.js的.
  •     WinServ: 它让 Node.js 像一个Windows服务那样运行. 它实际上是对流行了 NSSM (Non-Sucking Service Manager)的一个对Node.js友好的封装. 一旦作为一个服务运行,你就可以使用IIS的应用请求路由(ARR) 来代理向你的Node.js应用端口发起的请求.

关于 MS SQL

有许多为Node.js准备的 MS SQL 驱动程序, 有些甚至是跨平台的. 有一个只能在Windows环境中运行的,是由Windows Azure发布: Microsoft Driver for Node.js for SQL Server. 而你可以像下面这样开始工作:
 

var sql = require('node-sqlserver');
var connStr = "Driver={SQL Server Native Client 11.0};Server=(local);Database=AdventureWorks2012;Trusted_Connection={Yes}";
var cmd = "SELECT TOP 10 FirstName, LastName FROM Person.Person";
 
sql.open(connStr, function (err, conn) {
  conn.queryRaw(cmd , function (err, results) {
    for (var i = 0; i < results.rows.length; i++) {
      console.log(
          "FirstName: " + results.rows[i][0]
       + " LastName: " + results.rows[i][1]);
    }
  });
});

总结

这些都只是皮毛! 与 ExpressJS携手, 你将能够创建带有路由、视图、布局、服务还有更多组件的完全成熟的MVC应用程序. 同样,除非你需要去集成一些现有的Microsoft应用程序或者MS SQL数据库, MongoDB 在你创建一个Node堆栈式是能帮助你从SQL中解放的好伙伴. 最后,你可以使用MEAN创建一个MEAN Javascript全栈应用, 包括有MongoDB, ExpressJS, AngularJS, 和Node.js. 现在企业已经向Node.js靠拢了, 对你而言同样是不是时候来辅助行动了呢?

Javascript 相关文章推荐
小型js框架veryide.librar源代码
Mar 05 Javascript
jquery1.5.1中根据元素ID获取元素对象的代码
Apr 02 Javascript
封装html的select标签的js操作实例
Jul 02 Javascript
js实现按一下删除键删除整个单词附demo
Sep 05 Javascript
js实现当鼠标移到表格上时显示这一格全部内容的代码
Jun 12 Javascript
jQuery实现订单提交页发送短信功能前端处理方法
Jul 04 Javascript
Angular2环境搭建具体操作步骤(推荐)
Aug 04 Javascript
ECMAscript 变量作用域总结概括
Aug 18 Javascript
浅谈vue-cli加载不到dev-server.js的解决办法
Nov 24 Javascript
微信小程序防止多次点击跳转和防止表单组件输入内容多次验证功能(函数防抖)
Sep 19 Javascript
浅谈Vue3 Composition API如何替换Vue Mixins
Apr 29 Javascript
vue通过接口直接下载java生成好的Excel表格案例
Oct 26 Javascript
jQuery实现判断滚动条到底部
Jun 23 #Javascript
jQuery实现新消息在网页标题闪烁提示
Jun 23 #Javascript
使用Raygun对Node.js应用进行错误处理的方法
Jun 23 #Javascript
javascript创建函数的20种方式汇总
Jun 23 #Javascript
使用Node.js实现HTTP 206内容分片的教程
Jun 23 #Javascript
jquery.gridrotator实现响应式图片展示画廊效果
Jun 23 #Javascript
使用JavaScript实现旋转的彩圈特效
Jun 23 #Javascript
You might like
php SQL Injection with MySQL
2011/02/27 PHP
php批量删除操作代码分享
2017/02/26 PHP
浅谈Laravel队列实现原理解决问题记录
2017/08/19 PHP
Javascript 定时器调用传递参数的方法
2009/11/12 Javascript
Javascript Cookie读写删除操作的函数
2010/03/02 Javascript
js各种验证文本框输入格式(正则表达式)
2010/10/22 Javascript
javascript 基础篇4 window对象,DOM
2012/03/14 Javascript
利用Javascript判断操作系统的类型实现不同操作系统下的兼容性
2013/01/29 Javascript
innerHTML中标签可以换行的方法汇总
2015/08/14 Javascript
jQuery插件实现表格隔行变色及鼠标滑过高亮显示效果代码
2016/02/25 Javascript
第二篇Bootstrap起步
2016/06/21 Javascript
javascript ASCII和Hex互转的实现方法
2016/12/27 Javascript
ES6新特性四:变量的解构赋值实例
2017/04/21 Javascript
Easyui在treegrid添加控件的实现方法
2017/06/23 Javascript
jQuery实现table表格checkbox全选的方法分析
2018/07/04 jQuery
Jquery和CSS实现选择框重置按钮功能
2018/11/08 jQuery
微信小程序 setData 对 data数据影响问题
2019/04/18 Javascript
jquery实现的分页显示功能示例
2019/08/23 jQuery
layui点击左侧导航栏,实现不刷新整个页面,只刷新局部的方法
2019/09/25 Javascript
TypeScript之调用栈的实现
2019/12/31 Javascript
Vue切换div显示隐藏,多选,单选代码解析
2020/07/14 Javascript
[55:02]2014 DOTA2国际邀请赛中国区预选赛 HGT VS Orenda
2014/05/21 DOTA
基于Python对象引用、可变性和垃圾回收详解
2017/08/21 Python
Python方法的延迟加载的示例代码
2017/12/18 Python
python 格式化输出百分号的方法
2019/01/20 Python
浅谈HTML5 defer和async的区别
2016/06/07 HTML / CSS
ghd官网:英国ghd直发器品牌
2018/05/04 全球购物
美国和加拿大计算机和电子产品购物网站:TigerDirect.com
2019/09/13 全球购物
大学生学习自我评价
2014/01/13 职场文书
个人诉讼委托书范本
2014/10/17 职场文书
闪闪红星观后感
2015/06/08 职场文书
穷人该怎么创业?谨记以下几点
2019/07/11 职场文书
css常用字体属性与背景属性介绍
2022/02/28 HTML / CSS
抖音动画片,皮皮虾,《治愈系》动画在用这首REMIX作为背景音乐,Anak ,The last world with you完整版
2022/03/16 杂记
java后台调用接口及处理跨域问题的解决
2022/03/24 Java/Android
PostgreSQL基于pgrouting的路径规划处理方法
2022/04/18 PostgreSQL