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 相关文章推荐
Tinymce+jQuery.Validation使用产生的BUG
Mar 29 Javascript
基于jQuery的遍历同id元素 并响应事件的代码
Jun 14 Javascript
使用Grunt.js管理你项目的应用说明
Apr 24 Javascript
js获取select标签的值且兼容IE与firefox
Dec 30 Javascript
JS操作iframe里的dom(实例讲解)
Jan 29 Javascript
jQuery弹簧插件编写基础之“又见弹窗”
Dec 11 Javascript
javascript中Date对象的使用总结
Nov 21 Javascript
JSON与JS对象的区别与对比
Mar 01 Javascript
Angular+Bootstrap+Spring Boot实现分页功能实例代码
Jul 21 Javascript
JS扩展String.prototype.format字符串拼接的功能
Mar 09 Javascript
vue如何通过id从列表页跳转到对应的详情页
May 01 Javascript
vue-cli4项目开启eslint保存时自动格式问题
Jul 13 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 文件上传进度条的两种实现方法的代码
2007/11/25 PHP
PHP COOKIE设置为浏览器进程
2009/06/21 PHP
PHP文件类型检查及fileinfo模块安装使用详解
2019/05/09 PHP
解决laravel中日志权限莫名变成了root的问题
2019/10/17 PHP
不间断滚动JS打包类,基本可以实现所有的滚动效果,太强了
2007/12/08 Javascript
jquery图片上下tab切换效果
2011/03/18 Javascript
js获取IP和PcName(IE)在vs中可用
2013/08/02 Javascript
js数组操作常用方法
2014/05/08 Javascript
jQuery截取指定长度字符串代码
2014/08/21 Javascript
node.js中RPC(远程过程调用)的实现原理介绍
2014/12/05 Javascript
浅谈jquery回调函数callback的使用
2015/01/30 Javascript
jQuery使用empty()方法删除元素及其所有子元素的方法
2015/03/26 Javascript
JavaScript实现随机替换图片的方法
2015/04/16 Javascript
javascript随机显示背景图片的方法
2015/06/18 Javascript
在Mac OS下使用Node.js的简单教程
2015/06/24 Javascript
解析NodeJS异步I/O的实现
2017/04/13 NodeJs
基于Bootstrap的标签页组件及bootstrap-tab使用说明
2017/07/25 Javascript
Vue 中使用vue2-highcharts实现top功能的示例
2018/03/05 Javascript
Vue中Quill富文本编辑器的使用教程
2018/09/21 Javascript
用vue 实现手机触屏滑动功能
2020/05/28 Javascript
利用Python实现图书超期提醒
2016/08/02 Python
每天迁移MySQL历史数据到历史库Python脚本
2018/04/13 Python
Python爬取个人微信朋友信息操作示例
2018/08/03 Python
Django文件存储 默认存储系统解析
2019/08/02 Python
python批量处理txt文件的实例代码
2020/01/13 Python
Python操作注册表详细步骤介绍
2020/02/05 Python
摩顿布朗英国官方网上商店:奢华沐浴、身体和头发护理
2016/10/29 全球购物
英国最大的割草机购买网站:Just Lawnmowers
2019/11/02 全球购物
设计总监岗位职责
2013/12/07 职场文书
经典大学生求职信范文
2014/01/06 职场文书
教师遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
自主招生自荐信怎么写
2015/03/24 职场文书
2016毕业实习单位评语大全
2015/12/01 职场文书
2016年优秀共产党员先进事迹材料
2016/02/29 职场文书
python 自动刷新网页的两种方法
2021/04/20 Python
app场景下uniapp的扫码记录
2022/07/23 Java/Android