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 ...
随机推荐
- CentOS 搭建 FastDFS-5.0.5集群
转http://www.open-open.com/lib/view/open1435468300700.html 第一步,确定目标: Tracker 192.168.224.20:22122 C ...
- NOI2015 程序自动分析 prog
何等水题 某神犇仿关押罪犯的写法 却写挂了 然而实际上并不需要补集之类的 #include<iostream> #include<cstring> #include<c ...
- weblogic数据源配置的问题,weblogic密码破解
weblogic 报错 please increase XXX,得知是连接池出了问题,查看weblogic配置,发现没有设置超时 查看oracle 当前session,可以看到连接的机器,用户,当前执 ...
- Android(java)学习笔记231:服务(service)之混合方式开启服务
1. 前面我们已经讲过可以使用两种方式开启服务 startService----stopService: oncreate() ---> onstartCommand() ---& ...
- codevs 3305 水果姐逛水果街Ⅱ
/*我尼玛 又一个min打成max 看了半天....*/ #include<iostream> #include<cstdio> #include<cstring> ...
- gir配置
Git配置 1. 用户信息 你个人的用户名称和电子邮件地址,用户名可随意修改,git 用于记录是谁提交了更新,以及更新人的联系方式. $ git config --global user.name & ...
- Notification封装(没做从网络下载)
1.Notification作为消息通知,这里简单封装了使用 建立一个bean package com.jcut.view; /** * Author:JsonLu * DateTime:2016/2 ...
- HTML5 FileAPI读取实例---(一)
在HTML5中,提供了一个关于文件操作的API,通过这个API,对于从web页面上访问本地文件系统的相关处理变得十分简单.到目前为止只有部分浏览器对它提供支持. 1.FileList对象和File对象 ...
- (转)PHP模板smarty简单入门教程
转之--http://blog.163.com/zf_2011@126/blog/static/166861361201062595057962/ 如何在smarty中开始我们程序设计.PHP代码:- ...
- JavaScript_object(基于map和数组练习)
JavaScript在编程过程中,不会像java那么方便,提供大量的API让开发这直接去调用,但底层也封装大量的工具让开发者写方法去实现, 以map为例,写简单的增删改查模拟java中的map: fu ...