`
jorwen_fang
  • 浏览: 51641 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

node.js学习笔记(一):基础

阅读更多

1.HelloWorld 
方法1,直接运行 
安装好node js后,在cmd命令窗口输入node. 
然后你可以直接输入:console.log('Hello World'); 

方法2,执行js 
或者把他写在一个helloworld.js里,cmd模式输入(注意看到$,不是nodejs命令,仅仅普通cmd命令): 
$ node helloworld.js 

你都能看到输出结果 

支持变量写法 
console.log('%s: %d', 'Hello', 25); 

另外直接作为字符串执行:$ node -e "console.log('Hello World');"

 

 

2.建立Http服务器

//app.js
1.var http = require('http');
2.http.createServer(function (req, res)
3.{
4.res.writeHead(200, {'Content-Type''text/html'});
5.res.write('<h1>Node.js</h1>');
6.res.end('<p>Hello World</p>');
7.}).listen(3000);
8.console.log("HTTP server is listening at port 3000.");
接下来运行node app.js命令,打开浏览器访问http://127.0.0.1:3000 

 

 

Node.js 只有在第一次引用到某部份时才会去解析脚本文件,以后都会直接访问内存,避免重复载入Node.js的这种设计虽然有利于提高性能,却不利于开发调试,因为我们在开发过程中总是希望修改后立即看到效果,而不是每次都要终止进程并重启。 
supervisor 可以帮助你实现这个功能,它会监视你对代码的改动,并自动重启Node.js。 
使用方法很简单,首先使用npm 安装supervisor: 
$ npm install -g supervisor 
接下来,使用supervisor 命令启动app.js: 
$ supervisor app.js
 

3.非阻塞单线程异步编程

让我们看看在Node.js 中如何用异步的方式读取一个文件,下面是一个例子: 
//readfile.js
01.var fs = require('fs');
02.fs.readFile('file.txt''utf-8'function (err, data)
03.{
04.if (err)
05.{
06.console.error(err);
07.else
08.{
09.console.log(data);
10.}
11.});
12.console.log('end.');
输出: 
end. 
Contents of the file. 

其中的function就是回调函数,不会阻塞等待的
1.var fs = require('fs'); 异步写法。当然这个读取文件也有同步写法,如下:
2.vardata = fs.readFileSync('file.txt''utf-8');
3.console.log(data);
4.console.log('end.');
输出: 
Contents of the file. 
end.
 

4.模块

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

1. 创建模块 
module.js
01.var name;
02.exports.setName = function (thyName)
03.{
04.name = thyName;
05.};
06.exports.sayHello = function ()
07.{
08.console.log('Hello ' + name);
09.};
在同一目录下创建getmodule.js,内容是: 
getmodule.js
1.var myModule = require('./module');
2.myModule.setName('BYVoid');
3.myModule.sayHello();
运行node getmodule.js,结果是: 
Hello BYVoid 

在以上示例中,module.js 通过 exports 对象把setName 和 sayHello 作为模块的访 
问接口,在getmodule.js 中通过 require('./module') 加载这个模块,然后就可以直接访 
问module.js 中 exports 对象的成员函数了。 

2.单例加载
1.varhello1 = require('./module');
2.hello1.setName('BYVoid');
3. 
4.var hello2 = require('./module');
5.hello2.setName('BYVoid 2');
6. 
7.hello1.sayHello();
运行后发现输出结果是 Hello BYVoid 2,这是因为变量 hello1 和 hello2 指向的是 
同一个实例,因此 hello1.setName 的结果被hello2.setName 覆盖,最终输出结果是 
由后者决定的。 

3.覆盖exports 
hello.js
01.function Hello()
02.{
03.var name;
04.this.setName = function (thyName)
05.{
06.name = thyName;
07.};
08.this.sayHello = function ()
09.{
10.console.log('Hello ' + name);
11.};
12.}
13.;
14.module.exports = Hello;
这样就直接拿对象操作,不间接通过Module:
1.var Hello = require('./hello');
2.hello = new Hello();
3.hello.setName('BYVoid');
4.hello.sayHello();

5.包

包是一个目录,其中包含一个JSON 格式的包说明文件package.json。严格符合CommonJS 规范的包应该具备以下特征: 
 package.json 必须在包的顶层目录下; 
 二进制文件应该在bin 目录下; 
 JavaScript 代码应该在lib 目录下; 
 文档应该在doc 目录下; 
 单元测试应该在test 目录下。 

1.最简单的例子: 
somepackage/index.js
1.exports.hello = function() {
2.console.log('Hello.');
3.};
getpackage.js
1.varsomePackage = require('./somepackage');
2.somePackage.hello();
使用这种方法可以把文件夹封装为一个模块,即所谓的包。包通常是一些模块的集合,在模块的基础上提供了更高层的抽象,相当于提供了一些固定接口的函数库。通过定制package.json,我们可以创建更复杂、更完善、更符合规范的包用于发布。 

2.package.json 
在前面例子中的somepackage 文件夹下,我们创建一个叫做package.json 的文件,内容如下所示:
1.{
2."main" "./lib/interface.js"
3.}
然后将index.js 重命名为interface.js 并放入lib 子文件夹下。以同样的方式再次调用这个 
包,依然可以正常使用。 
package.json 是CommonJS 规定的用来描述包的文件,完全符合规范的package.json 文件应该含有以下字段。 
 name:包的名称,必须是唯一的,由小写英文字母、数字和下划线组成,不能包含空格。 
 description:包的简要说明。 
 version:符合语义化版本识别①规范的版本字符串。 
 keywords:关键字数组,通常用于搜索。 
 maintainers:维护者数组,每个元素要包含 name、email (可选)、web (可选)字段。 
 contributors:贡献者数组,格式与maintainers相同。包的作者应该是贡献者数组的第一个元素。 
 bugs:提交bug的地址,可以是网址或者电子邮件地址。 
 licenses:许可证数组,每个元素要包含 type (许可证的名称)和 url (链接到许可证文本的地址)字段。 
 repositories:仓库托管地址数组,每个元素要包含 type  (仓库的类型,如 git )、url (仓库的地址)和 path (相对于仓库的路径,可选)字段。 
 dependencies:包的依赖,一个关联数组,由包名称和版本号组成。 

实例:
01.{
02."name""mypackage",
03."description""Sample package for CommonJS. This package demonstrates the required elements of a CommonJS package.",
04."version""0.7.0",
05."keywords": [
06."package",
07."example"
08.],
09."maintainers": [
10.{
11."name""Bill Smith",
12."email""bills@example.com",
13.}
14.],
15."contributors": [
16.{
17."name""BYVoid",
18."web""http://www.byvoid.com/"
19.}
20.],
21."bugs": {
22."mail""dev@example.com",
24.},
25."licenses": [
26.{
27."type""GPLv2",
29.}
30.],
31."repositories": [
32.{
33."type""git",
35.}
36.],
37."dependencies": {
38."webkit""1.2",
39."ssl": {
40."gnutls": ["1.0""2.0"],
41."openssl""0.9.8"
42.}
43.}
44.}

 

 

6.调试

Node.js 支持命令行下的单步调试。在命令行下执行node debug xxx.js,将会启动调试工具. 

Node.js 调试命令 
run  执行脚本,在第一行暂停 
restart  重新执行脚本 
cont, c  继续执行,直到遇到下一个断点 
next, n  单步执行 
step, s  单步执行并进入函数 
out, o  从函数中步出 
setBreakpoint(), sb()  在当前行设置断点 
setBreakpoint(‘f()’), sb(...)  在函数f的第一行设置断点 
setBreakpoint(‘script.js’, 20), sb(...)  在script.js 的第20行设置断点 
clearBreakpoint, cb(...)  清除所有断点 
backtrace, bt  显示当前的调用栈 
list(5)  显示当前执行到的前后5行代码 
watch(expr)  把表达式 expr 加入监视列表 
unwatch(expr)  把表达式 expr 从监视列表移除 
watchers  显示监视列表中所有的表达式和值 
repl  在当前上下文打开即时求值环境 
kill  终止当前执行的脚本 
scripts  显示当前已加载的所有脚本 
version  显示V8 的版本 


远程调试: 
node --debug[=port] xxx.js 

开发工具调试: 
如果开发工具支持,可以在开发工具调试,比如eclipse(我会尝试idea是否可行) 

使用node-inspector 调试Node.js: 
使用 npm install -g node-inspector 命令安装node-inspector,然后在终端中通过node --debug-brk=5858 xxx.js 命令连接你要除错的脚本的调试服务器 
启动node-inspector:$ node-inspector 

在浏览器中打开http://127.0.0.1:8080/debug?port=5858,即可显示出优雅的Web 调试工具
  • 大小: 89.6 KB
分享到:
评论

相关推荐

    Node.js学习笔记.md

    以上内容总结了Node.js学习笔记中提到的关键知识点,涵盖了Node.js的基本概念、编程基础、模块系统、服务器搭建、以及交互式环境的使用。这些内容对于初学者来说是非常重要的基础知识,有助于他们构建基础的Node.js...

    Node.js-Nodejs学习笔记以及经验总结

    本学习笔记和经验总结将深入探讨Node.js的核心概念、主要特性、常用模块以及实战技巧,帮助你从零基础到熟练掌握Node.js。 一、Node.js核心概念 1. 非阻塞I/O模型:Node.js采用事件驱动、非阻塞I/O模型,提高了...

    Node.js学习笔记

    本学习笔记旨在深入解析Node.js的核心概念、特性以及常见应用,帮助你高效地掌握这一强大的开发工具。 1. **事件驱动模型** Node.js采用非阻塞I/O和事件驱动模型,使得它在处理高并发请求时表现出色。这种模型通过...

    node.js学习笔记.docx

    Node.js 是一种基于 Chrome V8 引擎的 JavaScript 运行环境,它允许开发者在服务端使用 JavaScript 进行编程。对于初学者来说,Node.js 的学习可能涉及到一些新的概念,比如API接口、端口号以及数据库的搭建。下面将...

    前端学习笔记-Node.js

    总的来说,这是一份全面覆盖Node.js基础知识及进阶内容的学习资料,适合前端开发者想要扩展后端技能,或是对全栈开发感兴趣的人员学习。通过深入学习和实践,你将能够熟练地使用Node.js进行服务器端开发,构建高效、...

    Up and Running with Node.js学习笔记

    ### Up and Running with Node.js 学习笔记 #### 在线学习了“up and running with Node.js”,做了一些笔记,适合入门。 **Node.js** 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它使得开发人员能够在...

    Node.js-[全文]如何正确的学习Node.js

    在IT行业中,Node.js是一个备受关注的JavaScript运行环境,它允许开发者使用JavaScript进行服务器端编程。本文将深入探讨如何正确地学习Node.js,基于提供的标题和描述,我们将围绕这一主题展开,详细介绍Node.js的...

    node.js学习笔记,包含ES模块化、express基础、jsonp模块、koa2、Mocha、MySQL操作、路.zip

    这份学习笔记涵盖了Node.js的多个重要知识点,包括ES模块化、Express框架的基础、JSONP处理、Koa2框架、Mocha测试工具以及MySQL数据库的操作。让我们逐一深入探讨这些主题。 1. **ES模块化**:在Node.js中,ES模块...

    Node.js学习笔记1-快速开始

    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型。 对于云应用的快速开发,学习并熟练掌握Node已经是一项全栈开发工程师的必备技能。 我计划用一个月...

    node.js笔记文件夹

    总之,"node.js笔记文件夹"涵盖了Node.js的基础知识、核心概念、实用技巧和最佳实践,是学习和掌握Node.js不可或缺的学习资料。通过阅读和实践其中的内容,不仅可以深入理解Node.js的工作原理,还能提升JavaScript...

    node.js笔记.zip

    在"node.js笔记.zip"这个压缩包中,我们可以推测其内容主要涵盖了Node.js的基础知识、核心模块、文件系统操作、网络编程、模块化开发、异步处理、中间件和框架等内容。 1. **基础概念**:Node.js的基础包括了解...

    源码&笔记_Node.js_node.js相关_前端学习_

    这个压缩包中的“源码&笔记”可能包含了一些实际的代码示例、教程文档或者学习笔记,对于深入理解和实践 Node.js 技术提供了宝贵的资源。前端开发者可以通过这些材料学习如何运用 Node.js 实现前后端同构、构建 CLI ...

    Node.js-将命令行界面描述为易于阅读的人性化的markdown文档

    在IT行业中,Node.js是一个非常流行的JavaScript运行环境,它允许开发者使用JavaScript进行服务器端编程。在标题和描述中提到的“Node.js-将命令行界面描述为易于阅读的人性化的markdown文档”是一个关于如何利用...

    Node.js MongoDB AngularJSWeb开发.part3

    Node.js 是一个基于Chrome V8引擎的JavaScript运行环境,它允许开发者在服务器端使用JavaScript进行编程,实现了全栈JavaScript开发。Node.js的特点包括非阻塞I/O模型和事件驱动,使其在处理高并发请求时表现出色,...

    自学入门最全node笔记学习、学习路线Node.js.mmap

    自学入门最全node笔记学习、学习路线Node.js.

    node.js全部学习笔记

    node.js全部学习笔记

    node图书管理系统笔记和源码.7z

    一、Node.js基础 Node.js是建立在Google V8引擎上的JavaScript运行环境,它允许开发者使用JavaScript进行服务器端编程。Node.js利用事件驱动、非阻塞I/O模型,使其在处理高并发请求时表现出色。Node.js的模块化系统...

    Node.js - How To Code in Node.js

    本章节主要介绍了如何开始学习 Node.js 编程的基础环境设置。无论是从零开始搭建服务器还是在本地计算机(如笔记本或台式机)上进行编程,都需要确保拥有一个适合开发的环境。对于不熟悉 Node.js 或尚未设置好开发...

    node.zip 笔记 ppt express koa mysql

    “node.js”标签进一步确认了这个压缩包的核心内容是围绕Node.js这一JavaScript运行环境的,可能涵盖了Node.js的基础知识、开发工具、模块系统、异步编程等方面。 【压缩包子文件的文件名称列表】 由于未提供具体的...

Global site tag (gtag.js) - Google Analytics