Node.js模块 加载笔记
//核心模块就是Node.js标准API种提供的模块,如fs,http,net.vm等.官方提供,编译成二进制代码
//核心模块拥有最高的加载优先级
//文件模块则是存储为单独的文件(或文件夹)的模块,可能是javascript代码,
//json或者编译好的C++代码.文件模块的加载方法相对复杂,尤其是和npm结合使用时,
//在不显式指定文件模块扩展名的时候,Node.js会分别试图加上.js .json .node拓展名,
//js是javascript代码, .json是json格式的文本, .node 是编译好的C++代码
//6.1.2 按模块加载模块
//文件模块的加载2种方式,一个按照路径加载,一种是查找node_modules文件夹.
//如果require参数以"/" 开头,那么就以绝对路径的方式查找模块名称,require('/home/module')
//将会按照优先级依次尝试加载/home/module.js /home/module.json /home/module.node
//如果require参数以"../ 或者./ 开头.那么则以相对路径的方式来查找模块.
//6.1.3 通过查找node_modules目录加载模块
//如果require参数不以 / ./ ../ 开头.而该模块又不是核心模块,那么要通过查找node_modules
//加载模块, 我们使用npm获取的包通常就是以这种方式加载的
//当require遇到一个既不是核心模块.又不是以路径形式标示的模块名称时,会视图在当前目录下的
//node_modules目录种查找是否存在这个模块,如果没找到,则在当前模块种的上一层种的node_modules
//目录种继续查找.
//我们要在 home/byvoid/develop/foo.js 种使用 require('bar.js') 命令
///home/byvoid/develop/node_modules/bar.js
///home/byvoid/node_modules/bar.js
///home/node_modules/bar.js
///node_modules/bar.js
//6.1.4 加载缓存
// Node.js会通过文件名缓存所有加载过的模块.
//require('express') 和 require('./node_modules/express')加载2次,
// 解析 也是同一个文件
//6.1.5 加载顺序
// 使用 require(some-module)时的加载顺序
//1)如果some_module是一个核心模块,直接加载,结束
//2)如果some_module是以/ ./ ../ 开头,按路径加载some_module结束.
//3)假设当前目录为current_dir ,按路径加载current-dir/node_modules/some_module
// 如果加载成功,结束
// 如果失败 ,令current-dir 为父目录
// 重复这个过程, 直到遇到根目录,抛出异常,结束
//6.2 控制流
//6.2.1 循环的陷阱
//
//6.3 Node.js应用部署
//Node.js 一旦被用户触发了隐藏的bug.整个服务器就崩溃了.一定要考虑到故障恢复
//没有日志
//无法利用多核提高性能 由于是单线程,一个进程只能利用一个cpu.当大量请求,单线程就成为瓶颈(需要多线程0)
//独占端口 ,要通过反向代理实现基于域名的端口共享
//需要手动启动, 要制作一个自动启动服务器的脚本
Node.js模块 加载笔记的更多相关文章
- nodejs js模块加载
本文地址:http://www.cnblogs.com/jasonxuli/p/4381747.html nodejs的非核心模块(core module)加载主要使用的就是module.js. 项目 ...
- sea.js模块加载工具
seajs的使用 seajs是一个jS模块加载器,由淘宝前端架构师玉伯开发,它可以解决命名空间污染,文件依赖的问题.可以在一个js文件中引入另外一个js.require('a.js') 1.安装 np ...
- js模块化/js模块加载器/js模块打包器
之前对这几个概念一直记得很模糊,也无法用自己的语言表达出来,今天看了大神的文章,尝试根据自己的理解总结一下,算是一篇读后感. 大神的文章:http://www.css88.com/archives/7 ...
- js模块加载之AMD和CMD
当我写这篇文章的时候,sea.js已经逐渐退出历史的舞台,详细链接.不过任何新事物的出现都是对旧事物的取其精华,去其糟粕,所以了解一下以前模块的加载也是一件好事. js模块化的原因自不比多说,看看HU ...
- 实现简单的 JS 模块加载器
实现简单的 JS 模块加载器 1. 背景介绍 按需加载是前端性能优化的一个重要手段,按需加载的本质是从远程服务器加载一段JS代码(这里主要讨论JS,CSS或者其他资源大同小异),该JS代码就是一个模块 ...
- 【 js 模块加载 】深入学习模块化加载(node.js 模块源码)
一.模块规范 说到模块化加载,就不得先说一说模块规范.模块规范是用来约束每个模块,让其必须按照一定的格式编写.AMD,CMD,CommonJS 是目前最常用的三种模块化书写规范. 1.AMD(Asy ...
- 【 js 模块加载 】【源码学习】深入学习模块化加载(node.js 模块源码)
文章提纲: 第一部分:介绍模块规范及之间区别 第二部分:以 node.js 实现模块化规范 源码,深入学习. 一.模块规范 说到模块化加载,就不得先说一说模块规范.模块规范是用来约束每个模块,让其必须 ...
- js模块加载框架 sea.js学习笔记
seajs实现了JavaScript 的 模块开发及按模块加载.用来解决繁琐的js命名冲突,文件依赖等问题,其主要目的是令JavaScript开发模块化并可以轻松愉悦进行加载. 官方文档:http:/ ...
- 第三课:sea.js模块加载原理
模块加载,其实就是把js分成很多个模块,便于开发和维护.因此加载很多js模块的时候,需要动态的加载,以便提高用户体验. 在介绍模块加载库之前,先介绍一个方法. 动态加载js方法: function l ...
随机推荐
- FreeRTOS学习笔记——任务间使用队列同步数据
1.前言 在嵌入式操作系统中队列是任务间数据交换的常用手段,队列是生产者消费者模型的重要组成部分.FreeRTOS的队列简单易用,下面结合一个具体例子说明FreeRTOS中的队列如何使用. 2.参考代 ...
- Appium测试时如何关联到Genymotion模拟器
一.在Appium里点击左上角的Android Settings里填写模拟器的devicesName,并记得勾选和配置Application Path. (可以通过adb devices命令查询出当前 ...
- DataGridView的DataGridViewComboBoxColumn列点击一次,自动处于编辑状态
本文转载:http://www.cnblogs.com/Johnny_Z/archive/2012/02/12/2348235.html Winform中的DataGridView数据绑定控件有时会用 ...
- 浅析Android中的消息机制-解决:Only the original thread that created a view hierarchy can touch its views.
在分析Android消息机制之前,我们先来看一段代码: public class MainActivity extends Activity implements View.OnClickListen ...
- Android源代码分析之Framework的MediaPlayer
在Android中MediaPlayer用来播放音频和视频文件,在这里分析下在Framework层中MediaPlayer是怎样调用的.MediaPlayer的代码位于:./frameworks/ba ...
- Unable to execute dex: java.nio.BufferOverflowException. Check the Eclipse log for stack trace.(转)
1.程序运行后异常显示: 解决方案:在项目上点击右键->properties->Java Build Path, remove掉Android Dependences即可
- 工厂模式[3] 抽象工厂 Abstract Factory
简介 1.简单工厂,或静态工厂,产品接口 定义:专门定义一个类来负责创建其他类的实例,被创建的实例通常具有共同的父类或实现同一接口 优点:客户端可以直接消费产品,而不必关心具体产品的实现(不关心对象的 ...
- easydialog.js
/** * easyDialog v2.2 * Url : http://stylechen.com/easydialog-v2.0.html * Author : chenmnkken@gmail. ...
- JavaScript省市联动
<html> <head> <title>JS省市二级联动菜单,整理收集.</title> </head> <body bgcolor ...
- Android 开发笔记——对应用进行单元测试
在实际开发中,开发android软件的过程需要不断地进行测试.而使用Junit测试框架,是正规Android开发的必用技术, 在Junit中可以得到组件,可以模拟发送事件和检测程序处理的正确性. 第一 ...