文章目录
  1. 1. nodejs适用问题
  2. 2. nodejs中的模块

关于nodejs基础的知识点。以前有些模糊的概念,现在弄清楚了。

nodejs适用问题

在Java、php 或 Asp.net等服务器语言中,为每一个客户端连接创建一个新的线程,而每个线程需要消耗大约2MB的内存,如果想让web应用程序支持更多的用户,就需要增加服务器的数量,而web应用程序的硬件成本会增加,并且当同一个用户的不同客户端请求可能会被不同的服务器处理,因此必须在所有的服务器之间共享所有的资源。所以,在一个web应用程序中,一个主要的瓶颈是服务器所支持的最大同时连接用户量。

Nodejs修改了客户端到服务器端的连接办法,解决论文这个问题。因为它并不为每个客户端连接创建一个新的线程,而是为每个客户端连接触发一个在Node.js内部进行处理的事件,因此,如果使用Node.js,可以同时处理多达几万个用户的客户端连接。因此如果需要使Web应用程序能够支持大量用户的并发连接的时候,可以考虑使用Node.js。如聊天服务器和综合服务类网站或电子商务网站的服务器。

nodejs中的模块

  1. 在nodejs中是以模块为单位进行划分所有的功能的,每个模块为一个js文件,每一个模块中定义的全局变量或函数的作用范围也被限定在这个模块之内,只有使用exports对象对象才能将其传递到外部。

  2. 在node.js 中提供了一些核心模块,直接使用require函数加载,参数为模块名。除了核心模块,还有全局作用域下的有些类、函数与对象。这些可以在不引用任何模块的情况下直接使用这些类、函数与对象。如require函数、module对象等。

  3. nodejs中定义的一个global对象,代表Node.js中的全局命名空间,任何全局变量、函数或对象都是该对象的一个属性值。

  4. 全局函数require 用来加载模块。 若将js代码写在一个文件中如app.js,运行如下。这个模块文件是在命令行窗口中通过“node”命令被直接运行,因此在Node.js中将该模块
    文件所定义的模块成为应用程序的主模块

    1
    node app.js

    使用require.main 变量来检测一个模块是否是应用程序的主模块,将下面的代码写在模块文件中。

    1
    2
    3
    if(module === require.main){
    console.log("this is the main module of application")
    }

    使用require加载模块时将运行模块文件中的每一行代码,模块在首次加载后将缓存在内存缓存区中。这意味着,对于相同模块的多次引用得到的都是同一个模块对象,这也意味着,对于相同模块的多次引用不会引起模块内代码的多次执行。

    使用require函数时函数中的参数为要加载模块的地址。可以是”./“(代表当前目录),可以是”/“(在Unix 中指根目录,在windows中指磁盘根目录)。

    使用require.resolve函数查询完整的模块名,但是并不会加载该模块。

    使用require.cache对象,该对象代表缓存了所有已被加载模块的缓存区。当使用delete关键字删除缓存区的某个模块对象后,下次加载该模块时将重新运行该模块中的代码。

  5. 可以将模块文件内的exports对象写成“module.exports”但是在需要将模块定义为一个类时,只能使用“module.exports”的书写方法。

  6. 将自己的文件写成模块直接将自定义的文件按照加载核心模块的方式进行加载。方法是:在根目录下创建node_modules子目录,以模块名为目录名,在文件内添加package.json文件。在文件中写入下面的代码

    1
    2
    3
    4
    {
    "name":"foo",
    "main":"./foo.js"
    }
  7. 在node.js 中,预定义了两个变量:用于获取当前模块文件名的 __filename 变量与用于获取当前目录名的__dirname变量。

  8. 在nodejs的用于实现各种事件处理的event模块中,定义了一个EventEmitter类。所有可能触发事件的对象都是一个继承了EventEmitter类的子类的实例对象。在node.js中,靠这些方法的调用来执行。

  9. nodejs中的交互式运行环境—REPL(Read-Eval-Print-Loop)可以用于测试js代码,一些命令如.break,.load,.save;

  10. node 调试工具node-inspector,这个工具在版本1.1.1时要求node版本不能超过6.3.0 。

  11. 多个版本的node 管理在windows端可以使用node版本管理工具node-windows。这个版本在安装时需先卸载之前安装的node,并且symlink的安装路径不可在系统盘下面的program files下面,在安装时需使用管理员权限。

  12. 下面的代码在运行时会在终端输出两个目标URL地址。

1
2
3
4
5
6
7
var http=require("http");
var server = http.createServer();
server.on('request',function(req,res){
console.log(req.url);
res.end();
})
server.listen(1337,"127.0.0.1");

在浏览器中输入http://localhost:1337 ,在控制台窗口会打印出来两个url:”/“与”/favicon.ico”,”/“代表用户输入的目标url地址为Web应用程序的根目录,第二个目标url地址为浏览器为页面在收藏夹中的显示图标而自动发出的请求的目标url地址。

文章目录
  1. 1. nodejs适用问题
  2. 2. nodejs中的模块