NodejS---require的机制】的更多相关文章

一.简介 Nodejs 有一个简单的模块加载系统.在 Nodejs 中,文件和模块是一一对应的(每个文件被视为一个独立的模块),这个文件可能是 JavaScript 代码,JSON 或者编译过的C/C++ 扩展,例如: /** *foo.js *将这个js文件导出为模块 */ exports.hello = function() { console.log("hello Nodejs!"); } /** *main.js *main.js和foo.js在同一目录下 *在控制台输出:he…
问题描述: nodejs require 缓存,无法检测文件变化,当文件require引入后,当文件发生变动后即使再次使用require,返回的依然是第一次引入的文件内容,这怎么破? 解决方案: delete require.cache[require.resolve('./testModule.js')]; './testModule.js' 就是引入的文件,也是想要删除缓存的文件,简而言之,就是在下次引用之前必须手动删除缓存. 君生我未生,我生君已老 君恨我生迟,我恨君生早 君生我未生,我生…
在<深入浅出nodejs>有这样一段(有部分增减): 1.nodejs引入模块分四个步骤 路径分析 文件定位 编译执行 加入内存 2.核心模块部分在node源代码的编译过程中就编译成了二级制文件,在node启动时就直接加载如内存,所以这部分模块引入时,前三步省略,直接加入. 3.nodejs的模块加载和浏览器js加载一样都有缓存机制,不同的是,浏览器仅仅缓存文件,而nodejs缓存的是编译和执行后的对象(缓存内存). 基于以上三点:我们可以编写一个模块,用来记录长期存在的变量.例如:我可以编写…
Node.js 所有的异步 I/O 操作在完成时都会发送一个事件到事件队列 Node.js 里面的许多对象都会分发事件:一个 net.Server 对象会在每次有新连接时触发一个事件, 一个 fs.readStream 对象会在文件被打开的时候触发一个事件. 所有这些产生事件的对象都是 events.EventEmitter 的实例 NodeJs事件监听触发机制依赖 events 核心模块, events 模块只提供了一个对象: events.EventEmitter.EventEmitter…
背景 这篇文基本都是反对的,反对的很有道理,不是说我这篇文章的内容错误,因为这篇文章是我在健身房学习node的时候写的,这些知识都很粗糙,后来发现官方的稳定更详细:地址:http://nodejs.org/api/modules.html. 一直想在服务器端使用一种语言,ruby.phthon和php也都学过,对于我来说使用这三种语言需要一定的上下文切换成本.正在我纠结的时 候,NodeJs出现了,而且我自信对Javascript还是比较熟悉的,因此就准备学习一下NodeJs.这样我的语言组合为…
The rules of where require finds the files can be a little complex, but a simple rule of thumb is that if the file doesn't start with "./" or "/", then it is either considered a core module (and the local Node path is checked), or a de…
J历史 我们都知道,js在刚被创建的时候,只是为了在网页上写一些小脚本而已,比如网页特效,表单验证等等,创立者也许没觉悟到以后的js会发展到如此规模.这是web1.0时代. 在web 2.0时代,各种前端库,前端框架被开发出来,jquery,angular就是代表.此时js的功能也就从写写小特效啥的跃迁到了应用开发的级别上.可以说,js经历了工具类库,组件库,前端框架,前端应用的变迁. 于是在越来越广泛的应用中,js暴露了它先天就缺乏的一项功能:模块.在其它高级语言,都有模块的定义,java有类…
项目需要用nodejs,感觉nodejs是前端装逼神器了,是通向全栈工程师的必经之路哇,接下来开始踏上学习nodejs的征程.下面是第一个hello,world的程序. 1.server.js文件,这相当于服务器脚本. var http = require("http"); function start() { function onRequest(request, response) { console.log("Request recieved") respon…
1. require , exports . -------------------------- 文件: 1) index.js //两种方式都可以: var forExports = require("./forExports"); // var forExports = require("./forExports.js"); var forExports2 = require("./forExports2.js"); //下面两种方式都可以…
nodejs的特点 nodejs 具有事件驱动和非阻塞I/O的特点. 事件驱动是指nodejs把每一个任务当成事件来处理. 非阻塞I/O是指nodejs遇到I/O任务时,会从线程池调度单独的线程处理I/O操作,不会阻塞主线程. 事件循环原理 Node.js 在主线程里维护了一个事件队列,当接到请求后,就将该请求作为一个事件放入这个队列中,然后继续接收其他请求. 当主线程空闲时(没有请求接入时),就开始循环事件队列,检查队列中是否有要处理的事件,这时要分两种情况: 如果是非 I/O 任务,就亲自处…
比如 m.js是能够调用a.js的, 这样子目录就可以避免重复安装node_modules. 够用了.…
https://stackoverflow.com/questions/15636367/nodejs-require-a-global-module-package 1  export NODE_PATH="$(npm config get prefix)/lib/node_modules" 2 2…
前言 用Nodejs已经1年有余,陆陆续续写了48篇关于Nodejs的博客文章,用过的包有上百个.和所有人一样,我也从Web开发开始,然后到包管 理,再到应用系统的开发,最后开源自己的Nodejs项目.一路走来,Nodejs已经成为我做Web项目的标配.我非常愿意把原Java.PHP的 Web系统向Nodejs迁移,因为1个人可以很容易的完成10个人的活了. 本文把我的学习和使用经验进行归纳总结,希望给新入门Nodejs的同学做一些指引. 目录 Nodejs的介绍 15个Nodejs应用场景 N…
nodejs概念: 让javascript运行在服务端的开发平台.不是一种语言,不是框架,不是库.特点:单线程异步.事件驱动. PHP.JAVA既是语言也是平台. 创始人:Ryan nodejs cmd 命令: node -v //查看nodejs版本 node -e "console.log('ok')" //eval解析javascript语言 node 回车 //进入编译模式 npm list //查看目录下安装包 npm install -g 包名 //安装全局包 nodejs…
本文转载自:http://blog.csdn.net/kimmking/article/details/42708049 1.  Edge是什么 Edge是一种在进程内实现NodeJS与.NET互操作的桥接技术,可以在NodeJS里使用.NET代码和库,也可以在.NET程序里使用NodeJS的代码. Edge运行需要.netframework4.5,它使用.NET的Task.async.await机制跟NodeJS的event模型匹配.本质上是连接V8引擎和.NET /monoCLR运行时,同时…
/*—————————————————————————————— * 本文案例基于以下运行环境: * 系统: CentOS 5.x * NodeJS版本: 0.9 以上 * Redis版本: 2.8 * Redis-nodejs 扩展: 0.12.1 /*—————————————————————————————— Part 1: 安装扩展 使用以下命令: npm -g install redis Redis实例: Host: 127.0.0.1  Port: 6379 Part 2: 实例 v…
近期在看NodeJS相关 不得不说NodeJS+Express 进行网站开发是很不错,对于喜欢玩JS的来说真是很好的一种Web开发组合 在接触NodeJS时受平时Java或者C#中API接口等开发的思维惯性,类比着去学习了解发现其实很多都是通性的 特别是NodeJS中一个JS文件中方法通过exports可以在其他文件中进行require这种机制,不就类似Java中import(导入架包/引用类)?不就类似C#中Using(DLL组件或者引用类)么? MVC模式下Web开发,其中对应在NodeJS…
/** * Created by xiwu.xxw on 2015/7/22. */ /** * EventEmitter 的每个事件由一个事件名和若干个参数组成, * 事件名是一个字符串,通常表达一定的语义. * 对于每个事件,EventEmitter 支持 若干个事件监听器. * 当事件发射时,注册到这个事件的事件监听器被依次调用, * 事件参数作 为回调函数参数传递. * @type {*|EventEmitter} */ //NodeJS的事件机制有点类似于QT中的信号与槽机制 //加载…
    对NodeJS的基本配置了解之后,现在需要解决一些显示问题,大致有以下问题     1.与PHP框架Laravel的密码验证系统相适应     2.异步调用的常见编程问题:Promise和EventEmitter     3.Sails框架简述     下面是详细的内容:     1.与Laravel系统的加密系统相适应     Laravel是比较流行的PHP系统,其密码加密有以下特点:(参考文章:http://www.tuicool.com/articles/zQnqyi)    …
一.路由机制(静态资源文件处理) 1.1 Nodejs没有根目录 MIME类型:http://www.w3school.com.cn/media/media_mimeref.asp 在Apache中,它会自动将htdocs文件夹提供静态化路由服务. 但是Nodejs没有这个机制. 在文件夹中创建这样的层次目录: ┠ www ┋┠ a ┋┋┠ b ┋┋┋┠ page.html ┠ 11-Nodejs没有根目录容器.js 访问的时候,可以看见page.html页面: var http = requi…
一.NodeJS简介 NodeJS是开发服务器后台的东西,和PHP.JavaEE.python类似,和传统的浏览器的关注DOM的JS完全不同,将JavaScript触角伸到了服务器端.内核是Chrome浏览器的V8引擎,解析JavaScript的效率是非常快的. 创始人. 在不升级服务器配置的情况下,如何用软件手段来提升服务器性能:Ryan Dahl大致的感觉到了解决问题的关键是要通过事件驱动和异步I/O来达成目的. 传统的服务器模型:当我们做I/O操作的时候(I表示读,O表示写),CPU被磁盘…
nodejs基础 nodejs允许自己封装模块,使得编写程序可以模块化,便于维护整理.在一个js文件中写完封装的函数或对象后,可以使用exports或module.exports来将模块中的函数暴露给程序,使得整个程序可以使用,如: function HelloWorld() { return 'Hello, node-js!'; } module.exports.HelloWorld = HelloWorld; 要使用其他模块中的方法时,需要使用require来导入模块,如: const ht…
转载自:http://blog.fens.me/nodejs-roadmap/ 前言 用Nodejs已经1年有余,陆陆续续写了48篇关于Nodejs的博客文章,用过的包有上百个. 和全部人一样,我也从Web开发開始.然后到包管理,再到应用系统的开发,最后开源自己的Nodejs项目.一路走来,Nodejs已经成为我做Web项目的标配.我非常愿意把原Java.PHP的Web系统向Nodejs迁移.由于1个人能够非常easy的完毕10个人的活了. 本文把我的学习和使用经验进行归纳总结,希望给新入门No…
1. 为什么JavaScript是单线程? 防止DOM渲染冲突的问题: Html5中的Web Worker可以实现多线程 2.什么是任务队列? 任务队列"是一个先进先出的数据结构,排在前面的事件,优先被主线程读取.主线程的读取过程基本上是自动的,只要执行栈一清空,"任务队列"上第一位的事件就自动进入主线程. 2.1 同步和异步任务 同步任务指的是,在主线程上排队执行的任务,只有前一个任务执行完毕,才能执行后一个任务: 异步任务指的是,不进入主线程.而进入"任务队列&…
nodejs启动 入口在node_main.cc,解析参数后进入node.cc 中的node::Start() V8::Initialize() //初始化v8SetupProcessObject() //在v8中创建process对象Load() //bootstrap,加载执行node.jsuv_run() //调用libuv,开始异步事件polling和处理模块装载 为了和用户编写的模块做区别,我将nodejs自带的模块称为系统模块,其中C++模块在src目录中,node_开头的那些文件大…
Global:全局变量 定时器.控制台输出.事件 模块化相关的一些全局变量 path/url相关的一些全局变量 编码相关的 buffer:缓存(简单介绍) Process:进程(重点解析) 一.Global Global与浏览器中的全局对象window的功能非常类似,可以简单的理解为提供在开发过程任意地方供调用的属性.方法.对象,不需要做任何引入创建等操作.由于nodejs是一个服务端平台而浏览器是客户端平台,它们在具体的功能上肯定有很大的差异,但也有基于JS的完全相同的一些功能. 1.1定时器…
函数调用 1. 文件内普通函数调用 创建一个js文件命名为2_callFunction.js,其中定义一个函数fun1,向返回对象输出了一段字符串“你好,我是fun1”. //--------------------2_callFunction.js---------------------------------     var  http = require('http');        http.createServer(function    (request,    response…
这一个月过去了三分之二,加上之前看过这本书三分之一,这才算是看完. 虽然看完一遍,但是这本书内容很深,以后肯定是还要继续翻阅的..... 什么是Nodejs Nodejs有几个特性:异步IO,事件驱动,单线程,跨平台 异步IO可以保证在CPU计算的同时,异步的加载IO,加快了应用的访问.不像传统的服务器是使用什么阻塞IO啊.轮训IO等等,它相当于在发送处理请求时,直接传一个回调函数,当异步的IO结束后,会自动的执行回调. 事件驱动,则是把粒度降低到事件级别.传统的服务器是一个请求分配一个线程进行…
发现了NodeJS以后让我有一种很激动的心情,因为它能做我以前一直想写的东西,而如果没有NodeJS我还需要去学习别的语言,但是有了NodeJS以后就可以通过Javascript来写我的程序了,不得不让人激动. 在以前没有了解NodeJS之前我以为NodeJS是用JS写的,但其实NodeJS并不是JS写的,简单的来说NodeJS就是一个可以不需要浏览器就能够执行JS代码的解释器,如果你不知道NodeJS也许你会认为js只能运行在浏览器中,但现在有了NodeJS以后就不在是这样了,说到NodeJS…
Nodejs的介绍 Node.js的是建立在Chrome的JavaScript的运行时,可方便地构建快速,可扩展的网络应用程序的平台.Node.js使用事件驱动,非阻塞I/O模型,轻量.高效,可以完美地处理时时数据,运行在不同的设备上. 1.1. 谁在用Nodejs? 从Nodejs官方网站的企业登记页(https://github.com/joyent/node/wiki/Projects,-Applications,-and-Companies-Using-Node),包括我们熟知的公司有L…