Node实践之一
大家都知道JavaScript的专长就是处理客户端也就是与浏览器打交道了,所有的与服务器端的交互必须交给后台语言处理程序去做,基于JavaScript不能与服务器进行直接交互这样一个现状,Ryan Dahl决定使用V8引擎来创建JavaScript服务器环境。在此简单叙述一下这样做的原因:
- V8引擎很快
- V8专注Web,所以在处理HTTP,DNS,TCP等方面特别擅长
- 大多数Web开发人员都会JavaScript
用一句话来说就是Node.js是一个事件驱动的服务器端JavaScript环境。
也许有人会问了,什么是服务器端的JavaScript?
JavaScript与Web页面交互就是通常所称的客户端JavaScript,因为它发生在浏览器或者说客户端。服务器端JavaScript发生在把页面发送给浏览器之前的服务器上。
安装Node.js
(因为我的电脑win7,个人比较穷,也没有苹果电脑,后台开发能力也只能说略懂,也没有在Unix操作系统上测试过,所以在此申请一下,我的操作全部都是在微软平台上。不好意思啊)
到nodejs官网首页 下载相应的版本安装即可,很简单的
验证Node.js是否安装正确
- 打开Node.js命令提示窗口
- 输入1+1
- 看一下是否界面显示2

第一个简单demo
1、创建server.js,代码如下
var http = require('http');
http.createServer(function (request, response) {//创建服务器
response.writeHead(200, { 'Content-Type': 'text/plain' });//回传到客户端的头信息
response.end('Hello World! ');//回传到客户端的信息
}).listen(3000,'127.0.0.1');//第一个参数为端口 第二个参数为主机地址
console.log('server running at http://127.0.0.1:3000');
2、开始--运行 cmd(也就是打开命令提示符窗口) 把当前路径cd转到server.js所在的目录
3、执行node server(本来是执行node server.js 但因为是js文件,所以默认可以省略.js)

4、打开浏览器,输入网址:http://127.0.0.1:3000 会发现浏览器显示hello world
在此备注一下:
- 即使你只是修改js里面的哪怕一个字符,如果你想看到修改后的效果,那就必须得重新编译也就是说重新运行node命令
- 要想停止服务器运行并返回终端,可以按ctrl+c(这个命令很方便的)
- Node.js是运行的v8引擎上的,v8是同Google开发的开源的JavaScript引擎。事实上Node.js是个编程平台
- 关于Node.js,并发的含义是一次做多件事件的能力
NPM(Node Package Manager)Node包管理器
npm允许开发人员在应用程序中创建、共享、重用模块。说句通俗一点的话,包就是一个功能模块,也确实是node.js的一个很有特色的地方,为开发人员提供了很多便利。
通过使用模块可以快速的给应用程序添加许多功能。模块通常可以为开发人员除去常见的困难。
模块就是可重用的代码库
模块相关demo
安装模块
npm install [module_name]
使用模块
var module=require('module');
demo具体步骤:
1、创建foo.js,代码如下
var _ = require('underscore');
_.each([1, 2, 3], function (num) {
console.log('underscore.js says ' + num);
});
2、打开命令提示符,将目录转到foo.js所在目录(文章下面的demo 这个步骤也是必须的 但我省略不写了哦)
3、运行npm install underscore 安装underscore包之后命令提示符中将显示相应的信息 并且在foo.js所在的目录下多一个node_modules文件夹,node_modules文件夹下有underscore包文件
4、运行node foo

