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 ...
随机推荐
- 使用JAVA与SmartFoxServer来实现游戏服务器概述
SmartFoxServer 是专门为Adobe Flash设计的跨平台socket服务器,让开发者高效地开发多人应用及游戏. 该服务器主要用来创建多玩家游戏.并提供强大的制作工具,各种回合制游戏和实 ...
- Struts2学习笔记(三):result配置的各项视图转发类型
Struts 1: <action path="/user" type="org.sunny.user.action.UserAction" ...> ...
- 大数据分析神兽麒麟(Apache Kylin)
1.Apache Kylin是什么? 在现在的大数据时代,越来越多的企业开始使用Hadoop管理数据,但是现有的业务分析工具(如Tableau,Microstrategy等)往往存在很大的局限,如难以 ...
- JDBC 之 事务
1.概念:事务指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部不成功. 2.数据库开启事务的命令dtl: Start transaction开启事务 Rollback回滚事务(撤销) ...
- 详细分析 javascript 的内存分配
JavaScript语言是一门优秀的脚本语言.其中包含脚本语言的灵活性外还拥有许多高级语言的特性.例如充许构建和实例化一个对象,垃圾回 收机制(GC:Garbage Collecation).通常我们 ...
- 设计模式21---设计模式之享元模式(Flyweight)(结构型)
1.讲解享元模式(结构型) 1.1享元模式定义 运用共享技术有效地支持大量细粒度对象. 享元:把内部状态共享出来 1.2享元模式要点 重点在于分离变与不变. 把一个对象的状态分为内部状态和外部状态,内 ...
- [Angualr 2] Using FormBuilder
There are two main functions we’ll use on FormBuilder: • control - creates a new Control• group - cr ...
- 三星笔记本R428安装xp win7双系统,切换系统重启才能进入系统解决办法。
三星笔记本 XP win7 双系统切换重启解决方法 三星笔记本有个奇怪的现象,就是装有XP和win7双系统 xp切换到win7.进系统是会重启一次,并且bios回复光驱为第一启动项,win7切换 ...
- 解除网页右键限制和开启网页编辑状态的js代码
当访问页面右键被限制了怎么办?很好办!将以下代码添加进收藏夹,点击执行即可: javascript:alert(document.onselectstart = document.onbeforeco ...
- ASP.NET-FineUI开发实践-16(二)
实现那还差点,在事件参数里我传了一个boolall选中状态参数,这个参数由前台给的,RowSelect 传的是index 行号,就是改这,通过$符号来分开的, if (commandArgs.Leng ...