文档章节

Node.js初入门

unibigbear
 unibigbear
发布于 2016/05/16 16:33
字数 1785
阅读 15
收藏 1
点赞 2
评论 0

Node.js是运行在服务端的JavaScript。它是基于Google的V8引擎。它是事件驱动的、非阻塞I/O模型的、轻量、高效的。

 

很概念是不是?那就用一句简单的话:它现在很流行!

 

安装配置Node.js

 

1、从Node.js的官网中下载对应的安装程序,按照提示安装。

2、配置环境变量PATH(最新版本已经帮你配置好了)

3、运行node –version

 

创建Node.js应用

 

第一个Node.js程序

 

第一个程序一般来说就是hello world了。nodejs的官网正好给我们提供了样例hello world,而且还是server类型的。

1、创建一个文件夹,如node-example之类的。

2、创建文件first-node.js。

3、从nodejs.org上复制相关代码。

 

 

粘贴到first-node.js中。

在命令行中运行node first-node.js。

在浏览器中输入http://localhost:3000/

 

关于NPM

 

NPM是随同NodeJS一起安装的包管理工具。你可以通过npm命令从NPM服务器上下载第三方包、程序到本地使用,也可以把自己写的包、程序上传到NPM服务器给他人使用。

 

常用的命令:

 

 

 

package.json文件包含项目详细信息的描述。具体可以参考阮一峰的《package.json文件》一文。

 

工程目录

 

NodeJS并没有官方要求目录结构应该是怎么样的(我是没有找到,如果有找到的话烦请告知)。但很多第三方的包的程序目录至少看上去像下面这样的。

 

 

· bin 存放启动项目的脚本文件,默认www

· node_modules 存放所有的项目依赖库

· src 项目的代码

· tests 测试代码

· index.js 可以是项目的入口

· package.json

 

了解API

 

NodeJs给我们提供了丰富API。受《七天学会NodeJS》启发,把API分为以下几类,方便查看学习。

 

文件操作类

 

· Buffer(块):用来创建一个专门存放二进制数据的缓存区

· Stream(流):一个抽象接口,Node 中有很多对象实现了这个接口。存在4· 种流类型,分别是Readable(可读操作)、Writable(可写操作)、Duplex(可读可· 写操作)和Transform(操作被写入数据,然后读出结果)。同时,所有的Stream对象都是EventEmitter的实例。

· File System(文件系统):该模块提供本地文件的读写能力,基本上是POSIX文件操作命令的简单包装。这个模块几乎对所有操作提供异步和同步两种操作方式。

· Path(路径):该模块包含一套用于处理和转换文件路径的工具集。

· zlib:该模块提供了数据压缩和解压的功能。

 

网络操作类

 

· HTTP:提供HTTP服务器或客户端功能。

· HTTPS:处理HTTPS协议相关。

· URL:该模块用于生成和解析URL。

· Query Strings:模块用于实现URL参数字符串与参数对象的互相转换。

· Net:模块封装了异步网络功能,提供了一些方法来创建服务器和客户端(称之为流)。

· DNS(域名服务):处理DNS相关。

· TLS/SSL:模块使用 OpenSSL 来提供传输层安全协议(Transport Layer Security)和/或安全套接层(Secure Socket Layer):加密过的流通讯。

· UDP/Datagram:数据报套接字。

 

进程管理类

 

· Process(进程):process对象是Node的一个全局对象,提供当前Node进程的信息。它可以在脚本的任意位置使用,不必通过require命令加载。该对象部署了EventEmitter接口。

· Child Process(子进程):该模块用于新建子进程。子进程的运行结果储存在系统缓存之中(最大200KB),等到子进程运行结束以后,主进程再用回调函数读取子进程的运行结果。

· Cluster(集群):集群模块允许你方便地创建一个共享服务器端口的进程网络。

 

基本

 

· Crypto(加密):提供一些加密的方法。

· Errors:提供Error相关。

· Events(事件):Events模块是Node对“发布/订阅”模式(publish/subscribe)的实现。一个对象通过这个模块,向另一个对象传递消息。该模块通过EventEmitter属性,提供了一个构造函数。

· Globals(全局对象):它及其所有属性都可以在程序的任何地方访问,即全局变量。

· Modules(模块):模块是Node.js 应用程序的基本组成部分,文件和模块是一一对应的。换言之,一个Node.js文件就是一个模块,这个文件可能是JavaScript代码、JSON或者编译过的C/C++扩展。

· Utilities(实用工具): 是一个Node.js 核心模块,提供常用函数的集合,用于弥补核心JavaScript 的功能 过于精简的不足。

· Punycode(编码系统):处理编码。

· Timers(定时器):所有的定时器函数都是全局变量。