如何找模块
在终端直接使用npm命令行工具来搜索 也就是npm search [模块的名称] 如果有多个关键字的话可用空格分开
提示:因为node.js允许大家只有有一个账户就可以上传包,也就是说任何人都可以是node.js模块的作者,所以尽管模块可通过npm获得,但并不代表它是得到良好测试或者说是稳定的,请使用模块的下载量和项目的问题数量作为模块的可靠性和成熟度的大致指南。
模块的安装方式
有两种方式
- 本地安装 npm install [module_name]
- 全局安装 npm install -g [module_name]
全局安装意味着可以在文件系统的任何位置运行它。
本地安装模块意味着模块会被安装在项目内名为node_modules的文件夹中,而且它只可在该项目中使用。
全局安装模块意味着模块可在系统的任何一个地方使用。
作为 一条经验法则,请本地安装Node.js模块。
如何找模块文件
命令:npm docs [module_name]
这个命令执行之后会打开浏览器并进入模块作者所提供的文档页面,不信你可以在终端执行
npm docs underscore
通过运行如下命令查看项目的bug,这会打开浏览器并进入模块作者所提供的问题页面
npm bugs underscore
事实上还有一条查看源码命令(但是我电脑老是没法打开 提示说权限不够)
npm edit underscore
package.json
在C#中使用using来引用外部程序集,而在node.js中是使用package.json来指定依赖关系。npm允许开发人员使用package.json文件来指定在应用程序中要用的模块,并且通过单个命令来安装它们:npm install
可想而知这样的方式有哪些好处:
- 无需一个一个地安装模块
- 其实开发人员可以很容易的安装你的应用程序
- 应用程序的依赖关系存储在一个单一的地方
package.json相关demo
1、建立一个foo.js文件,代码如下所示:
var _ = require('underscore');
_.each([1, 2, 3], function (num) {
console.log('underscore.js says ' + num);
});
2、在foo.js同目录下建立一个package.json的文件,代码如下所示
{
"name":"example02",
"version":"0.0.1",
"dependencies":{
"underscore":"~1.2.1"
}
}
3、在终端执行npm install 这时候将会看到underscore库安装在node_modules文件夹下
建议:即使应用只需要安装一个模块,还是强烈建议使用package.json文件来管理Node.js模块
未完待续(考虑到篇幅太长的问题 后续文章将继续探讨)
Node实践之一的更多相关文章
- Node实践之二
先从一个简单的demo说起,用cmd打开命令提示符,输入echo Hello,大家是不是看到终端上显示出了Hello字样,事实上这就是一个简单的事件. 回到正题,相信提到node.js,免不了让人想起 ...
- 一个月时间整理《深入浅出Node.js》
今天终于把朴灵老师写的<深入浅出Node.js>给学习完了, 这本书不是一本简单的Node入门书籍,它没有停留在Node介绍或者框架.库的使用层面上,而是从不同的视角来揭示Node自己内在 ...
- 深入浅出Nodejs读书笔记(转)
Node简介 这一章简要介绍了Node,从中可以了解Node的发展历程及其带来的影响和价值. 为什么叫Node?起初,Ryan Dahl称他的项目为web.js,就是一个Web服务器,但是项目的发展超 ...
- 五年 Web 开发者 star 的 github 整理说明
欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:樊东东 前端从业几年,积累了不少github开源库. 有时候想查阅以前star的库,但不好找,github大多库都是英文说明,对中文 ...
- nodejs图片总结
今天终于把朴灵老师写的<深入浅出Node.js>给学习完了, 这本书不是一本简单的Node入门书籍,它没有停留在Node介绍或者框架.库的使用层面上,而是从不同的视角来揭示Node自己内在 ...
- 深入浅出Nodejs读书笔记
深入浅出Nodejs读书笔记 转:http://tw93.github.io/2015-03-01/shen-ru-qian-chu-nodejs-reading-mind-map.html cate ...
- babeljs源码
babel.min.js!function(e,t){"object"==typeof exports&&"object"==typeof mo ...
- 基于 Angularjs&Node.js 云编辑器架构设计及开发实践
基于 Angularjs&Node.js 云编辑器架构设计及开发实践 一.产品背景 二.总体架构 1. 前端架构 a.前端层次 b.核心基础模块设计 c.业务模块设计 2. Node.js端设 ...
- [转] Node.js 服务端实践之 GraphQL 初探
https://medium.com/the-graphqlhub/your-first-graphql-server-3c766ab4f0a2#.n88wyan4e 0.问题来了 DT 时代,各种业 ...
随机推荐
- Unable to determine if the owner (Domain\UserName) of job JOB_NAME has server access
早上巡检的的时候,发现一数据库的作业报如下错误(作业名等敏感信息已经替换),该作业的OWNER为一个域账号: JOB RUN: 'JOB_NAME' was run on 2016-6-1 at 7: ...
- 深入解析Windows操作系统笔记——CH2系统结构
2.系统结构 本章主要介绍系统的总体结构,关键部件之间的交互,以及运行在什么环境. 2.系统结构 2.1 需求和设计目标 2.2 操作系统模型 2.3 总体结构 2.3.1 可移植性 2.3.2 对称 ...
- PyCharm创建virtualenv方法
Python的版本众多,在加上适用不同版本的Python Package.这导致在同时进行几个项目时,对库的依赖存在很大的问题.这个时候就牵涉到对Python以及依赖库的版本管理,方便进行开发,vir ...
- 云计算与 OpenStack - 每天5分钟玩转 OpenStack(14)
“云计算” 算是近年来最热的词了.现在 IT 行业见面不说这三个字您都不好意思跟人家打招呼. 对于云计算,学术界有各种定义,大家有兴趣可以百度一下. CloudMan 这里主要想从技术的角度谈谈对云计 ...
- 通过JazzyViewPager来实现Fragment页面间的动画切效果
JazzyViewPager 开源项目地址: https://github.com/jfeinstein10/JazzyViewPager 其实实现它还是蛮简单的,有两个关键点,一是使用扩展Fragm ...
- Source Insight常用功能设置
熟悉工具的使用能在一定程度上提高工作效率,但工具永远只是工具,大家要把重点放在内功的修炼上. 符号导航 符号(变量.宏定义.结构定义.枚举.函数等等)在SI 中的检索非常方便.Ctrl+鼠标左键或Ct ...
- linux环境变量的设置
linux中环境变量分为系统环境变量和用户环境变量(和window中一样),系统环境变量对所有系统用户都有效,用户环境变量只对当前用户有效,我们以ubuntu为例说明 用户环境变量 用户环境变量通常存 ...
- WSTMall网站系统最新官方版
WSTMall V1.0是在thinkphp 的经典版本3.2.2基础上进行优化开发的, TP 3.2.2不是thinkphp的一个最新的版本,却是thinkphp最金典的一个版本,正所谓站在巨人的肩 ...
- [转]django自定义表单提交
原文网址:http://www.cnblogs.com/retop/p/4677148.html 注:本人使用的Django1.8.3版本进行测试 除了使用Django内置表单,有时往往我们需要自定义 ...
- [转]NET Core中实现一个Token base的身份认证
本文转自:http://www.cnblogs.com/Leo_wl/p/6077203.html 注:本文提到的代码示例下载地址> How to achieve a bearer token ...