node.js学习1

https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/001434501497361a4e77c055f5c4a8da2d5a1868df36ad1000学习网址

node优缺点          写一个node程序时命令行模式交互式模式          nodejs的异步io

 

 一、node.js的优点

最大的优点是借助javascript天生的事件驱动机制和V8高性能,使编写高性能web轻而易举。

其次,javascript本身是完善的函数语言,但是node和js相比因为不能考虑兼容性问题,直接使用ES6(EcmaScript6)标准,可以完全满足工程上的需要。

优点:

1部署简单   npm使得模块依赖关系变得容易处理

2事件驱动

3 异步编程:回调函数,事件监听,发布/订阅

4高效性能:优化资源调配和IO操作

5单线程和多进程

缺点:

1大量使用匿名函数,使得抛出的异常不易阅读

2 try/catch限于同步代码,使得异常捕获变得复杂

3 单线程的可靠性问题

4 不适应cpu密集的操作

5 回调代码的阅读

 

二、第一个node程序

输入以下代码:

第一行总是‘use strict’因为我们是用的是严格模式运行js代码,避免各种潜在陷阱。

然后选择一个目录,例如C:\Users\Zhu\Desktop\测试\node.js学习,就可在命令窗口执行,输入以下程序:

也可以是其他名字,就是必须是js结尾。

三、node命令行模式和交互式模式

上面为命令行模式

底下为交互式模式为:(直接输入node出现>即可,且可自动运算)

交互模式可以自动计算结果并且输出结果

如果是命令行模式调用.js就必须手动输出

(100+200+300)比如:add.js比add-1.js多了一个console.log

即是说交互式环境中直接写(200+100+300)就可输出结果,用命令行模式调用.js时,需要加上输出(console.log(100+200+300))才可输出结果

四、搭建node开发环境

 

 

五、模块

在计算机发展中,代码越来越多越来越长,越来越不容易维护。

为了编写方便,我们把函数分了很多组,分别放到不同的文件里,这样每个文件里包含的代码就相对较少,很多编程语言都采用这种组织代码的方式,在node环境中,一个js模块就成为一个模块。

模块的优点:最大的好处就是大大提高了代码的可维护性。其次,编写代码不必从0开始。当一个模块写完就可以被其他模块引用,我们在编写时也经常引用其他模块,包括node内置的模块以及来自第三方的模块。

                    使用模块还可以避免函数名变量名冲突。相同名字的函数和变量完全可以存在不同的模块中,所以编写函数时不用担心自己命名会与其余的模块冲突。

例如:我们把一个greet()函数定义在Hello模块中,Hello.js即就是一个Hello模块,最后一行的赋值指的是把函数greet暴露出去,这样就可以使用greet函数了。

我们再编写一个main.js文件,调用Hello模块里的函数。

注意到:引用greet函数使用的是node自带的require函数

引用模块变量保存到greet变量中,其实greet就是Hello.js中的我们用module.exports=greet;输出greet函数。所以,main.js就成功的引用了hello.js模块中的greet()函数,接下来就可以直接用了。

在使用require()引入模块时,请注意模块的相对路径。因为main.jsHello.js位于同一个目录,所以我们用了当前目录 . :

//不要忘记写相对目录

如果只写模块名

var greet = require('hello');

则Node会依次在内置模块、全局模块和当前模块下查找hello.js,你很可能会得到一个错误:

module.js
    throw err;
          ^
Error: Cannot find module 'hello'
    at Function.Module._resolveFilename
    at Function.Module._load
    ...
    at Function.Module._load
    at Function.Module.runMain

遇到这个错误,你要检查:

  • 模块名是否写对了;
  • 模块文件是否存在;
  • 相对路径是否写对了。

 

 

 

五、CommonJs

这种模块加载机制被称为CommonJS规范。在这个规范下,每个.js文件都是一个模块,它们内部各自使用的变量名和函数名都互不冲突,例如,hello.jsmain.js都申明了全局变量var s = 'xxx',但互不影响。

一个模块想要对外暴露变量(函数也是变量),可以用module.exports = variable;,一个模块要引用其他模块暴露的变量,用var ref = require('module_name');就拿到了引用模块的变量。

结论

要在模块中对外输出变量,用:

module.exports = variable;

输出的变量可以是任意对象、函数、数组等等。

要引入其他模块输出的对象,用:

var foo = require('other_module');

引入的对象具体是什么,取决于引入模块输出的对象。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值