· Domain(域):Domain提供了一种方式,即以一个单一的组的形式来处理多个不同的IO操作。如果任何一个注册到domain的事件触发器或回调触发了一个‘error’事件,或者抛出一个错误,那么domain对象将会被通知到。而不是直接让这个错误的上下文从`process.on(’uncaughtException’)’处理程序中丢失掉,也不会致使程序因为这个错误伴随着错误码立即退出。

· Readline(逐行读取):Readline程序允许逐行读取一个流内容。

· OS(系统):提供一些基本的操作系统相关函数。

· String Decoder(字符串解码器):这个模块将一个 Buffer 解码成一个字符串。

 

其他

 

· Assertion Testing(断言):用于编写程序的单元测试用例,通过require(‘assert’)调用。

· C/C++ Addons(C/C++ 扩展):Addons插件就是动态连接库。它类似胶水,将c、c++和Node粘贴起来。

· Command Line Options:命令行的选项。

· Console(控制台):类似于大部分 Web 浏览器提供的 console 对象函数。

· Debugger(调试器):以debug参数启动Node。通过脚本的源代码中放置 debugger; 语句,您便可启用一个断点。

· REPL(命令行交互):一个 Read-Eval-Print-Loop(REPL,读取-执行-输出循环)既可用于独立程序也可很容易地被集成到其它程序中。REPL 提供了一种交互地执行 JavaScript 并查看输出的方式。它可以被用作调试、测试或仅仅尝试某些东西。

· TTY(终端):模块提供了 tty.ReadStream 和 tty.WriteStream 类。在大部分情况下,您都不会需要直接使用此模块。

· V8:V8相关。

· VM(虚拟机):虚拟机相关。

由于上传附件及文字限制,部分图片、文字显示不了,详情请见:http://mp.weixin.qq.com/s?__biz=MzI5ODI3NzY2MA==&mid=100000454&idx=2&sn=0ad3f2fb26e52c220ac27941cfc7cc5b#rd

欢迎大家一起交流。

扫描以下二维码,获取更多更精美文章!(扫码关注有意向不到的惊喜的哦!!)

关注我们微信订阅号( uniguytech100) 与服务号(uniguytech),获取更多更精美文章!

也欢迎加入【大家技术网讨论QQ群】,群号码:256175955,请备注你个人的介绍!让我们一起聊聊it的那些事!

本文转载自:http://mp.weixin.qq.com/s?__biz=MzI5ODI3NzY2MA==&mid=100000454&idx=2&sn=0ad3f2fb26e52c220ac27941c...

共有 人打赏支持
unibigbear
粉丝 1
博文 70
码字总数 5874
作品 0
闵行
《Node.js开发指南》书评汇总

刚查了下库存,发现订阅《Node.js开发指南》的读者大增,这是为什么呢?看了下近期本书在豆瓣的评论,口碑很好,现将豆瓣的书评汇总如下: ----------------------------------------------...

生气的散人 ⋅ 2012/10/15 ⋅ 0

Node.js开发入门—notepad++ for Node.js

对于Node.js开发,论IDE的话,Webstorm是不二的选择,但它是收费的(可免费使用30天)。一开始,我们先将就一下,使用notepad++来编写Node.js应用。这样做还有一大好处:没有关于Node.js的代...

foruok ⋅ 2015/09/12 ⋅ 0

新手如何快速入门node.js

我当初学的时候,是在大大们的指导下开始学习的,用了3天搞定大大们给的任务。下面我就把这个经历分享出来,让大家借鉴一下。欢迎吐槽~~ 任务如下: 根据Node js 开发入门教程第五章的一个使...

rin9958 ⋅ 2016/03/28 ⋅ 0

NodeJs从入门到高手常用资源查询

Node.js 入门 《快速搭建 Node.js 开发环境以及加速 npm》 http://fengmk2.com/blog/2014/03/node-env-and-faster-npm.html 《Node.js 包教不包会》 https://github.com/alsotang/node-lesso......

孟飞阳 ⋅ 2016/07/14 ⋅ 0

请问有没有介绍Node.js生产开发的书或博客

刚开始入Web领域,个人感觉看了两本入门的书,都是偏教学入门性质的。只能做到了解Nodejs,并不能直接在工作中使用。 尤其是Web开发,还要考虑到安全问题。初入Web领域,很多都不懂。 请问有...

PentiumII ⋅ 2014/05/19 ⋅ 5

nodejs资料索引

为什么要用node(说服你老板使用nodejs) convincing_the_boss links http://www.ibm.com/developerworks/cn/ 搜索“Node.js”和“BlueMix”关键字,有不少入门级的文章。 https://www.ibmdw....

cyper ⋅ 2014/03/29 ⋅ 0

Node.js VS PHP:Web 开发的史诗级对决,你支持谁?

现在,Web开发公司和开发人员可以选择多种技术栈来构建Web应用程序。早期网络发展,不同的技术被用于前端和后端开发。但是,随着Node.js的发布,布局发生了变化,因为它允许开发人员使用 Ja...

uzv80px5v412ne ⋅ 2017/12/29 ⋅ 0

推荐书籍系列(4) -- node.js&docker

最近学习了很多技术包括docker、nodejs、mongodb.这些都是近几年比较火的技术。也代表着技术发展的方向。作为一个程序员,一定要与时俱进,否者会跟不上时代。别人都在用docker,你还在用一些...

刘新全 ⋅ 2016/03/02 ⋅ 0

快速使用node.js进行web开发

原文:http://www.cnblogs.com/myzhibie/p/4458584.html?utmsource=tuicool&utmmedium=referral 首先关于node.js的学习,这里推荐一本比较好的教程,nodejs web开发指南,该书通俗易懂地将nod...

adbug ⋅ 2016/10/09 ⋅ 0

去你的lua和go,哥发现node.js原来才是最爱~

Lua屌丝用的,Go只是一个传说,他指引我找到了node.js 整理一下node.js的学习资料 Node.js 究竟是什么 http://blog.jobbole.com/1254/ Node入门 http://www.nodebeginner.org/index-zh-cn.ht...

顺顺利利 ⋅ 2013/03/28 ⋅ 12

没有更多内容

加载失败,请刷新页面

加载更多

下一页

服务网关过滤器

过滤器作用 我们的微服务应用提供的接口就可以通过统一的API网关入口被客户端访问到了。但是,每个客户端用户请求微服务应用提供的接口时,它们的访问权限往往都需要有一定的限制,系统并不会...

明理萝 ⋅ 8分钟前 ⋅ 1

【2018.06.21学习笔记】【linux高级知识 14.1-14.3】

14.1 NFS介绍 14.2 NFS服务端安装配置 14.3 NFS配置选项

lgsxp ⋅ 17分钟前 ⋅ 0

Day18 vim编辑模式、命令模式与练习

编辑模式 命令模式 :nohl 不高亮显示 :x与:wq类似,如果在更改文件之后操作,两者效果一样;如果打开文件,没有任何操作; :wq会更改mtime,但是:x不会。 练习题 扩展 vim的特殊用法 ht...

杉下 ⋅ 21分钟前 ⋅ 0

Enum、EnumMap、EnumSet

1、Enum 不带参数 public enum Car { AUDI { @Override public int getPrice() { return 25000; } }, MERCEDES { ......

职业搬砖20年 ⋅ 21分钟前 ⋅ 0

Java中的锁使用与实现

1.Lock接口 锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源。 在Lock出现之前,java程序是靠synchronized关键字实现锁功能的,而Java SE5之后,...

ZH-JSON ⋅ 23分钟前 ⋅ 0

线程组和 ThreadLocal

前言 在上面文章中,我们从源码的角度上解析了一下线程池,并且从其 execute 方法开始把线程池中的相关执行流程过了一遍。那么接下来,我们来看一个新的关于线程的知识点:线程组。 线程组 ...

猴亮屏 ⋅ 24分钟前 ⋅ 0

相对路径和绝对路径

基本概念   文件路径就是文件在电脑中的位置,表示文件路径的方式有两种,相对路径和绝对路径。在网页设计中通过路径可以表示链接,插入图像、Flash、CSS文件的位置。   物理路径:物理路...

临江仙卜算子 ⋅ 28分钟前 ⋅ 0

消息队列属性及常见消息队列介绍

什么是消息队列? 消息队列是在消息的传输过程中保存消息的容器,用于接收消息并以文件的方式存储,一个队列的消息可以同时被多个消息消费者消费。分布式消息服务DMS则是分布式的队列系统,消...

中间件小哥 ⋅ 30分钟前 ⋅ 0

java程序员使用web3j进行以太坊开发详解

如何使用web3j为Java应用或Android App增加以太坊区块链支持,教程内容即涉及以太坊中的核心概念,例如账户管理包括账户的创建、钱包创建、交易转账,交易与状态、智能合约开发与交互、过滤器...

笔阁 ⋅ 30分钟前 ⋅ 0

vim编辑模式、vim命令模式

vim编辑模式 使用vim filename 进入的界面是一般模式,在这个模式下虽然我们能够查看,复制,剪切,粘贴,但是不能编辑新的内容,如何能直接写入东西呢?这就需要进入编辑模式了,从一般模式...

李超小牛子 ⋅ 33分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部