【Node.js】初识Node.js

  因组里项目需要,我和另外一名同事要学习Node.js。之前接触过Javascript,都是前台处理html时用到,现在要用Javascript做后端,学习Node.js,用一段时间专心学习一门新技术,而且还有项目实战锻炼,还不错。

一.  Node.js架构

  

  1. Node.js跨平台支持*nix与Windows得益于Libuv中间层,通过它去调用不同操作系统的底层操作。

  2.
Node.js底层由C++实现,因此可以编写C++扩展模块,经封装后由JS调用,这样可以解决需要提升性能时(例如频繁的位运算,JavaScript的一个弱点是位运算,由JS来做性能低),就可以编写C++扩展模块,与JS配合提升性能。

二. Node.js特点

  1. 单线程

    优点:无需像多线程编程在意状态的同步问题,因此无死锁问题,也避免了线程上下文切换带来的性能开销

  2. 异步I/0(非阻塞I/0)

    优点:让单线程远离阻塞,更好地利用CPU

  3. 事件驱动

三. 初学网络编程

  Node.js标准库提供了http模块,其中封装了一个高效的HTTP服务器和一个简易的HTTP客户端。http.server是一个基于事件的HTTP服务器,核心由Node.js下层C++部分实现,接口由Javascript封装,兼顾高性能与简易性。

  举个经典的小例子,


 1 //http.js
2 var http = require(‘http‘);
3 var url = require(‘url‘);
4 var querystring = require(‘querystring‘);
5
6 //for example, url: http://127.0.0.1:3000/p/a/t/h?query=string
7
8 var getReqInfo = function(req){
9 //get req.url
10 console.log("req.url: " + req.url);
11
12 //get path
13 var path = (url.parse(req.url)).pathname;
14 console.log("path: " + path);
15
16 //get querystring
17 var query = url.parse(req.url).query;
18 console.log(querystring.parse(query));
19 }
20
21 http.createServer(function(req, res){
22
23 getReqInfo(req);
24
25 res.writeHead(200, {‘Content-Type‘: ‘text/plain‘});
26 res.end(‘Hello world!\n‘);
27 }).listen(3000);
28
29 console.log(‘now we are listening 3000 port‘);

   用户通过输入URL(http://127.0.0.1:3000/p/a/t/h?query=string)访问时,就可以获取URL中的参数(这里指reqest
header的第一行信息),并作出响应。结果如下:

   

   这里创建的是HTTP服务器,如果创建Https服务器,相比http,需要多提供一个参数,包含私钥和签名证书,如server.keyserver.crt。客户端在发起安全连接前会去获取服务器端的证书,并通过CA的证书验证服务器端证书的真伪。

四. Node.js学习资料

  1. 《Node.js入门指南》,推荐,适合入门

  2. 《深入简出Node.js》,有深度,推荐

五. 其他备忘

  1. IDE

    我用的是Vim,安装插件(nodejscomplete和JsHint)后,可以实现代码提示及语法错误检查。

                                                              2014.6.4上午

【Node.js】初识Node.js,布布扣,bubuko.com

时间: 2024-10-31 22:59:15

【Node.js】初识Node.js的相关文章

.NET程序员也学Node.js——初识Node.js

清明在石门休了八天假,一眨眼,4月又到中旬了...看到.NET在天朝彻底沦陷而又无能为力,我开始尝试去学习一些新的东西来充实自己,我自然是打死不会去学java的,没有为什么,于是乎,最近开始学习一些前端的开发技术,就让学习笔记来记录一下我的学习历程并同大家一起分享吧! 申明:我只是业余学着好玩的,顺便扩展一下视野,各位广大.NET同行不要被我带沟里去了,当然如果你想从事移动前端或者全栈开发的话还是有必要学习一下的. Node.js简介 Node.js 的推出,不仅从工程化的角度自动化掉更多琐碎费

Node.js之路【第一篇】初识Node.js

什么是Node.js 1.Node.js就是运行在服务端的JavaScrip. 2.Node.js是一个基于Chrome JavaScrip运行时简历的一个平台. 3.Node.js是一个非阻塞I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快. 看下官网的介绍: Node.js is a platform built on Chrome’s JavaScript runtime for easily building fast, sc

node.js初识01

1.对于node.js的安装在这里就不做过多的介绍了,安装成功后,可以通过cmd 输入node -v查看node的版本号,如图所示 2.开始我们的hello world,通过cmd进入所属文件夹,输入node 01.js //require表示引入包 var http = require("http"); //创建服务 var server = http.createServer(function(req,res){ //req表示请求,res表示响应 //请求头 状态码,文件类型,字

OSChina 开源周刊第三十三期 —— Node.js 和 io.js 准备合作!

每周技术抢先看,总有你想要的! 开源资讯 Node.js 和 io.js 准备合作!合久必分,分久必合? Nervana 开源深度学习软件,性能超 Facebook.Nvidia产品 B 站建开源工作组 多 APP 使用其开源项目 Android 新开发技术 Sky:Dart 开发 Android 应用 谷歌红帽及 VMware 宣布支持 CoreOS 容器 Oracle 宣布 Java 7 生命周期终结 Java 9 公布发行计划,明年 9 月发布正式版 IO.js 2.0.0 发布,服务器

Angular、React.js 和Node.js到底选谁?

为了工作,程序员选择正确的框架和库来构建应用程序是至关重要的,这也就是为什么Angular和React之间有着太多的争议.Node.js的出现,让这场战争变得更加复杂,虽然有选择权通常是一件很棒的事情,但在这种情况下,对于到底应该选择哪种框架,程序员之间并没有一致的意见,每个人都有不同的想法,并且听起来都相当合理. 为了让一切归于和谐,本文就来探究一下这三大框架各自的优缺点. 基础知识部分: 在我们深入研究这三种框架的具体细节之前,先来了解一些前情提要.yigouyul22.com xucaiz

利用Node 搭配uglify-js压缩js文件,批量下载图片到本地

Node的便民技巧-- 压缩代码 下载图片 压缩代码 相信很多前端的同学都会在上线前压缩JS代码,现在的Gulp Webpack Grunt......都能轻松实现.但问题来了,这些都不会,难道就要面对几十个JS文件一遍遍来回“复制-压缩-创建-粘贴”,这样太不人性化了. 于是可以借助Node + uglify-js 轻松实现.(前提你会点node操作) 1.首先看一下目录: |--uglifyJS |--js |--test1.js |--test2.js |--uglify.js   //这

node,js和vue.js的联合使用的小例子

1.本博客内容转发自http://www.cnblogs.com/zl-127/p/6543973.html. 2.配置好 node js环境 创建app.js文件,代码如下 var http = require("http"); var fs = require('fs'); var url = require('url'); http.createServer(function(request, response) { // 解析请求,包括文件名 var pathname = ur

使用Backbone.js, ExpressJS, node.js, MongoDB的web应用样板工程

这是web应用的一个完整的样板工程,用到了Backbone.js & Marionette, node.js & ExpressJS,MongoDB & Moogoose, Handlebars, Grunt.js, Bower和Browserify! 我建立了一个超级基础的单页面应用程序(SPA),就是一个简单的通讯录管理器, 但麻雀虽小,五脏俱全.我写这篇文章的目的是介绍一下这个应用所用到的整个技术栈:后端,数据,前端,工具和测试.主要包括下面这些技术: 后端: node.js

使用 nvm 安装 node.js 和 io.js

来源:https://github.com/creationix/nvm#install-script brew install nvm source ... echo "..." >> ~/.profile nvm install stable # 安装最新的node.js nvm install iojs # 安装最新的io.js Node Version Manager Usage: nvm help                              Show